diff --git a/.idea/Symphony_S_A.iml b/.idea/Symphony_S_A.iml index 6df0dc38500878345f1825b65b584ece7518bea2..06eb85b1dcb8bd150480f4978bf866abfc9dc0cb 100644 --- a/.idea/Symphony_S_A.iml +++ b/.idea/Symphony_S_A.iml @@ -17,10 +17,12 @@ - + + - + + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index e5b7d334ccd2f9737dfce393ed0edc5ae0510b40..df9e1556b821dcd9efefd3ee7e70f453dd9f440d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,51 +2,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,10 +144,10 @@ - @@ -105,6 +176,82 @@ \ No newline at end of file diff --git a/composer.json b/composer.json index 11b6003d4917f4ba53d193fd541461f0481c6385..aeab33c0e358084f75ab61ee7a09a3ae8405c254 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "doctrine/doctrine-cache-bundle": "^1.2", "doctrine/orm": "^2.5", "incenteev/composer-parameter-handler": "^2.0", + "phpunit/phpunit": "^5.7", "sensio/distribution-bundle": "^5.0", "sensio/framework-extra-bundle": "^3.0.2", "symfony/monolog-bundle": "^3.0.2", diff --git a/composer.lock b/composer.lock index 585e361f0bf49fbc4a788345a1276ea72387a2a1..fbc51f295da4a930c387d6e430b63c49a0b55924 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": "7cf8c664281db0ec9962404a01eacb48", + "content-hash": "25ffcc1115c4e8209cb3d2d2b2ad8354", "packages": [ { "name": "doctrine/annotations", @@ -953,146 +953,1300 @@ ], "time": "2016-11-26T00:15:39+00:00" }, + { + "name": "myclabs/deep-copy", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-01-26T22:05:40+00:00" + }, { "name": "paragonie/random_compat", "version": "v2.0.9", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "6968531206671f94377b01dc7888d5d1b858a01b" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "6968531206671f94377b01dc7888d5d1b858a01b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/6968531206671f94377b01dc7888d5d1b858a01b", + "reference": "6968531206671f94377b01dc7888d5d1b858a01b", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "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", + "pseudorandom", + "random" + ], + "time": "2017-03-03T20:43:42+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30T07:12:33+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25T06:54:22+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "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 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.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-03-02T20:05:34+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.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": "2017-03-01T09:12:17+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "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": "2016-10-03T07:40:28+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.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "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-02-27T10:12:30+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.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-03-02T15:22:43+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2016-12-08T20:27:08+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "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": "2016-10-10T12:19:37+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "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": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+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.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "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": "2015-12-08T07:14:41+00:00" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/6968531206671f94377b01dc7888d5d1b858a01b", - "reference": "6968531206671f94377b01dc7888d5d1b858a01b", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "phpunit/phpunit": "^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "files": [ - "lib/random.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "csprng", - "pseudorandom", - "random" + "Xdebug", + "environment", + "hhvm" ], - "time": "2017-03-03T20:43:42+00:00" + "time": "2016-11-26T07:53:53+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "sebastian/exporter", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" + "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-11-19T08:54:04+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": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Common interface for caching libraries", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "cache", - "psr", - "psr-6" + "global state" ], - "time": "2016-08-06T20:24:11+00:00" + "time": "2015-10-12T03:26:01+00:00" }, { - "name": "psr/log", - "version": "1.0.2", + "name": "sebastian/object-enumerator", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" ], - "time": "2016-10-10T12:19:37+00:00" + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.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": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { "name": "sensio/distribution-bundle", @@ -1975,6 +3129,56 @@ "templating" ], "time": "2017-02-27T00:07:03+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" } ], "packages-dev": [ @@ -2101,8 +3305,5 @@ "platform": { "php": ">=5.5.9" }, - "platform-dev": [], - "platform-overrides": { - "php": "5.5.9" - } + "platform-dev": [] } diff --git a/composer.phar b/composer.phar new file mode 100755 index 0000000000000000000000000000000000000000..357793176e3b45854af3c8e201bcd3e1b169bbef Binary files /dev/null and b/composer.phar differ diff --git a/src/AppBundle/Controller/HelloController.php b/src/AppBundle/Controller/HelloController.php new file mode 100644 index 0000000000000000000000000000000000000000..08e839f9318418570101c4fda43208355716678c --- /dev/null +++ b/src/AppBundle/Controller/HelloController.php @@ -0,0 +1,35 @@ +

Hello " + .self::generateRandomName() + ."

"); + } + + + static function generateRandomName() + { + $nouns = ['Circle', 'Cone', 'Cylinder', 'Ellipse', 'Hexagon', + 'Irregular Shape', 'Octagon', 'Oval', 'Parallelogram', 'Pentagon', + 'Pyramid', 'Rectangle', 'Semicircle', 'Sphere', 'Square', 'Star', + 'Trapezoid', 'Triangle', 'Wedge', 'Whorl']; + $adjectives = ['Amusing', 'Athletic', 'Beautiful', 'Brave', 'Careless', + 'Clever', 'Crafty', 'Creative', 'Cute', 'Dependable', 'Energetic', + 'Famous', 'Friendly', 'Graceful', 'Helpful', 'Humble', 'Inconsiderate', + 'Likable', 'Middle Class', 'Outgoing', 'Poor', 'Practical', 'Rich', + 'Sad', 'Skinny', 'Successful', 'Thin', 'Ugly', 'Wealth']; + return $adjectives[array_rand($adjectives)].' '.$nouns[array_rand($nouns)]; + } +} + diff --git a/tests/AppBundle/Controller/HelloControllerTest.php b/tests/AppBundle/Controller/HelloControllerTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e0ccf95ae7a858e36faaf495be3f8ba3880fc8bd --- /dev/null +++ b/tests/AppBundle/Controller/HelloControllerTest.php @@ -0,0 +1,25 @@ +request('GET', '/helloRandom'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertContains('Hello ', $crawler->filter('h1')->text()); + } + + function testRandomNameGenerator(){ + $rdName = HelloController::generateRandomName(); + $this->assertGreaterThan(1, strlen($rdName)); + } + +} + diff --git a/var/cache/dev/annotations.map b/var/cache/dev/annotations.map new file mode 100644 index 0000000000000000000000000000000000000000..ebe5ef70dec53eaf0784740aa10c1ebc1c943eb1 --- /dev/null +++ b/var/cache/dev/annotations.map @@ -0,0 +1,3 @@ + 'Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller', +); \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainer.php b/var/cache/dev/appDevDebugProjectContainer.php new file mode 100644 index 0000000000000000000000000000000000000000..45469eb473823be48ee6d5de315bacc0ff223525 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.php @@ -0,0 +1,4328 @@ +targetDirs[$i] = $dir = dirname($dir); + } + $this->parameters = $this->getDefaultParameters(); + + $this->services = array(); + $this->methodMap = array( + 'annotation_reader' => 'getAnnotationReaderService', + 'annotations.reader' => 'getAnnotations_ReaderService', + 'assets.context' => 'getAssets_ContextService', + 'assets.packages' => 'getAssets_PackagesService', + 'cache.annotations' => 'getCache_AnnotationsService', + 'cache.app' => 'getCache_AppService', + 'cache.default_clearer' => 'getCache_DefaultClearerService', + 'cache.system' => 'getCache_SystemService', + 'cache_clearer' => 'getCacheClearerService', + 'cache_warmer' => 'getCacheWarmerService', + 'config_cache_factory' => 'getConfigCacheFactoryService', + 'controller_name_converter' => 'getControllerNameConverterService', + 'data_collector.dump' => 'getDataCollector_DumpService', + 'data_collector.form' => 'getDataCollector_FormService', + 'data_collector.form.extractor' => 'getDataCollector_Form_ExtractorService', + 'data_collector.request' => 'getDataCollector_RequestService', + 'data_collector.router' => 'getDataCollector_RouterService', + 'debug.argument_resolver' => 'getDebug_ArgumentResolverService', + 'debug.controller_resolver' => 'getDebug_ControllerResolverService', + 'debug.debug_handlers_listener' => 'getDebug_DebugHandlersListenerService', + 'debug.dump_listener' => 'getDebug_DumpListenerService', + 'debug.event_dispatcher' => 'getDebug_EventDispatcherService', + 'debug.file_link_formatter' => 'getDebug_FileLinkFormatterService', + 'debug.log_processor' => 'getDebug_LogProcessorService', + 'debug.security.access.decision_manager' => 'getDebug_Security_Access_DecisionManagerService', + 'debug.stopwatch' => 'getDebug_StopwatchService', + 'doctrine' => 'getDoctrineService', + 'doctrine.dbal.connection_factory' => 'getDoctrine_Dbal_ConnectionFactoryService', + 'doctrine.dbal.default_connection' => 'getDoctrine_Dbal_DefaultConnectionService', + 'doctrine.dbal.logger.profiling.default' => 'getDoctrine_Dbal_Logger_Profiling_DefaultService', + 'doctrine.orm.default_entity_listener_resolver' => 'getDoctrine_Orm_DefaultEntityListenerResolverService', + 'doctrine.orm.default_entity_manager' => 'getDoctrine_Orm_DefaultEntityManagerService', + 'doctrine.orm.default_entity_manager.property_info_extractor' => 'getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService', + 'doctrine.orm.default_listeners.attach_entity_listeners' => 'getDoctrine_Orm_DefaultListeners_AttachEntityListenersService', + 'doctrine.orm.default_manager_configurator' => 'getDoctrine_Orm_DefaultManagerConfiguratorService', + 'doctrine.orm.validator.unique' => 'getDoctrine_Orm_Validator_UniqueService', + 'doctrine.orm.validator_initializer' => 'getDoctrine_Orm_ValidatorInitializerService', + 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService', + 'doctrine_cache.providers.doctrine.orm.default_query_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService', + 'doctrine_cache.providers.doctrine.orm.default_result_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService', + 'file_locator' => 'getFileLocatorService', + 'filesystem' => 'getFilesystemService', + 'form.factory' => 'getForm_FactoryService', + 'form.registry' => 'getForm_RegistryService', + 'form.resolved_type_factory' => 'getForm_ResolvedTypeFactoryService', + 'form.server_params' => 'getForm_ServerParamsService', + 'form.type.birthday' => 'getForm_Type_BirthdayService', + 'form.type.button' => 'getForm_Type_ButtonService', + 'form.type.checkbox' => 'getForm_Type_CheckboxService', + 'form.type.choice' => 'getForm_Type_ChoiceService', + 'form.type.collection' => 'getForm_Type_CollectionService', + 'form.type.country' => 'getForm_Type_CountryService', + 'form.type.currency' => 'getForm_Type_CurrencyService', + 'form.type.date' => 'getForm_Type_DateService', + 'form.type.datetime' => 'getForm_Type_DatetimeService', + 'form.type.email' => 'getForm_Type_EmailService', + 'form.type.entity' => 'getForm_Type_EntityService', + 'form.type.file' => 'getForm_Type_FileService', + 'form.type.form' => 'getForm_Type_FormService', + 'form.type.hidden' => 'getForm_Type_HiddenService', + 'form.type.integer' => 'getForm_Type_IntegerService', + 'form.type.language' => 'getForm_Type_LanguageService', + 'form.type.locale' => 'getForm_Type_LocaleService', + 'form.type.money' => 'getForm_Type_MoneyService', + 'form.type.number' => 'getForm_Type_NumberService', + 'form.type.password' => 'getForm_Type_PasswordService', + 'form.type.percent' => 'getForm_Type_PercentService', + 'form.type.radio' => 'getForm_Type_RadioService', + 'form.type.range' => 'getForm_Type_RangeService', + 'form.type.repeated' => 'getForm_Type_RepeatedService', + 'form.type.reset' => 'getForm_Type_ResetService', + 'form.type.search' => 'getForm_Type_SearchService', + 'form.type.submit' => 'getForm_Type_SubmitService', + 'form.type.text' => 'getForm_Type_TextService', + 'form.type.textarea' => 'getForm_Type_TextareaService', + 'form.type.time' => 'getForm_Type_TimeService', + 'form.type.timezone' => 'getForm_Type_TimezoneService', + 'form.type.url' => 'getForm_Type_UrlService', + 'form.type_extension.csrf' => 'getForm_TypeExtension_CsrfService', + 'form.type_extension.form.data_collector' => 'getForm_TypeExtension_Form_DataCollectorService', + 'form.type_extension.form.http_foundation' => 'getForm_TypeExtension_Form_HttpFoundationService', + 'form.type_extension.form.validator' => 'getForm_TypeExtension_Form_ValidatorService', + 'form.type_extension.repeated.validator' => 'getForm_TypeExtension_Repeated_ValidatorService', + 'form.type_extension.submit.validator' => 'getForm_TypeExtension_Submit_ValidatorService', + 'form.type_extension.upload.validator' => 'getForm_TypeExtension_Upload_ValidatorService', + 'form.type_guesser.doctrine' => 'getForm_TypeGuesser_DoctrineService', + 'form.type_guesser.validator' => 'getForm_TypeGuesser_ValidatorService', + 'fragment.handler' => 'getFragment_HandlerService', + 'fragment.listener' => 'getFragment_ListenerService', + 'fragment.renderer.esi' => 'getFragment_Renderer_EsiService', + 'fragment.renderer.hinclude' => 'getFragment_Renderer_HincludeService', + 'fragment.renderer.inline' => 'getFragment_Renderer_InlineService', + 'fragment.renderer.ssi' => 'getFragment_Renderer_SsiService', + 'http_kernel' => 'getHttpKernelService', + 'kernel' => 'getKernelService', + 'kernel.class_cache.cache_warmer' => 'getKernel_ClassCache_CacheWarmerService', + 'locale_listener' => 'getLocaleListenerService', + 'logger' => 'getLoggerService', + 'monolog.activation_strategy.not_found' => 'getMonolog_ActivationStrategy_NotFoundService', + 'monolog.handler.console' => 'getMonolog_Handler_ConsoleService', + 'monolog.handler.fingers_crossed.error_level_activation_strategy' => 'getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService', + 'monolog.handler.main' => 'getMonolog_Handler_MainService', + 'monolog.handler.null_internal' => 'getMonolog_Handler_NullInternalService', + 'monolog.logger.cache' => 'getMonolog_Logger_CacheService', + 'monolog.logger.doctrine' => 'getMonolog_Logger_DoctrineService', + 'monolog.logger.event' => 'getMonolog_Logger_EventService', + 'monolog.logger.php' => 'getMonolog_Logger_PhpService', + 'monolog.logger.profiler' => 'getMonolog_Logger_ProfilerService', + 'monolog.logger.request' => 'getMonolog_Logger_RequestService', + 'monolog.logger.router' => 'getMonolog_Logger_RouterService', + 'monolog.logger.security' => 'getMonolog_Logger_SecurityService', + 'monolog.logger.templating' => 'getMonolog_Logger_TemplatingService', + 'monolog.logger.translation' => 'getMonolog_Logger_TranslationService', + 'monolog.processor.psr_log_message' => 'getMonolog_Processor_PsrLogMessageService', + 'profiler' => 'getProfilerService', + 'profiler_listener' => 'getProfilerListenerService', + 'property_accessor' => 'getPropertyAccessorService', + 'request_stack' => 'getRequestStackService', + 'response_listener' => 'getResponseListenerService', + 'router' => 'getRouterService', + 'router.request_context' => 'getRouter_RequestContextService', + 'router_listener' => 'getRouterListenerService', + 'routing.loader' => 'getRouting_LoaderService', + 'security.authentication.guard_handler' => 'getSecurity_Authentication_GuardHandlerService', + 'security.authentication.manager' => 'getSecurity_Authentication_ManagerService', + 'security.authentication.trust_resolver' => 'getSecurity_Authentication_TrustResolverService', + 'security.authentication_utils' => 'getSecurity_AuthenticationUtilsService', + 'security.authorization_checker' => 'getSecurity_AuthorizationCheckerService', + 'security.csrf.token_manager' => 'getSecurity_Csrf_TokenManagerService', + 'security.encoder_factory' => 'getSecurity_EncoderFactoryService', + 'security.firewall' => 'getSecurity_FirewallService', + 'security.firewall.map' => 'getSecurity_Firewall_MapService', + 'security.firewall.map.context.dev' => 'getSecurity_Firewall_Map_Context_DevService', + 'security.firewall.map.context.main' => 'getSecurity_Firewall_Map_Context_MainService', + 'security.logout_url_generator' => 'getSecurity_LogoutUrlGeneratorService', + 'security.password_encoder' => 'getSecurity_PasswordEncoderService', + 'security.rememberme.response_listener' => 'getSecurity_Rememberme_ResponseListenerService', + 'security.role_hierarchy' => 'getSecurity_RoleHierarchyService', + 'security.token_storage' => 'getSecurity_TokenStorageService', + 'security.validator.user_password' => 'getSecurity_Validator_UserPasswordService', + 'sensio_distribution.security_checker' => 'getSensioDistribution_SecurityCheckerService', + 'sensio_distribution.security_checker.command' => 'getSensioDistribution_SecurityChecker_CommandService', + 'sensio_framework_extra.cache.listener' => 'getSensioFrameworkExtra_Cache_ListenerService', + 'sensio_framework_extra.controller.listener' => 'getSensioFrameworkExtra_Controller_ListenerService', + 'sensio_framework_extra.converter.datetime' => 'getSensioFrameworkExtra_Converter_DatetimeService', + 'sensio_framework_extra.converter.doctrine.orm' => 'getSensioFrameworkExtra_Converter_Doctrine_OrmService', + 'sensio_framework_extra.converter.listener' => 'getSensioFrameworkExtra_Converter_ListenerService', + 'sensio_framework_extra.converter.manager' => 'getSensioFrameworkExtra_Converter_ManagerService', + 'sensio_framework_extra.security.listener' => 'getSensioFrameworkExtra_Security_ListenerService', + 'sensio_framework_extra.view.guesser' => 'getSensioFrameworkExtra_View_GuesserService', + 'sensio_framework_extra.view.listener' => 'getSensioFrameworkExtra_View_ListenerService', + 'service_container' => 'getServiceContainerService', + 'session' => 'getSessionService', + 'session.handler' => 'getSession_HandlerService', + 'session.save_listener' => 'getSession_SaveListenerService', + 'session.storage.filesystem' => 'getSession_Storage_FilesystemService', + 'session.storage.metadata_bag' => 'getSession_Storage_MetadataBagService', + 'session.storage.native' => 'getSession_Storage_NativeService', + 'session.storage.php_bridge' => 'getSession_Storage_PhpBridgeService', + 'session_listener' => 'getSessionListenerService', + 'streamed_response_listener' => 'getStreamedResponseListenerService', + 'swiftmailer.email_sender.listener' => 'getSwiftmailer_EmailSender_ListenerService', + 'swiftmailer.mailer.default' => 'getSwiftmailer_Mailer_DefaultService', + 'swiftmailer.mailer.default.plugin.messagelogger' => 'getSwiftmailer_Mailer_Default_Plugin_MessageloggerService', + 'swiftmailer.mailer.default.spool' => 'getSwiftmailer_Mailer_Default_SpoolService', + 'swiftmailer.mailer.default.transport' => 'getSwiftmailer_Mailer_Default_TransportService', + 'swiftmailer.mailer.default.transport.eventdispatcher' => 'getSwiftmailer_Mailer_Default_Transport_EventdispatcherService', + 'swiftmailer.mailer.default.transport.real' => 'getSwiftmailer_Mailer_Default_Transport_RealService', + 'templating' => 'getTemplatingService', + 'templating.filename_parser' => 'getTemplating_FilenameParserService', + 'templating.helper.logout_url' => 'getTemplating_Helper_LogoutUrlService', + 'templating.helper.security' => 'getTemplating_Helper_SecurityService', + 'templating.loader' => 'getTemplating_LoaderService', + 'templating.locator' => 'getTemplating_LocatorService', + 'templating.name_parser' => 'getTemplating_NameParserService', + 'translation.dumper.csv' => 'getTranslation_Dumper_CsvService', + 'translation.dumper.ini' => 'getTranslation_Dumper_IniService', + 'translation.dumper.json' => 'getTranslation_Dumper_JsonService', + 'translation.dumper.mo' => 'getTranslation_Dumper_MoService', + 'translation.dumper.php' => 'getTranslation_Dumper_PhpService', + 'translation.dumper.po' => 'getTranslation_Dumper_PoService', + 'translation.dumper.qt' => 'getTranslation_Dumper_QtService', + 'translation.dumper.res' => 'getTranslation_Dumper_ResService', + 'translation.dumper.xliff' => 'getTranslation_Dumper_XliffService', + 'translation.dumper.yml' => 'getTranslation_Dumper_YmlService', + 'translation.extractor' => 'getTranslation_ExtractorService', + 'translation.extractor.php' => 'getTranslation_Extractor_PhpService', + 'translation.loader' => 'getTranslation_LoaderService', + 'translation.loader.csv' => 'getTranslation_Loader_CsvService', + 'translation.loader.dat' => 'getTranslation_Loader_DatService', + 'translation.loader.ini' => 'getTranslation_Loader_IniService', + 'translation.loader.json' => 'getTranslation_Loader_JsonService', + 'translation.loader.mo' => 'getTranslation_Loader_MoService', + 'translation.loader.php' => 'getTranslation_Loader_PhpService', + 'translation.loader.po' => 'getTranslation_Loader_PoService', + 'translation.loader.qt' => 'getTranslation_Loader_QtService', + 'translation.loader.res' => 'getTranslation_Loader_ResService', + 'translation.loader.xliff' => 'getTranslation_Loader_XliffService', + 'translation.loader.yml' => 'getTranslation_Loader_YmlService', + 'translation.writer' => 'getTranslation_WriterService', + 'translator' => 'getTranslatorService', + 'translator.default' => 'getTranslator_DefaultService', + 'translator.selector' => 'getTranslator_SelectorService', + 'translator_listener' => 'getTranslatorListenerService', + 'twig' => 'getTwigService', + 'twig.controller.exception' => 'getTwig_Controller_ExceptionService', + 'twig.controller.preview_error' => 'getTwig_Controller_PreviewErrorService', + 'twig.exception_listener' => 'getTwig_ExceptionListenerService', + 'twig.form.renderer' => 'getTwig_Form_RendererService', + 'twig.loader' => 'getTwig_LoaderService', + 'twig.profile' => 'getTwig_ProfileService', + 'twig.runtime.httpkernel' => 'getTwig_Runtime_HttpkernelService', + 'twig.translation.extractor' => 'getTwig_Translation_ExtractorService', + 'uri_signer' => 'getUriSignerService', + 'validate_request_listener' => 'getValidateRequestListenerService', + 'validator' => 'getValidatorService', + 'validator.builder' => 'getValidator_BuilderService', + 'validator.email' => 'getValidator_EmailService', + 'validator.expression' => 'getValidator_ExpressionService', + 'var_dumper.cli_dumper' => 'getVarDumper_CliDumperService', + 'var_dumper.cloner' => 'getVarDumper_ClonerService', + 'web_profiler.controller.exception' => 'getWebProfiler_Controller_ExceptionService', + 'web_profiler.controller.profiler' => 'getWebProfiler_Controller_ProfilerService', + 'web_profiler.controller.router' => 'getWebProfiler_Controller_RouterService', + 'web_profiler.csp.handler' => 'getWebProfiler_Csp_HandlerService', + 'web_profiler.debug_toolbar' => 'getWebProfiler_DebugToolbarService', + ); + $this->privates = array( + 'annotations.reader' => true, + 'cache.annotations' => true, + 'controller_name_converter' => true, + 'debug.file_link_formatter' => true, + 'debug.log_processor' => true, + 'debug.security.access.decision_manager' => true, + 'doctrine.dbal.logger.profiling.default' => true, + 'form.server_params' => true, + 'monolog.processor.psr_log_message' => true, + 'router.request_context' => true, + 'security.authentication.manager' => true, + 'security.authentication.trust_resolver' => true, + 'security.firewall.map' => true, + 'security.logout_url_generator' => true, + 'security.role_hierarchy' => true, + 'session.storage.metadata_bag' => true, + 'swiftmailer.mailer.default.transport.eventdispatcher' => true, + 'templating.locator' => true, + 'translator.selector' => true, + 'web_profiler.csp.handler' => true, + ); + $this->aliases = array( + 'cache.app_clearer' => 'cache.default_clearer', + 'console.command.sensiolabs_security_command_securitycheckercommand' => 'sensio_distribution.security_checker.command', + 'database_connection' => 'doctrine.dbal.default_connection', + 'doctrine.orm.default_metadata_cache' => 'doctrine_cache.providers.doctrine.orm.default_metadata_cache', + 'doctrine.orm.default_query_cache' => 'doctrine_cache.providers.doctrine.orm.default_query_cache', + 'doctrine.orm.default_result_cache' => 'doctrine_cache.providers.doctrine.orm.default_result_cache', + 'doctrine.orm.entity_manager' => 'doctrine.orm.default_entity_manager', + 'event_dispatcher' => 'debug.event_dispatcher', + 'mailer' => 'swiftmailer.mailer.default', + 'session.storage' => 'session.storage.native', + 'swiftmailer.mailer' => 'swiftmailer.mailer.default', + 'swiftmailer.plugin.messagelogger' => 'swiftmailer.mailer.default.plugin.messagelogger', + 'swiftmailer.spool' => 'swiftmailer.mailer.default.spool', + 'swiftmailer.transport' => 'swiftmailer.mailer.default.transport', + 'swiftmailer.transport.real' => 'swiftmailer.mailer.default.transport.real', + ); + } + + /** + * {@inheritdoc} + */ + public function compile() + { + throw new LogicException('You cannot compile a dumped frozen container.'); + } + + /** + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + + /** + * Gets the 'annotation_reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Annotations\CachedReader A Doctrine\Common\Annotations\CachedReader instance + */ + protected function getAnnotationReaderService() + { + return $this->services['annotation_reader'] = new \Doctrine\Common\Annotations\CachedReader(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, new \Symfony\Component\Cache\DoctrineProvider(\Symfony\Component\Cache\Adapter\PhpArrayAdapter::create((__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'})), true); + } + + /** + * Gets the 'assets.context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Context\RequestStackContext A Symfony\Component\Asset\Context\RequestStackContext instance + */ + protected function getAssets_ContextService() + { + return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext($this->get('request_stack')); + } + + /** + * Gets the 'assets.packages' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Packages A Symfony\Component\Asset\Packages instance + */ + protected function getAssets_PackagesService() + { + return $this->services['assets.packages'] = new \Symfony\Component\Asset\Packages(new \Symfony\Component\Asset\PathPackage('', new \Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy(), $this->get('assets.context')), array()); + } + + /** + * Gets the 'cache.app' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\FilesystemAdapter A Symfony\Component\Cache\Adapter\FilesystemAdapter instance + */ + protected function getCache_AppService() + { + $this->services['cache.app'] = $instance = new \Symfony\Component\Cache\Adapter\FilesystemAdapter('2P0pTS1Lqn', 0, (__DIR__.'/pools')); + + if ($this->has('monolog.logger.cache')) { + $instance->setLogger($this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + return $instance; + } + + /** + * Gets the 'cache.default_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer A Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer instance + */ + protected function getCache_DefaultClearerService() + { + $this->services['cache.default_clearer'] = $instance = new \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer(); + + $instance->addPool($this->get('cache.app')); + $instance->addPool($this->get('cache.system')); + $instance->addPool(${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'cache.system' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_SystemService() + { + return $this->services['cache.system'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('bF8tWu38tg', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'cache_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer A Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer instance + */ + protected function getCacheClearerService() + { + return $this->services['cache_clearer'] = new \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer(array(0 => $this->get('cache.default_clearer'))); + } + + /** + * Gets the 'cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate A Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate instance + */ + protected function getCacheWarmerService() + { + $a = $this->get('kernel'); + $b = $this->get('templating.filename_parser'); + + $c = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder($a, $b, ($this->targetDirs[3].'/app/Resources')); + + return $this->services['cache_warmer'] = new \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate(array(0 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer($c, ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}), 1 => $this->get('kernel.class_cache.cache_warmer'), 2 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer($this->get('translator')), 3 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer($this->get('validator.builder'), (__DIR__.'/validation.php'), \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('iTCx+5mhKU', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE))), 4 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer($this->get('router')), 5 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, (__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}), 6 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer($this, $c, array()), 7 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer($this->get('twig'), new \Symfony\Bundle\TwigBundle\TemplateIterator($a, ($this->targetDirs[3].'/app'), array())), 8 => new \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer($this->get('doctrine')))); + } + + /** + * Gets the 'config_cache_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Config\ResourceCheckerConfigCacheFactory A Symfony\Component\Config\ResourceCheckerConfigCacheFactory instance + */ + protected function getConfigCacheFactoryService() + { + return $this->services['config_cache_factory'] = new \Symfony\Component\Config\ResourceCheckerConfigCacheFactory(array(0 => new \Symfony\Component\Config\Resource\SelfCheckingResourceChecker())); + } + + /** + * Gets the 'data_collector.dump' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector A Symfony\Component\HttpKernel\DataCollector\DumpDataCollector instance + */ + protected function getDataCollector_DumpService() + { + return $this->services['data_collector.dump'] = new \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector($this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, 'UTF-8', $this->get('request_stack'), NULL); + } + + /** + * Gets the 'data_collector.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataCollector A Symfony\Component\Form\Extension\DataCollector\FormDataCollector instance + */ + protected function getDataCollector_FormService() + { + return $this->services['data_collector.form'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataCollector($this->get('data_collector.form.extractor'), false); + } + + /** + * Gets the 'data_collector.form.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor A Symfony\Component\Form\Extension\DataCollector\FormDataExtractor instance + */ + protected function getDataCollector_Form_ExtractorService() + { + return $this->services['data_collector.form.extractor'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor(); + } + + /** + * Gets the 'data_collector.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector instance + */ + protected function getDataCollector_RequestService() + { + return $this->services['data_collector.request'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector(); + } + + /** + * Gets the 'data_collector.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector instance + */ + protected function getDataCollector_RouterService() + { + return $this->services['data_collector.router'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector(); + } + + /** + * Gets the 'debug.argument_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver A Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver instance + */ + protected function getDebug_ArgumentResolverService() + { + return $this->services['debug.argument_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver(new \Symfony\Component\HttpKernel\Controller\ArgumentResolver(new \Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory(), array(0 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver(), 1 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver(), 2 => new \Symfony\Bundle\SecurityBundle\SecurityUserValueResolver($this->get('security.token_storage')), 3 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver(), 4 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver())), $this->get('debug.stopwatch')); + } + + /** + * Gets the 'debug.controller_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver A Symfony\Component\HttpKernel\Controller\TraceableControllerResolver instance + */ + protected function getDebug_ControllerResolverService() + { + return $this->services['debug.controller_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver(new \Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver($this, ${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)), $this->get('debug.stopwatch'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'debug.debug_handlers_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener A Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instance + */ + protected function getDebug_DebugHandlersListenerService() + { + return $this->services['debug.debug_handlers_listener'] = new \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener(NULL, $this->get('monolog.logger.php', ContainerInterface::NULL_ON_INVALID_REFERENCE), -1, -1, true, ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, true); + } + + /** + * Gets the 'debug.dump_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DumpListener A Symfony\Component\HttpKernel\EventListener\DumpListener instance + */ + protected function getDebug_DumpListenerService() + { + return $this->services['debug.dump_listener'] = new \Symfony\Component\HttpKernel\EventListener\DumpListener($this->get('var_dumper.cloner'), $this->get('var_dumper.cli_dumper')); + } + + /** + * Gets the 'debug.event_dispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher A Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher instance + */ + protected function getDebug_EventDispatcherService() + { + $this->services['debug.event_dispatcher'] = $instance = new \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher(new \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher($this), $this->get('debug.stopwatch'), $this->get('monolog.logger.event', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->addListenerService('kernel.controller', array(0 => 'data_collector.router', 1 => 'onKernelController'), 0); + $instance->addSubscriberService('response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener'); + $instance->addSubscriberService('streamed_response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener'); + $instance->addSubscriberService('locale_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener'); + $instance->addSubscriberService('validate_request_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener'); + $instance->addSubscriberService('translator_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\TranslatorListener'); + $instance->addSubscriberService('session_listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener'); + $instance->addSubscriberService('session.save_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\SaveSessionListener'); + $instance->addSubscriberService('fragment.listener', 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener'); + $instance->addSubscriberService('profiler_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener'); + $instance->addSubscriberService('data_collector.request', 'Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RequestDataCollector'); + $instance->addSubscriberService('debug.debug_handlers_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener'); + $instance->addSubscriberService('router_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener'); + $instance->addSubscriberService('security.firewall', 'Symfony\\Component\\Security\\Http\\Firewall'); + $instance->addSubscriberService('security.rememberme.response_listener', 'Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener'); + $instance->addSubscriberService('twig.exception_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener'); + $instance->addSubscriberService('monolog.handler.console', 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler'); + $instance->addSubscriberService('swiftmailer.email_sender.listener', 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener'); + $instance->addSubscriberService('sensio_framework_extra.controller.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener'); + $instance->addSubscriberService('sensio_framework_extra.converter.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener'); + $instance->addSubscriberService('sensio_framework_extra.view.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener'); + $instance->addSubscriberService('sensio_framework_extra.cache.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener'); + $instance->addSubscriberService('sensio_framework_extra.security.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener'); + $instance->addSubscriberService('debug.dump_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener'); + $instance->addSubscriberService('web_profiler.debug_toolbar', 'Symfony\\Bundle\\WebProfilerBundle\\EventListener\\WebDebugToolbarListener'); + + return $instance; + } + + /** + * Gets the 'debug.stopwatch' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Stopwatch\Stopwatch A Symfony\Component\Stopwatch\Stopwatch instance + */ + protected function getDebug_StopwatchService() + { + return $this->services['debug.stopwatch'] = new \Symfony\Component\Stopwatch\Stopwatch(); + } + + /** + * Gets the 'doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Registry A Doctrine\Bundle\DoctrineBundle\Registry instance + */ + protected function getDoctrineService() + { + return $this->services['doctrine'] = new \Doctrine\Bundle\DoctrineBundle\Registry($this, array('default' => 'doctrine.dbal.default_connection'), array('default' => 'doctrine.orm.default_entity_manager'), 'default', 'default'); + } + + /** + * Gets the 'doctrine.dbal.connection_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ConnectionFactory A Doctrine\Bundle\DoctrineBundle\ConnectionFactory instance + */ + protected function getDoctrine_Dbal_ConnectionFactoryService() + { + return $this->services['doctrine.dbal.connection_factory'] = new \Doctrine\Bundle\DoctrineBundle\ConnectionFactory(array()); + } + + /** + * Gets the 'doctrine.dbal.default_connection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\DBAL\Connection A Doctrine\DBAL\Connection instance + */ + protected function getDoctrine_Dbal_DefaultConnectionService() + { + $a = new \Doctrine\DBAL\Logging\LoggerChain(); + $a->addLogger(new \Symfony\Bridge\Doctrine\Logger\DbalLogger($this->get('monolog.logger.doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $a->addLogger(${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $b = new \Doctrine\DBAL\Configuration(); + $b->setSQLLogger($a); + + $c = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this); + $c->addEventListener(array(0 => 'loadClassMetadata'), $this->get('doctrine.orm.default_listeners.attach_entity_listeners')); + + return $this->services['doctrine.dbal.default_connection'] = $this->get('doctrine.dbal.connection_factory')->createConnection(array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => NULL, 'dbname' => 'symfony', 'user' => 'root', 'password' => NULL, 'charset' => 'UTF8', 'driverOptions' => array(), 'defaultTableOptions' => array()), $b, $c, array()); + } + + /** + * Gets the 'doctrine.orm.default_entity_listener_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver A Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver instance + */ + protected function getDoctrine_Orm_DefaultEntityListenerResolverService() + { + return $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver($this); + } + + /** + * Gets the 'doctrine.orm.default_entity_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @param bool $lazyLoad whether to try lazy-loading the service with a proxy + * + * @return \Doctrine\ORM\EntityManager A Doctrine\ORM\EntityManager instance + */ + protected function getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true) + { + $a = new \Doctrine\ORM\Configuration(); + $a->setEntityNamespaces(array()); + $a->setMetadataCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_metadata_cache')); + $a->setQueryCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_query_cache')); + $a->setResultCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_result_cache')); + $a->setMetadataDriverImpl(new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()); + $a->setProxyDir((__DIR__.'/doctrine/orm/Proxies')); + $a->setProxyNamespace('Proxies'); + $a->setAutoGenerateProxyClasses(true); + $a->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory'); + $a->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository'); + $a->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy()); + $a->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy()); + $a->setEntityListenerResolver($this->get('doctrine.orm.default_entity_listener_resolver')); + + $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($this->get('doctrine.dbal.default_connection'), $a); + + $this->get('doctrine.orm.default_manager_configurator')->configure($instance); + + return $instance; + } + + /** + * Gets the 'doctrine.orm.default_entity_manager.property_info_extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor A Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor instance + */ + protected function getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService() + { + return $this->services['doctrine.orm.default_entity_manager.property_info_extractor'] = new \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor($this->get('doctrine.orm.default_entity_manager')->getMetadataFactory()); + } + + /** + * Gets the 'doctrine.orm.default_listeners.attach_entity_listeners' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\ORM\Tools\AttachEntityListenersListener A Doctrine\ORM\Tools\AttachEntityListenersListener instance + */ + protected function getDoctrine_Orm_DefaultListeners_AttachEntityListenersService() + { + return $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] = new \Doctrine\ORM\Tools\AttachEntityListenersListener(); + } + + /** + * Gets the 'doctrine.orm.default_manager_configurator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator A Doctrine\Bundle\DoctrineBundle\ManagerConfigurator instance + */ + protected function getDoctrine_Orm_DefaultManagerConfiguratorService() + { + return $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array()); + } + + /** + * Gets the 'doctrine.orm.validator.unique' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator A Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator instance + */ + protected function getDoctrine_Orm_Validator_UniqueService() + { + return $this->services['doctrine.orm.validator.unique'] = new \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator($this->get('doctrine')); + } + + /** + * Gets the 'doctrine.orm.validator_initializer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer A Symfony\Bridge\Doctrine\Validator\DoctrineInitializer instance + */ + protected function getDoctrine_Orm_ValidatorInitializerService() + { + return $this->services['doctrine.orm.validator_initializer'] = new \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer($this->get('doctrine')); + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_query_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_result_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb'); + + return $instance; + } + + /** + * Gets the 'file_locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Config\FileLocator A Symfony\Component\HttpKernel\Config\FileLocator instance + */ + protected function getFileLocatorService() + { + return $this->services['file_locator'] = new \Symfony\Component\HttpKernel\Config\FileLocator($this->get('kernel'), ($this->targetDirs[3].'/app/Resources')); + } + + /** + * Gets the 'filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Filesystem\Filesystem A Symfony\Component\Filesystem\Filesystem instance + */ + protected function getFilesystemService() + { + return $this->services['filesystem'] = new \Symfony\Component\Filesystem\Filesystem(); + } + + /** + * Gets the 'form.factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormFactory A Symfony\Component\Form\FormFactory instance + */ + protected function getForm_FactoryService() + { + return $this->services['form.factory'] = new \Symfony\Component\Form\FormFactory($this->get('form.registry'), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.registry' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormRegistry A Symfony\Component\Form\FormRegistry instance + */ + protected function getForm_RegistryService() + { + return $this->services['form.registry'] = new \Symfony\Component\Form\FormRegistry(array(0 => new \Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension($this, array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => 'form.type.form', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => 'form.type.choice', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType' => 'form.type.entity'), array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => array(0 => 'form.type_extension.form.http_foundation', 1 => 'form.type_extension.form.validator', 2 => 'form.type_extension.upload.validator', 3 => 'form.type_extension.csrf', 4 => 'form.type_extension.form.data_collector'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => array(0 => 'form.type_extension.repeated.validator'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => array(0 => 'form.type_extension.submit.validator')), array(0 => 'form.type_guesser.validator', 1 => 'form.type_guesser.doctrine'))), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.resolved_type_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy A Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy instance + */ + protected function getForm_ResolvedTypeFactoryService() + { + return $this->services['form.resolved_type_factory'] = new \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy(new \Symfony\Component\Form\ResolvedFormTypeFactory(), $this->get('data_collector.form')); + } + + /** + * Gets the 'form.type.birthday' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\BirthdayType A Symfony\Component\Form\Extension\Core\Type\BirthdayType instance + * + * @deprecated The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_BirthdayService() + { + @trigger_error('The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.birthday'] = new \Symfony\Component\Form\Extension\Core\Type\BirthdayType(); + } + + /** + * Gets the 'form.type.button' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ButtonType A Symfony\Component\Form\Extension\Core\Type\ButtonType instance + * + * @deprecated The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ButtonService() + { + @trigger_error('The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.button'] = new \Symfony\Component\Form\Extension\Core\Type\ButtonType(); + } + + /** + * Gets the 'form.type.checkbox' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CheckboxType A Symfony\Component\Form\Extension\Core\Type\CheckboxType instance + * + * @deprecated The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CheckboxService() + { + @trigger_error('The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.checkbox'] = new \Symfony\Component\Form\Extension\Core\Type\CheckboxType(); + } + + /** + * Gets the 'form.type.choice' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ChoiceType A Symfony\Component\Form\Extension\Core\Type\ChoiceType instance + */ + protected function getForm_Type_ChoiceService() + { + return $this->services['form.type.choice'] = new \Symfony\Component\Form\Extension\Core\Type\ChoiceType(new \Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator(new \Symfony\Component\Form\ChoiceList\Factory\PropertyAccessDecorator(new \Symfony\Component\Form\ChoiceList\Factory\DefaultChoiceListFactory(), $this->get('property_accessor')))); + } + + /** + * Gets the 'form.type.collection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CollectionType A Symfony\Component\Form\Extension\Core\Type\CollectionType instance + * + * @deprecated The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CollectionService() + { + @trigger_error('The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.collection'] = new \Symfony\Component\Form\Extension\Core\Type\CollectionType(); + } + + /** + * Gets the 'form.type.country' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CountryType A Symfony\Component\Form\Extension\Core\Type\CountryType instance + * + * @deprecated The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CountryService() + { + @trigger_error('The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.country'] = new \Symfony\Component\Form\Extension\Core\Type\CountryType(); + } + + /** + * Gets the 'form.type.currency' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CurrencyType A Symfony\Component\Form\Extension\Core\Type\CurrencyType instance + * + * @deprecated The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CurrencyService() + { + @trigger_error('The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.currency'] = new \Symfony\Component\Form\Extension\Core\Type\CurrencyType(); + } + + /** + * Gets the 'form.type.date' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateType A Symfony\Component\Form\Extension\Core\Type\DateType instance + * + * @deprecated The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DateService() + { + @trigger_error('The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.date'] = new \Symfony\Component\Form\Extension\Core\Type\DateType(); + } + + /** + * Gets the 'form.type.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateTimeType A Symfony\Component\Form\Extension\Core\Type\DateTimeType instance + * + * @deprecated The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DatetimeService() + { + @trigger_error('The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.datetime'] = new \Symfony\Component\Form\Extension\Core\Type\DateTimeType(); + } + + /** + * Gets the 'form.type.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\EmailType A Symfony\Component\Form\Extension\Core\Type\EmailType instance + * + * @deprecated The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_EmailService() + { + @trigger_error('The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.email'] = new \Symfony\Component\Form\Extension\Core\Type\EmailType(); + } + + /** + * Gets the 'form.type.entity' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\Type\EntityType A Symfony\Bridge\Doctrine\Form\Type\EntityType instance + */ + protected function getForm_Type_EntityService() + { + return $this->services['form.type.entity'] = new \Symfony\Bridge\Doctrine\Form\Type\EntityType($this->get('doctrine')); + } + + /** + * Gets the 'form.type.file' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FileType A Symfony\Component\Form\Extension\Core\Type\FileType instance + * + * @deprecated The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_FileService() + { + @trigger_error('The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.file'] = new \Symfony\Component\Form\Extension\Core\Type\FileType(); + } + + /** + * Gets the 'form.type.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FormType A Symfony\Component\Form\Extension\Core\Type\FormType instance + */ + protected function getForm_Type_FormService() + { + return $this->services['form.type.form'] = new \Symfony\Component\Form\Extension\Core\Type\FormType($this->get('property_accessor')); + } + + /** + * Gets the 'form.type.hidden' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\HiddenType A Symfony\Component\Form\Extension\Core\Type\HiddenType instance + * + * @deprecated The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_HiddenService() + { + @trigger_error('The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.hidden'] = new \Symfony\Component\Form\Extension\Core\Type\HiddenType(); + } + + /** + * Gets the 'form.type.integer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\IntegerType A Symfony\Component\Form\Extension\Core\Type\IntegerType instance + * + * @deprecated The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_IntegerService() + { + @trigger_error('The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.integer'] = new \Symfony\Component\Form\Extension\Core\Type\IntegerType(); + } + + /** + * Gets the 'form.type.language' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LanguageType A Symfony\Component\Form\Extension\Core\Type\LanguageType instance + * + * @deprecated The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LanguageService() + { + @trigger_error('The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.language'] = new \Symfony\Component\Form\Extension\Core\Type\LanguageType(); + } + + /** + * Gets the 'form.type.locale' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LocaleType A Symfony\Component\Form\Extension\Core\Type\LocaleType instance + * + * @deprecated The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LocaleService() + { + @trigger_error('The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.locale'] = new \Symfony\Component\Form\Extension\Core\Type\LocaleType(); + } + + /** + * Gets the 'form.type.money' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\MoneyType A Symfony\Component\Form\Extension\Core\Type\MoneyType instance + * + * @deprecated The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_MoneyService() + { + @trigger_error('The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.money'] = new \Symfony\Component\Form\Extension\Core\Type\MoneyType(); + } + + /** + * Gets the 'form.type.number' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\NumberType A Symfony\Component\Form\Extension\Core\Type\NumberType instance + * + * @deprecated The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_NumberService() + { + @trigger_error('The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.number'] = new \Symfony\Component\Form\Extension\Core\Type\NumberType(); + } + + /** + * Gets the 'form.type.password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PasswordType A Symfony\Component\Form\Extension\Core\Type\PasswordType instance + * + * @deprecated The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PasswordService() + { + @trigger_error('The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.password'] = new \Symfony\Component\Form\Extension\Core\Type\PasswordType(); + } + + /** + * Gets the 'form.type.percent' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PercentType A Symfony\Component\Form\Extension\Core\Type\PercentType instance + * + * @deprecated The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PercentService() + { + @trigger_error('The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.percent'] = new \Symfony\Component\Form\Extension\Core\Type\PercentType(); + } + + /** + * Gets the 'form.type.radio' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RadioType A Symfony\Component\Form\Extension\Core\Type\RadioType instance + * + * @deprecated The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RadioService() + { + @trigger_error('The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.radio'] = new \Symfony\Component\Form\Extension\Core\Type\RadioType(); + } + + /** + * Gets the 'form.type.range' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RangeType A Symfony\Component\Form\Extension\Core\Type\RangeType instance + * + * @deprecated The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RangeService() + { + @trigger_error('The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.range'] = new \Symfony\Component\Form\Extension\Core\Type\RangeType(); + } + + /** + * Gets the 'form.type.repeated' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RepeatedType A Symfony\Component\Form\Extension\Core\Type\RepeatedType instance + * + * @deprecated The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RepeatedService() + { + @trigger_error('The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.repeated'] = new \Symfony\Component\Form\Extension\Core\Type\RepeatedType(); + } + + /** + * Gets the 'form.type.reset' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ResetType A Symfony\Component\Form\Extension\Core\Type\ResetType instance + * + * @deprecated The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ResetService() + { + @trigger_error('The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.reset'] = new \Symfony\Component\Form\Extension\Core\Type\ResetType(); + } + + /** + * Gets the 'form.type.search' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SearchType A Symfony\Component\Form\Extension\Core\Type\SearchType instance + * + * @deprecated The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SearchService() + { + @trigger_error('The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.search'] = new \Symfony\Component\Form\Extension\Core\Type\SearchType(); + } + + /** + * Gets the 'form.type.submit' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SubmitType A Symfony\Component\Form\Extension\Core\Type\SubmitType instance + * + * @deprecated The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SubmitService() + { + @trigger_error('The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.submit'] = new \Symfony\Component\Form\Extension\Core\Type\SubmitType(); + } + + /** + * Gets the 'form.type.text' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextType A Symfony\Component\Form\Extension\Core\Type\TextType instance + * + * @deprecated The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextService() + { + @trigger_error('The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.text'] = new \Symfony\Component\Form\Extension\Core\Type\TextType(); + } + + /** + * Gets the 'form.type.textarea' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextareaType A Symfony\Component\Form\Extension\Core\Type\TextareaType instance + * + * @deprecated The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextareaService() + { + @trigger_error('The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.textarea'] = new \Symfony\Component\Form\Extension\Core\Type\TextareaType(); + } + + /** + * Gets the 'form.type.time' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimeType A Symfony\Component\Form\Extension\Core\Type\TimeType instance + * + * @deprecated The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimeService() + { + @trigger_error('The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.time'] = new \Symfony\Component\Form\Extension\Core\Type\TimeType(); + } + + /** + * Gets the 'form.type.timezone' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimezoneType A Symfony\Component\Form\Extension\Core\Type\TimezoneType instance + * + * @deprecated The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimezoneService() + { + @trigger_error('The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.timezone'] = new \Symfony\Component\Form\Extension\Core\Type\TimezoneType(); + } + + /** + * Gets the 'form.type.url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\UrlType A Symfony\Component\Form\Extension\Core\Type\UrlType instance + * + * @deprecated The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_UrlService() + { + @trigger_error('The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.url'] = new \Symfony\Component\Form\Extension\Core\Type\UrlType(); + } + + /** + * Gets the 'form.type_extension.csrf' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension A Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension instance + */ + protected function getForm_TypeExtension_CsrfService() + { + return $this->services['form.type_extension.csrf'] = new \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension($this->get('security.csrf.token_manager'), true, '_token', $this->get('translator.default'), 'validators', ${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'}); + } + + /** + * Gets the 'form.type_extension.form.data_collector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension A Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension instance + */ + protected function getForm_TypeExtension_Form_DataCollectorService() + { + return $this->services['form.type_extension.form.data_collector'] = new \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension($this->get('data_collector.form')); + } + + /** + * Gets the 'form.type_extension.form.http_foundation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension A Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension instance + */ + protected function getForm_TypeExtension_Form_HttpFoundationService() + { + return $this->services['form.type_extension.form.http_foundation'] = new \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension(new \Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler(${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'})); + } + + /** + * Gets the 'form.type_extension.form.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Form_ValidatorService() + { + return $this->services['form.type_extension.form.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension($this->get('validator')); + } + + /** + * Gets the 'form.type_extension.repeated.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Repeated_ValidatorService() + { + return $this->services['form.type_extension.repeated.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.submit.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Submit_ValidatorService() + { + return $this->services['form.type_extension.submit.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.upload.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension instance + */ + protected function getForm_TypeExtension_Upload_ValidatorService() + { + return $this->services['form.type_extension.upload.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension($this->get('translator'), 'validators'); + } + + /** + * Gets the 'form.type_guesser.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser A Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser instance + */ + protected function getForm_TypeGuesser_DoctrineService() + { + return $this->services['form.type_guesser.doctrine'] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser($this->get('doctrine')); + } + + /** + * Gets the 'form.type_guesser.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser A Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser instance + */ + protected function getForm_TypeGuesser_ValidatorService() + { + return $this->services['form.type_guesser.validator'] = new \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser($this->get('validator')); + } + + /** + * Gets the 'fragment.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler A Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler instance + */ + protected function getFragment_HandlerService() + { + $this->services['fragment.handler'] = $instance = new \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler($this, $this->get('request_stack'), true); + + $instance->addRendererService('inline', 'fragment.renderer.inline'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('esi', 'fragment.renderer.esi'); + $instance->addRendererService('ssi', 'fragment.renderer.ssi'); + + return $instance; + } + + /** + * Gets the 'fragment.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\FragmentListener A Symfony\Component\HttpKernel\EventListener\FragmentListener instance + */ + protected function getFragment_ListenerService() + { + return $this->services['fragment.listener'] = new \Symfony\Component\HttpKernel\EventListener\FragmentListener($this->get('uri_signer'), '/_fragment'); + } + + /** + * Gets the 'fragment.renderer.esi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer instance + */ + protected function getFragment_Renderer_EsiService() + { + $this->services['fragment.renderer.esi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.hinclude' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer A Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer instance + */ + protected function getFragment_Renderer_HincludeService() + { + $this->services['fragment.renderer.hinclude'] = $instance = new \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer($this->get('twig'), $this->get('uri_signer'), NULL); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.inline' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer A Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer instance + */ + protected function getFragment_Renderer_InlineService() + { + $this->services['fragment.renderer.inline'] = $instance = new \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer($this->get('http_kernel'), $this->get('debug.event_dispatcher')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.ssi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer instance + */ + protected function getFragment_Renderer_SsiService() + { + $this->services['fragment.renderer.ssi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'http_kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance + */ + protected function getHttpKernelService() + { + return $this->services['http_kernel'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('debug.event_dispatcher'), $this->get('debug.controller_resolver'), $this->get('request_stack'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getKernelService() + { + throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'kernel.class_cache.cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer A Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer instance + */ + protected function getKernel_ClassCache_CacheWarmerService() + { + return $this->services['kernel.class_cache.cache_warmer'] = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer(array(0 => 'Symfony\\Component\\HttpFoundation\\ParameterBag', 1 => 'Symfony\\Component\\HttpFoundation\\HeaderBag', 2 => 'Symfony\\Component\\HttpFoundation\\FileBag', 3 => 'Symfony\\Component\\HttpFoundation\\ServerBag', 4 => 'Symfony\\Component\\HttpFoundation\\Request', 5 => 'Symfony\\Component\\HttpKernel\\Kernel', 6 => 'Symfony\\Component\\ClassLoader\\ClassCollectionLoader', 7 => 'Symfony\\Component\\ClassLoader\\ApcClassLoader')); + } + + /** + * Gets the 'locale_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\LocaleListener A Symfony\Component\HttpKernel\EventListener\LocaleListener instance + */ + protected function getLocaleListenerService() + { + return $this->services['locale_listener'] = new \Symfony\Component\HttpKernel\EventListener\LocaleListener($this->get('request_stack'), 'en', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'logger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getLoggerService() + { + $this->services['logger'] = $instance = new \Symfony\Bridge\Monolog\Logger('app'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->useMicrosecondTimestamps(true); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.activation_strategy.not_found' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy A Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy instance + */ + protected function getMonolog_ActivationStrategy_NotFoundService() + { + return $this->services['monolog.activation_strategy.not_found'] = new \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.console' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\ConsoleHandler A Symfony\Bridge\Monolog\Handler\ConsoleHandler instance + */ + protected function getMonolog_Handler_ConsoleService() + { + $this->services['monolog.handler.console'] = $instance = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler(NULL, true, array()); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.fingers_crossed.error_level_activation_strategy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy A Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy instance + */ + protected function getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService() + { + return $this->services['monolog.handler.fingers_crossed.error_level_activation_strategy'] = new \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance + */ + protected function getMonolog_Handler_MainService() + { + $this->services['monolog.handler.main'] = $instance = new \Monolog\Handler\StreamHandler(($this->targetDirs[2].'/logs/dev.log'), 100, true, NULL); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.null_internal' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\NullHandler A Monolog\Handler\NullHandler instance + */ + protected function getMonolog_Handler_NullInternalService() + { + return $this->services['monolog.handler.null_internal'] = new \Monolog\Handler\NullHandler(); + } + + /** + * Gets the 'monolog.logger.cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_CacheService() + { + $this->services['monolog.logger.cache'] = $instance = new \Symfony\Bridge\Monolog\Logger('cache'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_DoctrineService() + { + $this->services['monolog.logger.doctrine'] = $instance = new \Symfony\Bridge\Monolog\Logger('doctrine'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.event' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_EventService() + { + $this->services['monolog.logger.event'] = $instance = new \Symfony\Bridge\Monolog\Logger('event'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.null_internal')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_PhpService() + { + $this->services['monolog.logger.php'] = $instance = new \Symfony\Bridge\Monolog\Logger('php'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_ProfilerService() + { + $this->services['monolog.logger.profiler'] = $instance = new \Symfony\Bridge\Monolog\Logger('profiler'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RequestService() + { + $this->services['monolog.logger.request'] = $instance = new \Symfony\Bridge\Monolog\Logger('request'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RouterService() + { + $this->services['monolog.logger.router'] = $instance = new \Symfony\Bridge\Monolog\Logger('router'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_SecurityService() + { + $this->services['monolog.logger.security'] = $instance = new \Symfony\Bridge\Monolog\Logger('security'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TemplatingService() + { + $this->services['monolog.logger.templating'] = $instance = new \Symfony\Bridge\Monolog\Logger('templating'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.translation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TranslationService() + { + $this->services['monolog.logger.translation'] = $instance = new \Symfony\Bridge\Monolog\Logger('translation'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Profiler\Profiler A Symfony\Component\HttpKernel\Profiler\Profiler instance + */ + protected function getProfilerService() + { + $a = $this->get('monolog.logger.profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $c = new \Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector($this->get('doctrine')); + $c->addLogger('default', ${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $d = new \Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector(); + if ($this->has('kernel')) { + $d->setKernel($b); + } + + $this->services['profiler'] = $instance = new \Symfony\Component\HttpKernel\Profiler\Profiler(new \Symfony\Component\HttpKernel\Profiler\FileProfilerStorage(('file:'.__DIR__.'/profiler')), $a); + + $instance->add($this->get('data_collector.request')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\TimeDataCollector($b, $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector()); + $instance->add($this->get('data_collector.form')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector($a)); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\EventDataCollector($this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add($this->get('data_collector.router')); + $instance->add(new \Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, ${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, ${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'})); + $instance->add(new \Symfony\Bridge\Twig\DataCollector\TwigDataCollector($this->get('twig.profile'))); + $instance->add($c); + $instance->add(new \Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector($this)); + $instance->add($this->get('data_collector.dump')); + $instance->add($d); + + return $instance; + } + + /** + * Gets the 'profiler_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ProfilerListener A Symfony\Component\HttpKernel\EventListener\ProfilerListener instance + */ + protected function getProfilerListenerService() + { + return $this->services['profiler_listener'] = new \Symfony\Component\HttpKernel\EventListener\ProfilerListener($this->get('profiler'), $this->get('request_stack'), NULL, false, false); + } + + /** + * Gets the 'property_accessor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\PropertyAccess\PropertyAccessor A Symfony\Component\PropertyAccess\PropertyAccessor instance + */ + protected function getPropertyAccessorService() + { + return $this->services['property_accessor'] = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, false, new \Symfony\Component\Cache\Adapter\ArrayAdapter(0, false)); + } + + /** + * Gets the 'request_stack' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance + */ + protected function getRequestStackService() + { + return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack(); + } + + /** + * Gets the 'response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ResponseListener A Symfony\Component\HttpKernel\EventListener\ResponseListener instance + */ + protected function getResponseListenerService() + { + return $this->services['response_listener'] = new \Symfony\Component\HttpKernel\EventListener\ResponseListener('UTF-8'); + } + + /** + * Gets the 'router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\Router A Symfony\Bundle\FrameworkBundle\Routing\Router instance + */ + protected function getRouterService() + { + $this->services['router'] = $instance = new \Symfony\Bundle\FrameworkBundle\Routing\Router($this, ($this->targetDirs[3].'/app/config/routing_dev.yml'), array('cache_dir' => __DIR__, 'debug' => true, 'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', 'generator_cache_class' => 'appDevDebugProjectContainerUrlGenerator', 'matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', 'matcher_cache_class' => 'appDevDebugProjectContainerUrlMatcher', 'strict_requirements' => true), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'router_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance + */ + protected function getRouterListenerService() + { + return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('request_stack'), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'routing.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader A Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader instance + */ + protected function getRouting_LoaderService() + { + $a = $this->get('file_locator'); + $b = $this->get('annotation_reader'); + + $c = new \Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader($b); + + $d = new \Symfony\Component\Config\Loader\LoaderResolver(); + $d->addLoader(new \Symfony\Component\Routing\Loader\XmlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\YamlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\PhpFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DirectoryLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader($this)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationDirectoryLoader($a, $c)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationFileLoader($a, $c)); + $d->addLoader($c); + + return $this->services['routing.loader'] = new \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader(${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $d); + } + + /** + * Gets the 'security.authentication.guard_handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Guard\GuardAuthenticatorHandler A Symfony\Component\Security\Guard\GuardAuthenticatorHandler instance + */ + protected function getSecurity_Authentication_GuardHandlerService() + { + return $this->services['security.authentication.guard_handler'] = new \Symfony\Component\Security\Guard\GuardAuthenticatorHandler($this->get('security.token_storage'), $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.authentication_utils' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Authentication\AuthenticationUtils A Symfony\Component\Security\Http\Authentication\AuthenticationUtils instance + */ + protected function getSecurity_AuthenticationUtilsService() + { + return $this->services['security.authentication_utils'] = new \Symfony\Component\Security\Http\Authentication\AuthenticationUtils($this->get('request_stack')); + } + + /** + * Gets the 'security.authorization_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authorization\AuthorizationChecker A Symfony\Component\Security\Core\Authorization\AuthorizationChecker instance + */ + protected function getSecurity_AuthorizationCheckerService() + { + return $this->services['security.authorization_checker'] = new \Symfony\Component\Security\Core\Authorization\AuthorizationChecker($this->get('security.token_storage'), ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, false); + } + + /** + * Gets the 'security.csrf.token_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Csrf\CsrfTokenManager A Symfony\Component\Security\Csrf\CsrfTokenManager instance + */ + protected function getSecurity_Csrf_TokenManagerService() + { + return $this->services['security.csrf.token_manager'] = new \Symfony\Component\Security\Csrf\CsrfTokenManager(new \Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator(), new \Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage($this->get('session'))); + } + + /** + * Gets the 'security.encoder_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\EncoderFactory A Symfony\Component\Security\Core\Encoder\EncoderFactory instance + */ + protected function getSecurity_EncoderFactoryService() + { + return $this->services['security.encoder_factory'] = new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array()); + } + + /** + * Gets the 'security.firewall' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Firewall A Symfony\Component\Security\Http\Firewall instance + */ + protected function getSecurity_FirewallService() + { + return $this->services['security.firewall'] = new \Symfony\Component\Security\Http\Firewall(${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'}, $this->get('debug.event_dispatcher')); + } + + /** + * Gets the 'security.firewall.map.context.dev' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_DevService() + { + return $this->services['security.firewall.map.context.dev'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(), NULL, new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('dev', 'security.user_checker', 'security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d', false, '', '', '', '', '', '', array())); + } + + /** + * Gets the 'security.firewall.map.context.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_MainService() + { + $a = $this->get('monolog.logger.security', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('security.token_storage'); + $c = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + $d = ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}; + $e = $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $f = new \Symfony\Component\Security\Http\AccessMap(); + + return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($f, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE), $c), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '58c46f45a05e13.86720536', $a, $d), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, $f, $d)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $c, new \Symfony\Component\Security\Http\HttpUtils($e, $e), 'main', NULL, NULL, NULL, $a, false), new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('main', 'security.user_checker', NULL, true, false, 'security.user.provider.concrete.in_memory', 'main', NULL, NULL, NULL, array(0 => 'anonymous'))); + } + + /** + * Gets the 'security.password_encoder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder A Symfony\Component\Security\Core\Encoder\UserPasswordEncoder instance + */ + protected function getSecurity_PasswordEncoderService() + { + return $this->services['security.password_encoder'] = new \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder($this->get('security.encoder_factory')); + } + + /** + * Gets the 'security.rememberme.response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\RememberMe\ResponseListener A Symfony\Component\Security\Http\RememberMe\ResponseListener instance + */ + protected function getSecurity_Rememberme_ResponseListenerService() + { + return $this->services['security.rememberme.response_listener'] = new \Symfony\Component\Security\Http\RememberMe\ResponseListener(); + } + + /** + * Gets the 'security.token_storage' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage A Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage instance + */ + protected function getSecurity_TokenStorageService() + { + return $this->services['security.token_storage'] = new \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage(); + } + + /** + * Gets the 'security.validator.user_password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator A Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator instance + */ + protected function getSecurity_Validator_UserPasswordService() + { + return $this->services['security.validator.user_password'] = new \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator($this->get('security.token_storage'), $this->get('security.encoder_factory')); + } + + /** + * Gets the 'sensio_distribution.security_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\SecurityChecker A SensioLabs\Security\SecurityChecker instance + */ + protected function getSensioDistribution_SecurityCheckerService() + { + return $this->services['sensio_distribution.security_checker'] = new \SensioLabs\Security\SecurityChecker(); + } + + /** + * Gets the 'sensio_distribution.security_checker.command' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\Command\SecurityCheckerCommand A SensioLabs\Security\Command\SecurityCheckerCommand instance + */ + protected function getSensioDistribution_SecurityChecker_CommandService() + { + return $this->services['sensio_distribution.security_checker.command'] = new \SensioLabs\Security\Command\SecurityCheckerCommand($this->get('sensio_distribution.security_checker')); + } + + /** + * Gets the 'sensio_framework_extra.cache.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener instance + */ + protected function getSensioFrameworkExtra_Cache_ListenerService() + { + return $this->services['sensio_framework_extra.cache.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener(); + } + + /** + * Gets the 'sensio_framework_extra.controller.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener instance + */ + protected function getSensioFrameworkExtra_Controller_ListenerService() + { + return $this->services['sensio_framework_extra.controller.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener($this->get('annotation_reader')); + } + + /** + * Gets the 'sensio_framework_extra.converter.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_DatetimeService() + { + return $this->services['sensio_framework_extra.converter.datetime'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter(); + } + + /** + * Gets the 'sensio_framework_extra.converter.doctrine.orm' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_Doctrine_OrmService() + { + return $this->services['sensio_framework_extra.converter.doctrine.orm'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter($this->get('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.converter.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener instance + */ + protected function getSensioFrameworkExtra_Converter_ListenerService() + { + return $this->services['sensio_framework_extra.converter.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener($this->get('sensio_framework_extra.converter.manager'), true); + } + + /** + * Gets the 'sensio_framework_extra.converter.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager instance + */ + protected function getSensioFrameworkExtra_Converter_ManagerService() + { + $this->services['sensio_framework_extra.converter.manager'] = $instance = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager(); + + $instance->add($this->get('sensio_framework_extra.converter.doctrine.orm'), 0, 'doctrine.orm'); + $instance->add($this->get('sensio_framework_extra.converter.datetime'), 0, 'datetime'); + + return $instance; + } + + /** + * Gets the 'sensio_framework_extra.security.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener instance + */ + protected function getSensioFrameworkExtra_Security_ListenerService() + { + return $this->services['sensio_framework_extra.security.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener(NULL, new \Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage(), ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.view.guesser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser A Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser instance + */ + protected function getSensioFrameworkExtra_View_GuesserService() + { + return $this->services['sensio_framework_extra.view.guesser'] = new \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser($this->get('kernel')); + } + + /** + * Gets the 'sensio_framework_extra.view.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener instance + */ + protected function getSensioFrameworkExtra_View_ListenerService() + { + return $this->services['sensio_framework_extra.view.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener($this); + } + + /** + * Gets the 'service_container' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getServiceContainerService() + { + throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'session' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Session A Symfony\Component\HttpFoundation\Session\Session instance + */ + protected function getSessionService() + { + return $this->services['session'] = new \Symfony\Component\HttpFoundation\Session\Session($this->get('session.storage.native'), new \Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag(), new \Symfony\Component\HttpFoundation\Session\Flash\FlashBag()); + } + + /** + * Gets the 'session.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler A Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler instance + */ + protected function getSession_HandlerService() + { + return $this->services['session.handler'] = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler(($this->targetDirs[3].'/app/../var/sessions/dev')); + } + + /** + * Gets the 'session.save_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\SaveSessionListener A Symfony\Component\HttpKernel\EventListener\SaveSessionListener instance + */ + protected function getSession_SaveListenerService() + { + return $this->services['session.save_listener'] = new \Symfony\Component\HttpKernel\EventListener\SaveSessionListener(); + } + + /** + * Gets the 'session.storage.filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage instance + */ + protected function getSession_Storage_FilesystemService() + { + return $this->services['session.storage.filesystem'] = new \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage((__DIR__.'/sessions'), 'MOCKSESSID', ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.native' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage instance + */ + protected function getSession_Storage_NativeService() + { + return $this->services['session.storage.native'] = new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage(array('cookie_httponly' => true, 'gc_probability' => 1), $this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.php_bridge' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage instance + */ + protected function getSession_Storage_PhpBridgeService() + { + return $this->services['session.storage.php_bridge'] = new \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage($this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener A Symfony\Bundle\FrameworkBundle\EventListener\SessionListener instance + */ + protected function getSessionListenerService() + { + return $this->services['session_listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener($this); + } + + /** + * Gets the 'streamed_response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener A Symfony\Component\HttpKernel\EventListener\StreamedResponseListener instance + */ + protected function getStreamedResponseListenerService() + { + return $this->services['streamed_response_listener'] = new \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener(); + } + + /** + * Gets the 'swiftmailer.email_sender.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener A Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener instance + */ + protected function getSwiftmailer_EmailSender_ListenerService() + { + return $this->services['swiftmailer.email_sender.listener'] = new \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener($this, $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'swiftmailer.mailer.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Mailer A Swift_Mailer instance + */ + protected function getSwiftmailer_Mailer_DefaultService() + { + return $this->services['swiftmailer.mailer.default'] = new \Swift_Mailer($this->get('swiftmailer.mailer.default.transport')); + } + + /** + * Gets the 'swiftmailer.mailer.default.plugin.messagelogger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Plugins_MessageLogger A Swift_Plugins_MessageLogger instance + */ + protected function getSwiftmailer_Mailer_Default_Plugin_MessageloggerService() + { + return $this->services['swiftmailer.mailer.default.plugin.messagelogger'] = new \Swift_Plugins_MessageLogger(); + } + + /** + * Gets the 'swiftmailer.mailer.default.spool' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_MemorySpool A Swift_MemorySpool instance + */ + protected function getSwiftmailer_Mailer_Default_SpoolService() + { + return $this->services['swiftmailer.mailer.default.spool'] = new \Swift_MemorySpool(); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_SpoolTransport A Swift_Transport_SpoolTransport instance + */ + protected function getSwiftmailer_Mailer_Default_TransportService() + { + $this->services['swiftmailer.mailer.default.transport'] = $instance = new \Swift_Transport_SpoolTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}, $this->get('swiftmailer.mailer.default.spool')); + + $instance->registerPlugin($this->get('swiftmailer.mailer.default.plugin.messagelogger')); + + return $instance; + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.real' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_EsmtpTransport A Swift_Transport_EsmtpTransport instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_RealService() + { + $a = new \Swift_Transport_Esmtp_AuthHandler(array(0 => new \Swift_Transport_Esmtp_Auth_CramMd5Authenticator(), 1 => new \Swift_Transport_Esmtp_Auth_LoginAuthenticator(), 2 => new \Swift_Transport_Esmtp_Auth_PlainAuthenticator())); + $a->setUsername(NULL); + $a->setPassword(NULL); + $a->setAuthMode(NULL); + + $this->services['swiftmailer.mailer.default.transport.real'] = $instance = new \Swift_Transport_EsmtpTransport(new \Swift_Transport_StreamBuffer(new \Swift_StreamFilters_StringReplacementFilterFactory()), array(0 => $a), ${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}); + + $instance->setHost('127.0.0.1'); + $instance->setPort(25); + $instance->setEncryption(NULL); + $instance->setTimeout(30); + $instance->setSourceIp(NULL); + (new \Symfony\Bundle\SwiftmailerBundle\DependencyInjection\SmtpTransportConfigurator(NULL, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}))->configure($instance); + + return $instance; + } + + /** + * Gets the 'templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\TwigEngine A Symfony\Bundle\TwigBundle\TwigEngine instance + */ + protected function getTemplatingService() + { + return $this->services['templating'] = new \Symfony\Bundle\TwigBundle\TwigEngine($this->get('twig'), $this->get('templating.name_parser'), ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.filename_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser instance + */ + protected function getTemplating_FilenameParserService() + { + return $this->services['templating.filename_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser(); + } + + /** + * Gets the 'templating.helper.logout_url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper instance + */ + protected function getTemplating_Helper_LogoutUrlService() + { + return $this->services['templating.helper.logout_url'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.helper.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper instance + */ + protected function getTemplating_Helper_SecurityService() + { + return $this->services['templating.helper.security'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'templating.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader A Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader instance + */ + protected function getTemplating_LoaderService() + { + return $this->services['templating.loader'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.name_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser instance + */ + protected function getTemplating_NameParserService() + { + return $this->services['templating.name_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser($this->get('kernel')); + } + + /** + * Gets the 'translation.dumper.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\CsvFileDumper A Symfony\Component\Translation\Dumper\CsvFileDumper instance + */ + protected function getTranslation_Dumper_CsvService() + { + return $this->services['translation.dumper.csv'] = new \Symfony\Component\Translation\Dumper\CsvFileDumper(); + } + + /** + * Gets the 'translation.dumper.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IniFileDumper A Symfony\Component\Translation\Dumper\IniFileDumper instance + */ + protected function getTranslation_Dumper_IniService() + { + return $this->services['translation.dumper.ini'] = new \Symfony\Component\Translation\Dumper\IniFileDumper(); + } + + /** + * Gets the 'translation.dumper.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\JsonFileDumper A Symfony\Component\Translation\Dumper\JsonFileDumper instance + */ + protected function getTranslation_Dumper_JsonService() + { + return $this->services['translation.dumper.json'] = new \Symfony\Component\Translation\Dumper\JsonFileDumper(); + } + + /** + * Gets the 'translation.dumper.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\MoFileDumper A Symfony\Component\Translation\Dumper\MoFileDumper instance + */ + protected function getTranslation_Dumper_MoService() + { + return $this->services['translation.dumper.mo'] = new \Symfony\Component\Translation\Dumper\MoFileDumper(); + } + + /** + * Gets the 'translation.dumper.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PhpFileDumper A Symfony\Component\Translation\Dumper\PhpFileDumper instance + */ + protected function getTranslation_Dumper_PhpService() + { + return $this->services['translation.dumper.php'] = new \Symfony\Component\Translation\Dumper\PhpFileDumper(); + } + + /** + * Gets the 'translation.dumper.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PoFileDumper A Symfony\Component\Translation\Dumper\PoFileDumper instance + */ + protected function getTranslation_Dumper_PoService() + { + return $this->services['translation.dumper.po'] = new \Symfony\Component\Translation\Dumper\PoFileDumper(); + } + + /** + * Gets the 'translation.dumper.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\QtFileDumper A Symfony\Component\Translation\Dumper\QtFileDumper instance + */ + protected function getTranslation_Dumper_QtService() + { + return $this->services['translation.dumper.qt'] = new \Symfony\Component\Translation\Dumper\QtFileDumper(); + } + + /** + * Gets the 'translation.dumper.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IcuResFileDumper A Symfony\Component\Translation\Dumper\IcuResFileDumper instance + */ + protected function getTranslation_Dumper_ResService() + { + return $this->services['translation.dumper.res'] = new \Symfony\Component\Translation\Dumper\IcuResFileDumper(); + } + + /** + * Gets the 'translation.dumper.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\XliffFileDumper A Symfony\Component\Translation\Dumper\XliffFileDumper instance + */ + protected function getTranslation_Dumper_XliffService() + { + return $this->services['translation.dumper.xliff'] = new \Symfony\Component\Translation\Dumper\XliffFileDumper(); + } + + /** + * Gets the 'translation.dumper.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\YamlFileDumper A Symfony\Component\Translation\Dumper\YamlFileDumper instance + */ + protected function getTranslation_Dumper_YmlService() + { + return $this->services['translation.dumper.yml'] = new \Symfony\Component\Translation\Dumper\YamlFileDumper(); + } + + /** + * Gets the 'translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Extractor\ChainExtractor A Symfony\Component\Translation\Extractor\ChainExtractor instance + */ + protected function getTranslation_ExtractorService() + { + $this->services['translation.extractor'] = $instance = new \Symfony\Component\Translation\Extractor\ChainExtractor(); + + $instance->addExtractor('php', $this->get('translation.extractor.php')); + $instance->addExtractor('twig', $this->get('twig.translation.extractor')); + + return $instance; + } + + /** + * Gets the 'translation.extractor.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor A Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor instance + */ + protected function getTranslation_Extractor_PhpService() + { + return $this->services['translation.extractor.php'] = new \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor(); + } + + /** + * Gets the 'translation.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader A Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader instance + */ + protected function getTranslation_LoaderService() + { + $a = $this->get('translation.loader.xliff'); + + $this->services['translation.loader'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader(); + + $instance->addLoader('php', $this->get('translation.loader.php')); + $instance->addLoader('yml', $this->get('translation.loader.yml')); + $instance->addLoader('xlf', $a); + $instance->addLoader('xliff', $a); + $instance->addLoader('po', $this->get('translation.loader.po')); + $instance->addLoader('mo', $this->get('translation.loader.mo')); + $instance->addLoader('ts', $this->get('translation.loader.qt')); + $instance->addLoader('csv', $this->get('translation.loader.csv')); + $instance->addLoader('res', $this->get('translation.loader.res')); + $instance->addLoader('dat', $this->get('translation.loader.dat')); + $instance->addLoader('ini', $this->get('translation.loader.ini')); + $instance->addLoader('json', $this->get('translation.loader.json')); + + return $instance; + } + + /** + * Gets the 'translation.loader.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\CsvFileLoader A Symfony\Component\Translation\Loader\CsvFileLoader instance + */ + protected function getTranslation_Loader_CsvService() + { + return $this->services['translation.loader.csv'] = new \Symfony\Component\Translation\Loader\CsvFileLoader(); + } + + /** + * Gets the 'translation.loader.dat' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuDatFileLoader A Symfony\Component\Translation\Loader\IcuDatFileLoader instance + */ + protected function getTranslation_Loader_DatService() + { + return $this->services['translation.loader.dat'] = new \Symfony\Component\Translation\Loader\IcuDatFileLoader(); + } + + /** + * Gets the 'translation.loader.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IniFileLoader A Symfony\Component\Translation\Loader\IniFileLoader instance + */ + protected function getTranslation_Loader_IniService() + { + return $this->services['translation.loader.ini'] = new \Symfony\Component\Translation\Loader\IniFileLoader(); + } + + /** + * Gets the 'translation.loader.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\JsonFileLoader A Symfony\Component\Translation\Loader\JsonFileLoader instance + */ + protected function getTranslation_Loader_JsonService() + { + return $this->services['translation.loader.json'] = new \Symfony\Component\Translation\Loader\JsonFileLoader(); + } + + /** + * Gets the 'translation.loader.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\MoFileLoader A Symfony\Component\Translation\Loader\MoFileLoader instance + */ + protected function getTranslation_Loader_MoService() + { + return $this->services['translation.loader.mo'] = new \Symfony\Component\Translation\Loader\MoFileLoader(); + } + + /** + * Gets the 'translation.loader.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PhpFileLoader A Symfony\Component\Translation\Loader\PhpFileLoader instance + */ + protected function getTranslation_Loader_PhpService() + { + return $this->services['translation.loader.php'] = new \Symfony\Component\Translation\Loader\PhpFileLoader(); + } + + /** + * Gets the 'translation.loader.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PoFileLoader A Symfony\Component\Translation\Loader\PoFileLoader instance + */ + protected function getTranslation_Loader_PoService() + { + return $this->services['translation.loader.po'] = new \Symfony\Component\Translation\Loader\PoFileLoader(); + } + + /** + * Gets the 'translation.loader.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\QtFileLoader A Symfony\Component\Translation\Loader\QtFileLoader instance + */ + protected function getTranslation_Loader_QtService() + { + return $this->services['translation.loader.qt'] = new \Symfony\Component\Translation\Loader\QtFileLoader(); + } + + /** + * Gets the 'translation.loader.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuResFileLoader A Symfony\Component\Translation\Loader\IcuResFileLoader instance + */ + protected function getTranslation_Loader_ResService() + { + return $this->services['translation.loader.res'] = new \Symfony\Component\Translation\Loader\IcuResFileLoader(); + } + + /** + * Gets the 'translation.loader.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\XliffFileLoader A Symfony\Component\Translation\Loader\XliffFileLoader instance + */ + protected function getTranslation_Loader_XliffService() + { + return $this->services['translation.loader.xliff'] = new \Symfony\Component\Translation\Loader\XliffFileLoader(); + } + + /** + * Gets the 'translation.loader.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\YamlFileLoader A Symfony\Component\Translation\Loader\YamlFileLoader instance + */ + protected function getTranslation_Loader_YmlService() + { + return $this->services['translation.loader.yml'] = new \Symfony\Component\Translation\Loader\YamlFileLoader(); + } + + /** + * Gets the 'translation.writer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Writer\TranslationWriter A Symfony\Component\Translation\Writer\TranslationWriter instance + */ + protected function getTranslation_WriterService() + { + $this->services['translation.writer'] = $instance = new \Symfony\Component\Translation\Writer\TranslationWriter(); + + $instance->addDumper('php', $this->get('translation.dumper.php')); + $instance->addDumper('xlf', $this->get('translation.dumper.xliff')); + $instance->addDumper('po', $this->get('translation.dumper.po')); + $instance->addDumper('mo', $this->get('translation.dumper.mo')); + $instance->addDumper('yml', $this->get('translation.dumper.yml')); + $instance->addDumper('ts', $this->get('translation.dumper.qt')); + $instance->addDumper('csv', $this->get('translation.dumper.csv')); + $instance->addDumper('ini', $this->get('translation.dumper.ini')); + $instance->addDumper('json', $this->get('translation.dumper.json')); + $instance->addDumper('res', $this->get('translation.dumper.res')); + + return $instance; + } + + /** + * Gets the 'translator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\IdentityTranslator A Symfony\Component\Translation\IdentityTranslator instance + */ + protected function getTranslatorService() + { + return $this->services['translator'] = new \Symfony\Component\Translation\IdentityTranslator(${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}); + } + + /** + * Gets the 'translator.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\Translator A Symfony\Bundle\FrameworkBundle\Translation\Translator instance + */ + protected function getTranslator_DefaultService() + { + $this->services['translator.default'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\Translator($this, ${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}, array('translation.loader.php' => array(0 => 'php'), 'translation.loader.yml' => array(0 => 'yml'), 'translation.loader.xliff' => array(0 => 'xlf', 1 => 'xliff'), 'translation.loader.po' => array(0 => 'po'), 'translation.loader.mo' => array(0 => 'mo'), 'translation.loader.qt' => array(0 => 'ts'), 'translation.loader.csv' => array(0 => 'csv'), 'translation.loader.res' => array(0 => 'res'), 'translation.loader.dat' => array(0 => 'dat'), 'translation.loader.ini' => array(0 => 'ini'), 'translation.loader.json' => array(0 => 'json')), array('cache_dir' => (__DIR__.'/translations'), 'debug' => true), array()); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'translator_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\TranslatorListener A Symfony\Component\HttpKernel\EventListener\TranslatorListener instance + */ + protected function getTranslatorListenerService() + { + return $this->services['translator_listener'] = new \Symfony\Component\HttpKernel\EventListener\TranslatorListener($this->get('translator'), $this->get('request_stack')); + } + + /** + * Gets the 'twig' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Environment A Twig_Environment instance + */ + protected function getTwigService() + { + $a = $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}; + $c = $this->get('request_stack'); + + $d = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 0); + if ($this->has('debug.file_link_formatter')) { + $d->setDisplayOptions(array('fileLinkFormat' => $b)); + } + + $e = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 1); + $e->setDisplayOptions(array('maxStringLength' => 4096, 'fileLinkFormat' => $b)); + + $f = new \Symfony\Bridge\Twig\AppVariable(); + $f->setEnvironment('dev'); + $f->setDebug(true); + if ($this->has('security.token_storage')) { + $f->setTokenStorage($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + if ($this->has('request_stack')) { + $f->setRequestStack($c); + } + + $this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), array('debug' => true, 'strict_variables' => true, 'exception_controller' => 'twig.controller.exception:showAction', 'form_themes' => array(0 => 'form_div_layout.html.twig'), 'autoescape' => 'name', 'cache' => (__DIR__.'/twig'), 'charset' => 'UTF-8', 'paths' => array(), 'date' => array('format' => 'F j, Y H:i', 'interval_format' => '%d days', 'timezone' => NULL), 'number_format' => array('decimals' => 0, 'decimal_point' => '.', 'thousands_separator' => ','))); + + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\LogoutUrlExtension(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'})); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\SecurityExtension($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ProfilerExtension($this->get('twig.profile'), $a)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\TranslationExtension($this->get('translator'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\AssetExtension($this->get('assets.packages'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\CodeExtension($b, ($this->targetDirs[3].'/app'), 'UTF-8')); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\RoutingExtension($this->get('router'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\StopwatchExtension($a, true)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ExpressionExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpKernelExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpFoundationExtension($c, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'})); + $instance->addExtension(new \Twig_Extension_Debug()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(array(0 => $this, 1 => 'twig.form.renderer'))); + $instance->addExtension(new \Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\DumpExtension($this->get('var_dumper.cloner'), $d)); + $instance->addExtension(new \Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension($e)); + $instance->addGlobal('app', $f); + $instance->addRuntimeLoader(new \Symfony\Bundle\TwigBundle\ContainerAwareRuntimeLoader($this, array('Symfony\\Bridge\\Twig\\Extension\\HttpKernelRuntime' => 'twig.runtime.httpkernel', 'Symfony\\Bridge\\Twig\\Form\\TwigRenderer' => 'twig.form.renderer'), $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + (new \Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator('F j, Y H:i', '%d days', NULL, 0, '.', ','))->configure($instance); + + return $instance; + } + + /** + * Gets the 'twig.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\ExceptionController A Symfony\Bundle\TwigBundle\Controller\ExceptionController instance + */ + protected function getTwig_Controller_ExceptionService() + { + return $this->services['twig.controller.exception'] = new \Symfony\Bundle\TwigBundle\Controller\ExceptionController($this->get('twig'), true); + } + + /** + * Gets the 'twig.controller.preview_error' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController A Symfony\Bundle\TwigBundle\Controller\PreviewErrorController instance + */ + protected function getTwig_Controller_PreviewErrorService() + { + return $this->services['twig.controller.preview_error'] = new \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController($this->get('http_kernel'), 'twig.controller.exception:showAction'); + } + + /** + * Gets the 'twig.exception_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ExceptionListener A Symfony\Component\HttpKernel\EventListener\ExceptionListener instance + */ + protected function getTwig_ExceptionListenerService() + { + return $this->services['twig.exception_listener'] = new \Symfony\Component\HttpKernel\EventListener\ExceptionListener('twig.controller.exception:showAction', $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.form.renderer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Form\TwigRenderer A Symfony\Bridge\Twig\Form\TwigRenderer instance + */ + protected function getTwig_Form_RendererService() + { + return $this->services['twig.form.renderer'] = new \Symfony\Bridge\Twig\Form\TwigRenderer(new \Symfony\Bridge\Twig\Form\TwigRendererEngine(array(0 => 'form_div_layout.html.twig'), $this->get('twig')), $this->get('security.csrf.token_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader A Symfony\Bundle\TwigBundle\Loader\FilesystemLoader instance + */ + protected function getTwig_LoaderService() + { + $this->services['twig.loader'] = $instance = new \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}, $this->get('templating.name_parser'), $this->targetDirs[3]); + + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views'), 'Framework'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views'), 'Security'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views'), 'Twig'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle/Resources/views'), 'Swiftmailer'); + $instance->addPath(($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle/Resources/views'), 'Doctrine'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views'), 'Debug'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views'), 'WebProfiler'); + $instance->addPath(($this->targetDirs[3].'/app/Resources/views')); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form')); + + return $instance; + } + + /** + * Gets the 'twig.profile' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Profiler_Profile A Twig_Profiler_Profile instance + */ + protected function getTwig_ProfileService() + { + return $this->services['twig.profile'] = new \Twig_Profiler_Profile(); + } + + /** + * Gets the 'twig.runtime.httpkernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Extension\HttpKernelRuntime A Symfony\Bridge\Twig\Extension\HttpKernelRuntime instance + */ + protected function getTwig_Runtime_HttpkernelService() + { + return $this->services['twig.runtime.httpkernel'] = new \Symfony\Bridge\Twig\Extension\HttpKernelRuntime($this->get('fragment.handler')); + } + + /** + * Gets the 'twig.translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Translation\TwigExtractor A Symfony\Bridge\Twig\Translation\TwigExtractor instance + */ + protected function getTwig_Translation_ExtractorService() + { + return $this->services['twig.translation.extractor'] = new \Symfony\Bridge\Twig\Translation\TwigExtractor($this->get('twig')); + } + + /** + * Gets the 'uri_signer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\UriSigner A Symfony\Component\HttpKernel\UriSigner instance + */ + protected function getUriSignerService() + { + return $this->services['uri_signer'] = new \Symfony\Component\HttpKernel\UriSigner('d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb'); + } + + /** + * Gets the 'validate_request_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener A Symfony\Component\HttpKernel\EventListener\ValidateRequestListener instance + */ + protected function getValidateRequestListenerService() + { + return $this->services['validate_request_listener'] = new \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener(); + } + + /** + * Gets the 'validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Validator\ValidatorInterface A Symfony\Component\Validator\Validator\ValidatorInterface instance + */ + protected function getValidatorService() + { + return $this->services['validator'] = $this->get('validator.builder')->getValidator(); + } + + /** + * Gets the 'validator.builder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\ValidatorBuilderInterface A Symfony\Component\Validator\ValidatorBuilderInterface instance + */ + protected function getValidator_BuilderService() + { + $this->services['validator.builder'] = $instance = \Symfony\Component\Validator\Validation::createValidatorBuilder(); + + $instance->setConstraintValidatorFactory(new \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory($this, array('validator.expression' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\ExpressionValidator' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\EmailValidator' => 'validator.email', 'security.validator.user_password' => 'security.validator.user_password', 'Symfony\\Component\\Security\\Core\\Validator\\Constraints\\UserPasswordValidator' => 'security.validator.user_password', 'doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique', 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator' => 'doctrine.orm.validator.unique'))); + $instance->setTranslator($this->get('translator')); + $instance->setTranslationDomain('validators'); + $instance->addXmlMappings(array(0 => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml'))); + $instance->enableAnnotationMapping($this->get('annotation_reader')); + $instance->addMethodMapping('loadValidatorMetadata'); + $instance->addObjectInitializers(array(0 => $this->get('doctrine.orm.validator_initializer'))); + + return $instance; + } + + /** + * Gets the 'validator.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\EmailValidator A Symfony\Component\Validator\Constraints\EmailValidator instance + */ + protected function getValidator_EmailService() + { + return $this->services['validator.email'] = new \Symfony\Component\Validator\Constraints\EmailValidator(false); + } + + /** + * Gets the 'validator.expression' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\ExpressionValidator A Symfony\Component\Validator\Constraints\ExpressionValidator instance + */ + protected function getValidator_ExpressionService() + { + return $this->services['validator.expression'] = new \Symfony\Component\Validator\Constraints\ExpressionValidator(); + } + + /** + * Gets the 'var_dumper.cli_dumper' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Dumper\CliDumper A Symfony\Component\VarDumper\Dumper\CliDumper instance + */ + protected function getVarDumper_CliDumperService() + { + return $this->services['var_dumper.cli_dumper'] = new \Symfony\Component\VarDumper\Dumper\CliDumper(NULL, 'UTF-8', 0); + } + + /** + * Gets the 'var_dumper.cloner' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Cloner\VarCloner A Symfony\Component\VarDumper\Cloner\VarCloner instance + */ + protected function getVarDumper_ClonerService() + { + $this->services['var_dumper.cloner'] = $instance = new \Symfony\Component\VarDumper\Cloner\VarCloner(); + + $instance->setMaxItems(2500); + $instance->setMaxString(-1); + + return $instance; + } + + /** + * Gets the 'web_profiler.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController A Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController instance + */ + protected function getWebProfiler_Controller_ExceptionService() + { + return $this->services['web_profiler.controller.exception'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), true); + } + + /** + * Gets the 'web_profiler.controller.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController A Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController instance + */ + protected function getWebProfiler_Controller_ProfilerService() + { + return $this->services['web_profiler.controller.profiler'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController($this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), array('data_collector.request' => array(0 => 'request', 1 => '@WebProfiler/Collector/request.html.twig'), 'data_collector.time' => array(0 => 'time', 1 => '@WebProfiler/Collector/time.html.twig'), 'data_collector.memory' => array(0 => 'memory', 1 => '@WebProfiler/Collector/memory.html.twig'), 'data_collector.ajax' => array(0 => 'ajax', 1 => '@WebProfiler/Collector/ajax.html.twig'), 'data_collector.form' => array(0 => 'form', 1 => '@WebProfiler/Collector/form.html.twig'), 'data_collector.exception' => array(0 => 'exception', 1 => '@WebProfiler/Collector/exception.html.twig'), 'data_collector.logger' => array(0 => 'logger', 1 => '@WebProfiler/Collector/logger.html.twig'), 'data_collector.events' => array(0 => 'events', 1 => '@WebProfiler/Collector/events.html.twig'), 'data_collector.router' => array(0 => 'router', 1 => '@WebProfiler/Collector/router.html.twig'), 'data_collector.security' => array(0 => 'security', 1 => '@Security/Collector/security.html.twig'), 'data_collector.twig' => array(0 => 'twig', 1 => '@WebProfiler/Collector/twig.html.twig'), 'data_collector.doctrine' => array(0 => 'db', 1 => '@Doctrine/Collector/db.html.twig'), 'swiftmailer.data_collector' => array(0 => 'swiftmailer', 1 => '@Swiftmailer/Collector/swiftmailer.html.twig'), 'data_collector.dump' => array(0 => 'dump', 1 => '@Debug/Profiler/dump.html.twig'), 'data_collector.config' => array(0 => 'config', 1 => '@WebProfiler/Collector/config.html.twig')), 'bottom', ${($_ = isset($this->services['web_profiler.csp.handler']) ? $this->services['web_profiler.csp.handler'] : $this->getWebProfiler_Csp_HandlerService()) && false ?: '_'}, $this->targetDirs[3]); + } + + /** + * Gets the 'web_profiler.controller.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\RouterController A Symfony\Bundle\WebProfilerBundle\Controller\RouterController instance + */ + protected function getWebProfiler_Controller_RouterService() + { + return $this->services['web_profiler.controller.router'] = new \Symfony\Bundle\WebProfilerBundle\Controller\RouterController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'web_profiler.debug_toolbar' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener A Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener instance + */ + protected function getWebProfiler_DebugToolbarService() + { + return $this->services['web_profiler.debug_toolbar'] = new \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener($this->get('twig'), false, 2, 'bottom', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), '^/(app(_[\\w]+)?\\.php/)?_wdt', ${($_ = isset($this->services['web_profiler.csp.handler']) ? $this->services['web_profiler.csp.handler'] : $this->getWebProfiler_Csp_HandlerService()) && false ?: '_'}); + } + + /** + * Gets the 'annotations.reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\Common\Annotations\AnnotationReader A Doctrine\Common\Annotations\AnnotationReader instance + */ + protected function getAnnotations_ReaderService() + { + return $this->services['annotations.reader'] = new \Doctrine\Common\Annotations\AnnotationReader(); + } + + /** + * Gets the 'cache.annotations' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_AnnotationsService() + { + return $this->services['cache.annotations'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('natDFMbNIC', 0, 'Tt1rUGwa3fvpkxQTGpnXNB', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'controller_name_converter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser A Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser instance + */ + protected function getControllerNameConverterService() + { + return $this->services['controller_name_converter'] = new \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser($this->get('kernel')); + } + + /** + * Gets the 'debug.file_link_formatter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpKernel\Debug\FileLinkFormatter A Symfony\Component\HttpKernel\Debug\FileLinkFormatter instance + */ + protected function getDebug_FileLinkFormatterService() + { + return $this->services['debug.file_link_formatter'] = new \Symfony\Component\HttpKernel\Debug\FileLinkFormatter(NULL, $this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->targetDirs[3], '/_profiler/open?file=%f&line=%l#line%l'); + } + + /** + * Gets the 'debug.log_processor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bridge\Monolog\Processor\DebugProcessor A Symfony\Bridge\Monolog\Processor\DebugProcessor instance + */ + protected function getDebug_LogProcessorService() + { + return $this->services['debug.log_processor'] = new \Symfony\Bridge\Monolog\Processor\DebugProcessor(); + } + + /** + * Gets the 'debug.security.access.decision_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager A Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager instance + */ + protected function getDebug_Security_Access_DecisionManagerService() + { + $a = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + + $this->services['debug.security.access.decision_manager'] = $instance = new \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager(new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager(array(), 'affirmative', false, true)); + + $instance->setVoters(array(0 => new \Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter($a), 1 => new \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter(), 2 => new \Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter(new \Symfony\Component\Security\Core\Authorization\ExpressionLanguage(), $a, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}))); + + return $instance; + } + + /** + * Gets the 'doctrine.dbal.logger.profiling.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\DBAL\Logging\DebugStack A Doctrine\DBAL\Logging\DebugStack instance + */ + protected function getDoctrine_Dbal_Logger_Profiling_DefaultService() + { + return $this->services['doctrine.dbal.logger.profiling.default'] = new \Doctrine\DBAL\Logging\DebugStack(); + } + + /** + * Gets the 'form.server_params' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Form\Util\ServerParams A Symfony\Component\Form\Util\ServerParams instance + */ + protected function getForm_ServerParamsService() + { + return $this->services['form.server_params'] = new \Symfony\Component\Form\Util\ServerParams($this->get('request_stack')); + } + + /** + * Gets the 'monolog.processor.psr_log_message' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Monolog\Processor\PsrLogMessageProcessor A Monolog\Processor\PsrLogMessageProcessor instance + */ + protected function getMonolog_Processor_PsrLogMessageService() + { + return $this->services['monolog.processor.psr_log_message'] = new \Monolog\Processor\PsrLogMessageProcessor(); + } + + /** + * Gets the 'router.request_context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Routing\RequestContext A Symfony\Component\Routing\RequestContext instance + */ + protected function getRouter_RequestContextService() + { + return $this->services['router.request_context'] = new \Symfony\Component\Routing\RequestContext('', 'GET', 'localhost', 'http', 80, 443); + } + + /** + * Gets the 'security.authentication.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager A Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager instance + */ + protected function getSecurity_Authentication_ManagerService() + { + $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('58c46f45a05e13.86720536')), true); + + $instance->setEventDispatcher($this->get('debug.event_dispatcher')); + + return $instance; + } + + /** + * Gets the 'security.authentication.trust_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver A Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver instance + */ + protected function getSecurity_Authentication_TrustResolverService() + { + return $this->services['security.authentication.trust_resolver'] = new \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver('Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken'); + } + + /** + * Gets the 'security.firewall.map' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallMap A Symfony\Bundle\SecurityBundle\Security\FirewallMap instance + */ + protected function getSecurity_Firewall_MapService() + { + return $this->services['security.firewall.map'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallMap($this, array('security.firewall.map.context.dev' => new \Symfony\Component\HttpFoundation\RequestMatcher('^/(_(profiler|wdt)|css|images|js)/'), 'security.firewall.map.context.main' => NULL)); + } + + /** + * Gets the 'security.logout_url_generator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator A Symfony\Component\Security\Http\Logout\LogoutUrlGenerator instance + */ + protected function getSecurity_LogoutUrlGeneratorService() + { + return $this->services['security.logout_url_generator'] = new \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator($this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.role_hierarchy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Role\RoleHierarchy A Symfony\Component\Security\Core\Role\RoleHierarchy instance + */ + protected function getSecurity_RoleHierarchyService() + { + return $this->services['security.role_hierarchy'] = new \Symfony\Component\Security\Core\Role\RoleHierarchy(array()); + } + + /** + * Gets the 'session.storage.metadata_bag' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag A Symfony\Component\HttpFoundation\Session\Storage\MetadataBag instance + */ + protected function getSession_Storage_MetadataBagService() + { + return $this->services['session.storage.metadata_bag'] = new \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag('_sf2_meta', '0'); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.eventdispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Swift_Events_SimpleEventDispatcher A Swift_Events_SimpleEventDispatcher instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_EventdispatcherService() + { + return $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] = new \Swift_Events_SimpleEventDispatcher(); + } + + /** + * Gets the 'templating.locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator A Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator instance + */ + protected function getTemplating_LocatorService() + { + return $this->services['templating.locator'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator($this->get('file_locator'), __DIR__); + } + + /** + * Gets the 'translator.selector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Translation\MessageSelector A Symfony\Component\Translation\MessageSelector instance + */ + protected function getTranslator_SelectorService() + { + return $this->services['translator.selector'] = new \Symfony\Component\Translation\MessageSelector(); + } + + /** + * Gets the 'web_profiler.csp.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler A Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler instance + */ + protected function getWebProfiler_Csp_HandlerService() + { + return $this->services['web_profiler.csp.handler'] = new \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler(new \Symfony\Bundle\WebProfilerBundle\Csp\NonceGenerator()); + } + + /** + * {@inheritdoc} + */ + public function getParameter($name) + { + $name = strtolower($name); + + if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) { + throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name)); + } + if (isset($this->loadedDynamicParameters[$name])) { + return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + + return $this->parameters[$name]; + } + + /** + * {@inheritdoc} + */ + public function hasParameter($name) + { + $name = strtolower($name); + + return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]); + } + + /** + * {@inheritdoc} + */ + public function setParameter($name, $value) + { + throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); + } + + /** + * {@inheritdoc} + */ + public function getParameterBag() + { + if (null === $this->parameterBag) { + $parameters = $this->parameters; + foreach ($this->loadedDynamicParameters as $name => $loaded) { + $parameters[$name] = $loaded ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + $this->parameterBag = new FrozenParameterBag($parameters); + } + + return $this->parameterBag; + } + + private $loadedDynamicParameters = array( + 'kernel.root_dir' => false, + 'kernel.logs_dir' => false, + 'kernel.bundles_metadata' => false, + 'session.save_path' => false, + 'router.resource' => false, + ); + private $dynamicParameters = array(); + + /** + * Computes a dynamic parameter. + * + * @param string The name of the dynamic parameter to load + * + * @return mixed The value of the dynamic parameter + * + * @throws InvalidArgumentException When the dynamic parameter does not exist + */ + private function getDynamicParameter($name) + { + switch ($name) { + case 'kernel.root_dir': $value = ($this->targetDirs[3].'/app'); break; + case 'kernel.logs_dir': $value = ($this->targetDirs[2].'/logs'); break; + case 'kernel.bundles_metadata': $value = array( + 'FrameworkBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle'), + 'namespace' => 'Symfony\\Bundle\\FrameworkBundle', + ), + 'SecurityBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle'), + 'namespace' => 'Symfony\\Bundle\\SecurityBundle', + ), + 'TwigBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle'), + 'namespace' => 'Symfony\\Bundle\\TwigBundle', + ), + 'MonologBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/monolog-bundle'), + 'namespace' => 'Symfony\\Bundle\\MonologBundle', + ), + 'SwiftmailerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle'), + 'namespace' => 'Symfony\\Bundle\\SwiftmailerBundle', + ), + 'DoctrineBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle'), + 'namespace' => 'Doctrine\\Bundle\\DoctrineBundle', + ), + 'SensioFrameworkExtraBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/framework-extra-bundle'), + 'namespace' => 'Sensio\\Bundle\\FrameworkExtraBundle', + ), + 'AppBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/src/AppBundle'), + 'namespace' => 'AppBundle', + ), + 'DebugBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle'), + 'namespace' => 'Symfony\\Bundle\\DebugBundle', + ), + 'WebProfilerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle'), + 'namespace' => 'Symfony\\Bundle\\WebProfilerBundle', + ), + 'SensioDistributionBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/distribution-bundle'), + 'namespace' => 'Sensio\\Bundle\\DistributionBundle', + ), + 'SensioGeneratorBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/generator-bundle'), + 'namespace' => 'Sensio\\Bundle\\GeneratorBundle', + ), + ); break; + case 'session.save_path': $value = ($this->targetDirs[3].'/app/../var/sessions/dev'); break; + case 'router.resource': $value = ($this->targetDirs[3].'/app/config/routing_dev.yml'); break; + default: throw new InvalidArgumentException(sprintf('The dynamic parameter "%s" must be defined.', $name)); + } + $this->loadedDynamicParameters[$name] = true; + + return $this->dynamicParameters[$name] = $value; + } + + /** + * Gets the default parameters. + * + * @return array An array of the default parameters + */ + protected function getDefaultParameters() + { + return array( + 'kernel.environment' => 'dev', + 'kernel.debug' => true, + 'kernel.name' => 'app', + 'kernel.cache_dir' => __DIR__, + 'kernel.bundles' => array( + 'FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle', + 'SecurityBundle' => 'Symfony\\Bundle\\SecurityBundle\\SecurityBundle', + 'TwigBundle' => 'Symfony\\Bundle\\TwigBundle\\TwigBundle', + 'MonologBundle' => 'Symfony\\Bundle\\MonologBundle\\MonologBundle', + 'SwiftmailerBundle' => 'Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle', + 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle', + 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle', + 'AppBundle' => 'AppBundle\\AppBundle', + 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle', + 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle', + 'SensioDistributionBundle' => 'Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle', + 'SensioGeneratorBundle' => 'Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle', + ), + 'kernel.charset' => 'UTF-8', + 'kernel.container_class' => 'appDevDebugProjectContainer', + 'database_host' => '127.0.0.1', + 'database_port' => NULL, + 'database_name' => 'symfony', + 'database_user' => 'root', + 'database_password' => NULL, + 'mailer_transport' => 'smtp', + 'mailer_host' => '127.0.0.1', + 'mailer_user' => NULL, + 'mailer_password' => NULL, + 'secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'locale' => 'en', + 'fragment.renderer.hinclude.global_template' => NULL, + 'fragment.path' => '/_fragment', + 'kernel.secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'kernel.http_method_override' => true, + 'kernel.trusted_hosts' => array( + + ), + 'kernel.trusted_proxies' => array( + + ), + 'kernel.default_locale' => 'en', + 'templating.helper.code.file_link_format' => NULL, + 'debug.file_link_format' => NULL, + 'session.metadata.storage_key' => '_sf2_meta', + 'session.storage.options' => array( + 'cookie_httponly' => true, + 'gc_probability' => 1, + ), + 'session.metadata.update_threshold' => '0', + 'form.type_extension.csrf.enabled' => true, + 'form.type_extension.csrf.field_name' => '_token', + 'templating.loader.cache.path' => NULL, + 'templating.engines' => array( + 0 => 'twig', + ), + 'validator.mapping.cache.prefix' => '', + 'validator.mapping.cache.file' => (__DIR__.'/validation.php'), + 'validator.translation_domain' => 'validators', + 'profiler_listener.only_exceptions' => false, + 'profiler_listener.only_master_requests' => false, + 'profiler.storage.dsn' => ('file:'.__DIR__.'/profiler'), + 'debug.error_handler.throw_at' => -1, + 'debug.container.dump' => (__DIR__.'/appDevDebugProjectContainer.xml'), + 'router.options.generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', + 'router.options.matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', + 'router.options.matcher.cache_class' => 'appDevDebugProjectContainerUrlMatcher', + 'router.options.generator.cache_class' => 'appDevDebugProjectContainerUrlGenerator', + 'router.request_context.host' => 'localhost', + 'router.request_context.scheme' => 'http', + 'router.request_context.base_url' => '', + 'router.cache_class_prefix' => 'appDevDebugProjectContainer', + 'request_listener.http_port' => 80, + 'request_listener.https_port' => 443, + 'security.authentication.trust_resolver.anonymous_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', + 'security.authentication.trust_resolver.rememberme_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken', + 'security.role_hierarchy.roles' => array( + + ), + 'security.access.denied_url' => NULL, + 'security.authentication.manager.erase_credentials' => true, + 'security.authentication.session_strategy.strategy' => 'migrate', + 'security.access.always_authenticate_before_granting' => false, + 'security.authentication.hide_user_not_found' => true, + 'twig.exception_listener.controller' => 'twig.controller.exception:showAction', + 'twig.form.resources' => array( + 0 => 'form_div_layout.html.twig', + ), + 'monolog.use_microseconds' => true, + 'monolog.swift_mailer.handlers' => array( + + ), + 'monolog.handlers_to_channels' => array( + 'monolog.handler.console' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + 1 => 'doctrine', + ), + ), + 'monolog.handler.main' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + ), + ), + ), + 'swiftmailer.class' => 'Swift_Mailer', + 'swiftmailer.transport.sendmail.class' => 'Swift_Transport_SendmailTransport', + 'swiftmailer.transport.mail.class' => 'Swift_Transport_MailTransport', + 'swiftmailer.transport.failover.class' => 'Swift_Transport_FailoverTransport', + 'swiftmailer.plugin.redirecting.class' => 'Swift_Plugins_RedirectingPlugin', + 'swiftmailer.plugin.impersonate.class' => 'Swift_Plugins_ImpersonatePlugin', + 'swiftmailer.plugin.messagelogger.class' => 'Swift_Plugins_MessageLogger', + 'swiftmailer.plugin.antiflood.class' => 'Swift_Plugins_AntiFloodPlugin', + 'swiftmailer.transport.smtp.class' => 'Swift_Transport_EsmtpTransport', + 'swiftmailer.plugin.blackhole.class' => 'Swift_Plugins_BlackholePlugin', + 'swiftmailer.spool.file.class' => 'Swift_FileSpool', + 'swiftmailer.spool.memory.class' => 'Swift_MemorySpool', + 'swiftmailer.email_sender.listener.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener', + 'swiftmailer.data_collector.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\DataCollector\\MessageDataCollector', + 'swiftmailer.mailer.default.transport.name' => 'smtp', + 'swiftmailer.mailer.default.transport.smtp.encryption' => NULL, + 'swiftmailer.mailer.default.transport.smtp.port' => 25, + 'swiftmailer.mailer.default.transport.smtp.host' => '127.0.0.1', + 'swiftmailer.mailer.default.transport.smtp.username' => NULL, + 'swiftmailer.mailer.default.transport.smtp.password' => NULL, + 'swiftmailer.mailer.default.transport.smtp.auth_mode' => NULL, + 'swiftmailer.mailer.default.transport.smtp.timeout' => 30, + 'swiftmailer.mailer.default.transport.smtp.source_ip' => NULL, + 'swiftmailer.mailer.default.transport.smtp.local_domain' => NULL, + 'swiftmailer.spool.default.memory.path' => (__DIR__.'/swiftmailer/spool/default'), + 'swiftmailer.mailer.default.spool.enabled' => true, + 'swiftmailer.mailer.default.plugin.impersonate' => NULL, + 'swiftmailer.mailer.default.single_address' => NULL, + 'swiftmailer.mailer.default.delivery.enabled' => true, + 'swiftmailer.spool.enabled' => true, + 'swiftmailer.delivery.enabled' => true, + 'swiftmailer.single_address' => NULL, + 'swiftmailer.mailers' => array( + 'default' => 'swiftmailer.mailer.default', + ), + 'swiftmailer.default_mailer' => 'default', + 'doctrine_cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine_cache.apcu.class' => 'Doctrine\\Common\\Cache\\ApcuCache', + 'doctrine_cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine_cache.chain.class' => 'Doctrine\\Common\\Cache\\ChainCache', + 'doctrine_cache.couchbase.class' => 'Doctrine\\Common\\Cache\\CouchbaseCache', + 'doctrine_cache.couchbase.connection.class' => 'Couchbase', + 'doctrine_cache.couchbase.hostnames' => 'localhost:8091', + 'doctrine_cache.file_system.class' => 'Doctrine\\Common\\Cache\\FilesystemCache', + 'doctrine_cache.php_file.class' => 'Doctrine\\Common\\Cache\\PhpFileCache', + 'doctrine_cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine_cache.memcache.connection.class' => 'Memcache', + 'doctrine_cache.memcache.host' => 'localhost', + 'doctrine_cache.memcache.port' => 11211, + 'doctrine_cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine_cache.memcached.connection.class' => 'Memcached', + 'doctrine_cache.memcached.host' => 'localhost', + 'doctrine_cache.memcached.port' => 11211, + 'doctrine_cache.mongodb.class' => 'Doctrine\\Common\\Cache\\MongoDBCache', + 'doctrine_cache.mongodb.collection.class' => 'MongoCollection', + 'doctrine_cache.mongodb.connection.class' => 'MongoClient', + 'doctrine_cache.mongodb.server' => 'localhost:27017', + 'doctrine_cache.predis.client.class' => 'Predis\\Client', + 'doctrine_cache.predis.scheme' => 'tcp', + 'doctrine_cache.predis.host' => 'localhost', + 'doctrine_cache.predis.port' => 6379, + 'doctrine_cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine_cache.redis.connection.class' => 'Redis', + 'doctrine_cache.redis.host' => 'localhost', + 'doctrine_cache.redis.port' => 6379, + 'doctrine_cache.riak.class' => 'Doctrine\\Common\\Cache\\RiakCache', + 'doctrine_cache.riak.bucket.class' => 'Riak\\Bucket', + 'doctrine_cache.riak.connection.class' => 'Riak\\Connection', + 'doctrine_cache.riak.bucket_property_list.class' => 'Riak\\BucketPropertyList', + 'doctrine_cache.riak.host' => 'localhost', + 'doctrine_cache.riak.port' => 8087, + 'doctrine_cache.sqlite3.class' => 'Doctrine\\Common\\Cache\\SQLite3Cache', + 'doctrine_cache.sqlite3.connection.class' => 'SQLite3', + 'doctrine_cache.void.class' => 'Doctrine\\Common\\Cache\\VoidCache', + 'doctrine_cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine_cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine_cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine_cache.security.acl.cache.class' => 'Doctrine\\Bundle\\DoctrineCacheBundle\\Acl\\Model\\AclCache', + 'doctrine.dbal.logger.chain.class' => 'Doctrine\\DBAL\\Logging\\LoggerChain', + 'doctrine.dbal.logger.profiling.class' => 'Doctrine\\DBAL\\Logging\\DebugStack', + 'doctrine.dbal.logger.class' => 'Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger', + 'doctrine.dbal.configuration.class' => 'Doctrine\\DBAL\\Configuration', + 'doctrine.data_collector.class' => 'Doctrine\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', + 'doctrine.dbal.connection.event_manager.class' => 'Symfony\\Bridge\\Doctrine\\ContainerAwareEventManager', + 'doctrine.dbal.connection_factory.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ConnectionFactory', + 'doctrine.dbal.events.mysql_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit', + 'doctrine.dbal.events.oracle_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit', + 'doctrine.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 'doctrine.entity_managers' => array( + 'default' => 'doctrine.orm.default_entity_manager', + ), + 'doctrine.default_entity_manager' => 'default', + 'doctrine.dbal.connection_factory.types' => array( + + ), + 'doctrine.connections' => array( + 'default' => 'doctrine.dbal.default_connection', + ), + 'doctrine.default_connection' => 'default', + 'doctrine.orm.configuration.class' => 'Doctrine\\ORM\\Configuration', + 'doctrine.orm.entity_manager.class' => 'Doctrine\\ORM\\EntityManager', + 'doctrine.orm.manager_configurator.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ManagerConfigurator', + 'doctrine.orm.cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine.orm.cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine.orm.cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine.orm.cache.memcache_host' => 'localhost', + 'doctrine.orm.cache.memcache_port' => 11211, + 'doctrine.orm.cache.memcache_instance.class' => 'Memcache', + 'doctrine.orm.cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine.orm.cache.memcached_host' => 'localhost', + 'doctrine.orm.cache.memcached_port' => 11211, + 'doctrine.orm.cache.memcached_instance.class' => 'Memcached', + 'doctrine.orm.cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine.orm.cache.redis_host' => 'localhost', + 'doctrine.orm.cache.redis_port' => 6379, + 'doctrine.orm.cache.redis_instance.class' => 'Redis', + 'doctrine.orm.cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine.orm.cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine.orm.cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine.orm.metadata.driver_chain.class' => 'Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriverChain', + 'doctrine.orm.metadata.annotation.class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', + 'doctrine.orm.metadata.xml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver', + 'doctrine.orm.metadata.yml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedYamlDriver', + 'doctrine.orm.metadata.php.class' => 'Doctrine\\ORM\\Mapping\\Driver\\PHPDriver', + 'doctrine.orm.metadata.staticphp.class' => 'Doctrine\\ORM\\Mapping\\Driver\\StaticPHPDriver', + 'doctrine.orm.proxy_cache_warmer.class' => 'Symfony\\Bridge\\Doctrine\\CacheWarmer\\ProxyCacheWarmer', + 'form.type_guesser.doctrine.class' => 'Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmTypeGuesser', + 'doctrine.orm.validator.unique.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator', + 'doctrine.orm.validator_initializer.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\DoctrineInitializer', + 'doctrine.orm.security.user.provider.class' => 'Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider', + 'doctrine.orm.listeners.resolve_target_entity.class' => 'Doctrine\\ORM\\Tools\\ResolveTargetEntityListener', + 'doctrine.orm.listeners.attach_entity_listeners.class' => 'Doctrine\\ORM\\Tools\\AttachEntityListenersListener', + 'doctrine.orm.naming_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultNamingStrategy', + 'doctrine.orm.naming_strategy.underscore.class' => 'Doctrine\\ORM\\Mapping\\UnderscoreNamingStrategy', + 'doctrine.orm.quote_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultQuoteStrategy', + 'doctrine.orm.quote_strategy.ansi.class' => 'Doctrine\\ORM\\Mapping\\AnsiQuoteStrategy', + 'doctrine.orm.entity_listener_resolver.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Mapping\\ContainerAwareEntityListenerResolver', + 'doctrine.orm.second_level_cache.default_cache_factory.class' => 'Doctrine\\ORM\\Cache\\DefaultCacheFactory', + 'doctrine.orm.second_level_cache.default_region.class' => 'Doctrine\\ORM\\Cache\\Region\\DefaultRegion', + 'doctrine.orm.second_level_cache.filelock_region.class' => 'Doctrine\\ORM\\Cache\\Region\\FileLockRegion', + 'doctrine.orm.second_level_cache.logger_chain.class' => 'Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain', + 'doctrine.orm.second_level_cache.logger_statistics.class' => 'Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger', + 'doctrine.orm.second_level_cache.cache_configuration.class' => 'Doctrine\\ORM\\Cache\\CacheConfiguration', + 'doctrine.orm.second_level_cache.regions_configuration.class' => 'Doctrine\\ORM\\Cache\\RegionsConfiguration', + 'doctrine.orm.auto_generate_proxy_classes' => true, + 'doctrine.orm.proxy_dir' => (__DIR__.'/doctrine/orm/Proxies'), + 'doctrine.orm.proxy_namespace' => 'Proxies', + 'sensio_framework_extra.view.guesser.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Templating\\TemplateGuesser', + 'sensio_framework_extra.controller.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 'sensio_framework_extra.routing.loader.annot_dir.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader', + 'sensio_framework_extra.routing.loader.annot_file.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader', + 'sensio_framework_extra.routing.loader.annot_class.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Routing\\AnnotatedRouteControllerLoader', + 'sensio_framework_extra.converter.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 'sensio_framework_extra.converter.manager.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 'sensio_framework_extra.converter.doctrine.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 'sensio_framework_extra.converter.datetime.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 'sensio_framework_extra.view.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 'web_profiler.debug_toolbar.position' => 'bottom', + 'web_profiler.debug_toolbar.intercept_redirects' => false, + 'web_profiler.debug_toolbar.mode' => 2, + 'data_collector.templates' => array( + 'data_collector.request' => array( + 0 => 'request', + 1 => '@WebProfiler/Collector/request.html.twig', + ), + 'data_collector.time' => array( + 0 => 'time', + 1 => '@WebProfiler/Collector/time.html.twig', + ), + 'data_collector.memory' => array( + 0 => 'memory', + 1 => '@WebProfiler/Collector/memory.html.twig', + ), + 'data_collector.ajax' => array( + 0 => 'ajax', + 1 => '@WebProfiler/Collector/ajax.html.twig', + ), + 'data_collector.form' => array( + 0 => 'form', + 1 => '@WebProfiler/Collector/form.html.twig', + ), + 'data_collector.exception' => array( + 0 => 'exception', + 1 => '@WebProfiler/Collector/exception.html.twig', + ), + 'data_collector.logger' => array( + 0 => 'logger', + 1 => '@WebProfiler/Collector/logger.html.twig', + ), + 'data_collector.events' => array( + 0 => 'events', + 1 => '@WebProfiler/Collector/events.html.twig', + ), + 'data_collector.router' => array( + 0 => 'router', + 1 => '@WebProfiler/Collector/router.html.twig', + ), + 'data_collector.security' => array( + 0 => 'security', + 1 => '@Security/Collector/security.html.twig', + ), + 'data_collector.twig' => array( + 0 => 'twig', + 1 => '@WebProfiler/Collector/twig.html.twig', + ), + 'data_collector.doctrine' => array( + 0 => 'db', + 1 => '@Doctrine/Collector/db.html.twig', + ), + 'swiftmailer.data_collector' => array( + 0 => 'swiftmailer', + 1 => '@Swiftmailer/Collector/swiftmailer.html.twig', + ), + 'data_collector.dump' => array( + 0 => 'dump', + 1 => '@Debug/Profiler/dump.html.twig', + ), + 'data_collector.config' => array( + 0 => 'config', + 1 => '@WebProfiler/Collector/config.html.twig', + ), + ), + 'console.command.ids' => array( + 0 => 'sensio_distribution.security_checker.command', + ), + ); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainer.php.meta b/var/cache/dev/appDevDebugProjectContainer.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..42a9b115adce51c408fb75b871ec16ba1d0f5a2b --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.php.meta @@ -0,0 +1 @@ +a:210:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":52:{s:44:"/home/c2i/git/Symphony_S_A/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":111:{s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":82:{s:74:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/MonologBundle.php";}i:10;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:12;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:16;C:46:"Symfony\Component\Config\Resource\FileResource":62:{s:54:"/home/c2i/git/Symphony_S_A/src/AppBundle/AppBundle.php";}i:18;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:22;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/SensioDistributionBundle.php";}i:24;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/SensioGeneratorBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:27;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:28;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:30;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:31;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddAnnotationsCachedReaderPass.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":155:{s:146:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:33;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:34;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:36;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:37;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:39;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:40;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PropertyInfoPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/DataCollectorTranslatorPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ControllerArgumentValueResolverPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ValidateWorkflowsPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddDebugLogProcessorPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":156:{s:147:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ConfigCachePass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/RuntimeLoaderPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/FixEmptyLoggerPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/config_dev.yml";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/home/c2i/git/Symphony_S_A/app/config/config.yml";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/parameters.yml";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/security.yml";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/services.yml";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:78;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:79;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:119;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:120;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:121;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:122;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:123;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/FactoryReturnTypePass.php";}i:124;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:125;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:126;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:127;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php";}i:128;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:129;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:130;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:135;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:136;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:137;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:138;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:145;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:174;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php";}i:175;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_debug.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:186;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:187;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:188;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml";}i:190;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":88:{a:2:{i:0;s:62:"/home/c2i/git/Symphony_S_A/app/Resources/FrameworkBundle/views";i:1;b:0;}}i:191;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":127:{a:2:{i:0;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views";i:1;b:1;}}i:192;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/SecurityBundle/views";i:1;b:0;}}i:193;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views";i:1;b:1;}}i:194;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":83:{a:2:{i:0;s:57:"/home/c2i/git/Symphony_S_A/app/Resources/TwigBundle/views";i:1;b:0;}}i:195;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":121:{a:2:{i:0;s:95:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views";i:1;b:1;}}i:196;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":86:{a:2:{i:0;s:60:"/home/c2i/git/Symphony_S_A/app/Resources/MonologBundle/views";i:1;b:0;}}i:197;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":98:{a:2:{i:0;s:72:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/views";i:1;b:0;}}i:198;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/SwiftmailerBundle/views";i:1;b:0;}}i:199;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views";i:1;b:1;}}i:200;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/DoctrineBundle/views";i:1;b:0;}}i:201;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":100:{a:2:{i:0;s:74:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views";i:1;b:1;}}i:202;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/app/Resources/SensioFrameworkExtraBundle/views";i:1;b:0;}}i:203;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":105:{a:2:{i:0;s:79:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/views";i:1;b:0;}}i:204;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/app/Resources/AppBundle/views";i:1;b:0;}}i:205;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/src/AppBundle/Resources/views";i:1;b:0;}}i:206;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":84:{a:2:{i:0;s:58:"/home/c2i/git/Symphony_S_A/app/Resources/DebugBundle/views";i:1;b:0;}}i:207;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":122:{a:2:{i:0;s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views";i:1;b:1;}}i:208;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/WebProfilerBundle/views";i:1;b:0;}}i:209;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views";i:1;b:1;}}i:210;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":97:{a:2:{i:0;s:71:"/home/c2i/git/Symphony_S_A/app/Resources/SensioDistributionBundle/views";i:1;b:0;}}i:211;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/views";i:1;b:0;}}i:212;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":94:{a:2:{i:0;s:68:"/home/c2i/git/Symphony_S_A/app/Resources/SensioGeneratorBundle/views";i:1;b:0;}}i:213;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources/views";i:1;b:0;}}i:214;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":72:{a:2:{i:0;s:46:"/home/c2i/git/Symphony_S_A/app/Resources/views";i:1;b:1;}}i:215;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:218;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:219;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:223;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Configuration.php";}i:224;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:229;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Configuration.php";}i:230;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-cache-bundle/Resources/config/services.xml";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":87:{s:79:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":64:{s:56:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":83:{s:75:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":66:{s:58:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":48:{s:40:"/home/c2i/git/Symphony_S_A/src/AppBundle";}i:248;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config";}i:253;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":75:{s:67:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":65:{s:57:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:259;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:260;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:263;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:264;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:267;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Configuration.php";}i:270;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:271;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:273;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:274;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/toolbar.xml";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/DependencyInjection/SensioDistributionExtension.php";}i:279;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config/security.xml";}i:280;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":55:{a:2:{i:0;s:29:"Symfony\Component\Yaml\Parser";i:1;b:1;}}i:281;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":63:{a:2:{i:0;s:37:"Symfony\Component\Stopwatch\Stopwatch";i:1;b:1;}}i:282;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":81:{a:2:{i:0;s:55:"Symfony\Component\ExpressionLanguage\ExpressionLanguage";i:1;b:1;}}i:283;C:46:"Symfony\Component\Config\Resource\FileResource":89:{s:81:"/home/c2i/git/Symphony_S_A/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php";}} \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainer.xml b/var/cache/dev/appDevDebugProjectContainer.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a0c2a3de191b8a460cb87bb77fa519628a914a2 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainer.xml @@ -0,0 +1,2800 @@ + + + + /home/c2i/git/Symphony_S_A/app + dev + true + app + /home/c2i/git/Symphony_S_A/var/cache/dev + /home/c2i/git/Symphony_S_A/var/logs + + Symfony\Bundle\FrameworkBundle\FrameworkBundle + Symfony\Bundle\SecurityBundle\SecurityBundle + Symfony\Bundle\TwigBundle\TwigBundle + Symfony\Bundle\MonologBundle\MonologBundle + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle + Doctrine\Bundle\DoctrineBundle\DoctrineBundle + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle + AppBundle\AppBundle + Symfony\Bundle\DebugBundle\DebugBundle + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle + Sensio\Bundle\DistributionBundle\SensioDistributionBundle + Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle + + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle + Symfony\Bundle\FrameworkBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle + Symfony\Bundle\SecurityBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle + Symfony\Bundle\TwigBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle + Symfony\Bundle\MonologBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle + Symfony\Bundle\SwiftmailerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle + Doctrine\Bundle\DoctrineBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle + Sensio\Bundle\FrameworkExtraBundle + + + null + /home/c2i/git/Symphony_S_A/src/AppBundle + AppBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle + Symfony\Bundle\DebugBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle + Symfony\Bundle\WebProfilerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle + Sensio\Bundle\DistributionBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle + Sensio\Bundle\GeneratorBundle + + + UTF-8 + appDevDebugProjectContainer + 127.0.0.1 + null + symfony + root + null + smtp + 127.0.0.1 + null + null + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + en + null + /_fragment + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + true + + + en + null + null + _sf2_meta + + true + 1 + + /home/c2i/git/Symphony_S_A/app/../var/sessions/dev + 0 + true + _token + null + + twig + + + /home/c2i/git/Symphony_S_A/var/cache/dev/validation.php + validators + false + false + file:/home/c2i/git/Symphony_S_A/var/cache/dev/profiler + -1 + /home/c2i/git/Symphony_S_A/var/cache/dev/appDevDebugProjectContainer.xml + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appDevDebugProjectContainerUrlMatcher + appDevDebugProjectContainerUrlGenerator + localhost + http + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + appDevDebugProjectContainer + 80 + 443 + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + null + true + migrate + false + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + true + + + + exclusive + + event + doctrine + + + + exclusive + + event + + + + Swift_Mailer + Swift_Transport_SendmailTransport + Swift_Transport_MailTransport + Swift_Transport_FailoverTransport + Swift_Plugins_RedirectingPlugin + Swift_Plugins_ImpersonatePlugin + Swift_Plugins_MessageLogger + Swift_Plugins_AntiFloodPlugin + Swift_Transport_EsmtpTransport + Swift_Plugins_BlackholePlugin + Swift_FileSpool + Swift_MemorySpool + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector + smtp + null + 25 + 127.0.0.1 + null + null + null + 30 + null + null + /home/c2i/git/Symphony_S_A/var/cache/dev/swiftmailer/spool/default + true + null + null + true + true + true + null + + swiftmailer.mailer.default + + default + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\ApcuCache + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ChainCache + Doctrine\Common\Cache\CouchbaseCache + Couchbase + localhost:8091 + Doctrine\Common\Cache\FilesystemCache + Doctrine\Common\Cache\PhpFileCache + Doctrine\Common\Cache\MemcacheCache + Memcache + localhost + 11211 + Doctrine\Common\Cache\MemcachedCache + Memcached + localhost + 11211 + Doctrine\Common\Cache\MongoDBCache + MongoCollection + MongoClient + localhost:27017 + Predis\Client + tcp + localhost + 6379 + Doctrine\Common\Cache\RedisCache + Redis + localhost + 6379 + Doctrine\Common\Cache\RiakCache + Riak\Bucket + Riak\Connection + Riak\BucketPropertyList + localhost + 8087 + Doctrine\Common\Cache\SQLite3Cache + SQLite3 + Doctrine\Common\Cache\VoidCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Bundle\DoctrineCacheBundle\Acl\Model\AclCache + Doctrine\DBAL\Logging\LoggerChain + Doctrine\DBAL\Logging\DebugStack + Symfony\Bridge\Doctrine\Logger\DbalLogger + Doctrine\DBAL\Configuration + Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector + Symfony\Bridge\Doctrine\ContainerAwareEventManager + Doctrine\Bundle\DoctrineBundle\ConnectionFactory + Doctrine\DBAL\Event\Listeners\MysqlSessionInit + Doctrine\DBAL\Event\Listeners\OracleSessionInit + Doctrine\Bundle\DoctrineBundle\Registry + + doctrine.orm.default_entity_manager + + default + + + doctrine.dbal.default_connection + + default + Doctrine\ORM\Configuration + Doctrine\ORM\EntityManager + Doctrine\Bundle\DoctrineBundle\ManagerConfigurator + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\MemcacheCache + localhost + 11211 + Memcache + Doctrine\Common\Cache\MemcachedCache + localhost + 11211 + Memcached + Doctrine\Common\Cache\RedisCache + localhost + 6379 + Redis + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain + Doctrine\ORM\Mapping\Driver\AnnotationDriver + Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver + Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver + Doctrine\ORM\Mapping\Driver\PHPDriver + Doctrine\ORM\Mapping\Driver\StaticPHPDriver + Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer + Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser + Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator + Symfony\Bridge\Doctrine\Validator\DoctrineInitializer + Symfony\Bridge\Doctrine\Security\User\EntityUserProvider + Doctrine\ORM\Tools\ResolveTargetEntityListener + Doctrine\ORM\Tools\AttachEntityListenersListener + Doctrine\ORM\Mapping\DefaultNamingStrategy + Doctrine\ORM\Mapping\UnderscoreNamingStrategy + Doctrine\ORM\Mapping\DefaultQuoteStrategy + Doctrine\ORM\Mapping\AnsiQuoteStrategy + Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver + Doctrine\ORM\Cache\DefaultCacheFactory + Doctrine\ORM\Cache\Region\DefaultRegion + Doctrine\ORM\Cache\Region\FileLockRegion + Doctrine\ORM\Cache\Logging\CacheLoggerChain + Doctrine\ORM\Cache\Logging\StatisticsCacheLogger + Doctrine\ORM\Cache\CacheConfiguration + Doctrine\ORM\Cache\RegionsConfiguration + true + /home/c2i/git/Symphony_S_A/var/cache/dev/doctrine/orm/Proxies + Proxies + Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + Symfony\Component\Routing\Loader\AnnotationDirectoryLoader + Symfony\Component\Routing\Loader\AnnotationFileLoader + Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + bottom + false + 2 + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + + sensio_distribution.security_checker.command + + + + + + + + + + UTF-8 + + + + + + + + en + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/validation.php + + + + + iTCx+5mhKU + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/annotations.php + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + + + + + + + + + + + + + + + + + Symfony\Component\HttpFoundation\ParameterBag + Symfony\Component\HttpFoundation\HeaderBag + Symfony\Component\HttpFoundation\FileBag + Symfony\Component\HttpFoundation\ServerBag + Symfony\Component\HttpFoundation\Request + Symfony\Component\HttpKernel\Kernel + Symfony\Component\ClassLoader\ClassCollectionLoader + Symfony\Component\ClassLoader\ApcClassLoader + + + + + + + + + Symfony\Component\DependencyInjection\ContainerInterface + Symfony\Component\DependencyInjection\Container + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + + + + + + + + + + + + + + true + + inline + fragment.renderer.inline + + + hinclude + fragment.renderer.hinclude + + + hinclude + fragment.renderer.hinclude + + + esi + fragment.renderer.esi + + + ssi + fragment.renderer.ssi + + + + + + + + /_fragment + + + + + + + + null + + /_fragment + + + + + null + + + + /_fragment + + + + + null + + + + /_fragment + + + + false + false + + + 0 + false + + + + + + + 2P0pTS1Lqn + 0 + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + bF8tWu38tg + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + natDFMbNIC + 0 + Tt1rUGwa3fvpkxQTGpnXNB + /home/c2i/git/Symphony_S_A/var/cache/dev/pools + + + + + + + + + + + + + + + + + + + + + php + + + yml + + + xlf + xliff + + + po + + + mo + + + ts + + + csv + + + res + + + dat + + + ini + + + json + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/translations + true + + + + + + Symfony\Component\Translation\TranslatorInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + php + + + + yml + + + + xlf + + + + xliff + + + + po + + + + mo + + + + ts + + + + csv + + + + res + + + + dat + + + + ini + + + + json + + + + + + php + + + + twig + + + + + + php + + + + xlf + + + + po + + + + mo + + + + yml + + + + ts + + + + csv + + + + ini + + + + json + + + + res + + + + + + + + + + + + + + + + + + + _sf2_meta + 0 + + + + true + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + form.type.form + form.type.choice + form.type.entity + + + + form.type_extension.form.http_foundation + form.type_extension.form.validator + form.type_extension.upload.validator + form.type_extension.csrf + form.type_extension.form.data_collector + + + form.type_extension.repeated.validator + + + form.type_extension.submit.validator + + + + form.type_guesser.validator + form.type_guesser.doctrine + + + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + + + + + + + + + validators + + + + + true + _token + + validators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev + + + + + + + + + + + validator.expression + validator.expression + validator.email + security.validator.user_password + security.validator.user_password + doctrine.orm.validator.unique + doctrine.orm.validator.unique + + + + + + + + + validators + + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml + + + + + + + loadValidatorMetadata + + + + + + + + + + + + + + false + + + + + /_fragment + + + + + + file:/home/c2i/git/Symphony_S_A/var/cache/dev/profiler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + false + false + + + + + + + + + + + + + + + + + + false + + + + + null + + -1 + -1 + true + + true + + + + null + + /home/c2i/git/Symphony_S_A + /_profiler/open?file=%%f&line=%%l#line%%l + + + + + + + + + + + + kernel.controller + + data_collector.router + onKernelController + + 0 + + + response_listener + Symfony\Component\HttpKernel\EventListener\ResponseListener + + + streamed_response_listener + Symfony\Component\HttpKernel\EventListener\StreamedResponseListener + + + locale_listener + Symfony\Component\HttpKernel\EventListener\LocaleListener + + + validate_request_listener + Symfony\Component\HttpKernel\EventListener\ValidateRequestListener + + + translator_listener + Symfony\Component\HttpKernel\EventListener\TranslatorListener + + + session_listener + Symfony\Bundle\FrameworkBundle\EventListener\SessionListener + + + session.save_listener + Symfony\Component\HttpKernel\EventListener\SaveSessionListener + + + fragment.listener + Symfony\Component\HttpKernel\EventListener\FragmentListener + + + profiler_listener + Symfony\Component\HttpKernel\EventListener\ProfilerListener + + + data_collector.request + Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector + + + debug.debug_handlers_listener + Symfony\Component\HttpKernel\EventListener\DebugHandlersListener + + + router_listener + Symfony\Component\HttpKernel\EventListener\RouterListener + + + security.firewall + Symfony\Component\Security\Http\Firewall + + + security.rememberme.response_listener + Symfony\Component\Security\Http\RememberMe\ResponseListener + + + twig.exception_listener + Symfony\Component\HttpKernel\EventListener\ExceptionListener + + + monolog.handler.console + Symfony\Bridge\Monolog\Handler\ConsoleHandler + + + swiftmailer.email_sender.listener + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + + + sensio_framework_extra.controller.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + + + sensio_framework_extra.converter.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + + + sensio_framework_extra.view.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + + + sensio_framework_extra.cache.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener + + + sensio_framework_extra.security.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener + + + debug.dump_listener + Symfony\Component\HttpKernel\EventListener\DumpListener + + + web_profiler.debug_toolbar + Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GET + localhost + http + 80 + 443 + + + + + + + + + + + Doctrine\Common\Annotations\Reader + + + + + + false + + + + + + + 58c46f45a05e13.86720536 + + + + true + + + + + + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + + + + + + + + + + + + + + + + + ^/(_(profiler|wdt)|css|images|js)/ + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + affirmative + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + dev + security.user_checker + security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d + false + + + + + + + + + + + + + + + + + + + + + 80 + 443 + + + + + + + + + + + + + + main + + + + + + + + + 58c46f45a05e13.86720536 + + + + + + + + + + + + + + + + + + + + + + + + + + + main + null + null + null + + false + + + + + main + security.user_checker + null + true + false + security.user.provider.concrete.in_memory + main + null + null + null + + anonymous + + + + + + + + true + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + name + /home/c2i/git/Symphony_S_A/var/cache/dev/twig + UTF-8 + + + F j, Y H:i + %d days + null + + + 0 + . + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + twig.form.renderer + + + + + + + + + + + + + + + + + + + null + UTF-8 + 0 + + + + + + + + + + + + + + + + + null + UTF-8 + 1 + + + 4096 + + + + + + + + + + app + + + + dev + + + true + + + + + + + + + + + + + + + + twig.runtime.httpkernel + twig.form.renderer + + + + + + + + F j, Y H:i + %d days + null + 0 + . + , + + + + + + + + + + + + + + + + twig.controller.exception:showAction + + + + + true + + + + twig.controller.exception:showAction + + + + + + + form_div_layout.html.twig + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/logs/dev.log + 100 + true + null + + + + + + + null + true + + + + + + + + + + + + + + + + + + + + + + + + doctrine.dbal.default_connection + + + doctrine.orm.default_entity_manager + + default + default + + + + + pdo_mysql + 127.0.0.1 + null + symfony + root + null + UTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + loadClassMetadata + + + + + + + + + + + + + + + + + + + + + + + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + sf2orm_default_b406d40a8c80ace7c4cee519bfef0f6dd73c75a5070dc7655afe1a9340d2dedb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/doctrine/orm/Proxies + + + Proxies + + + true + + + Doctrine\ORM\Mapping\ClassMetadataFactory + + + Doctrine\ORM\EntityRepository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + 0 + doctrine.orm + + + + 0 + datetime + + + + + + + + + + + + + + + + + + + null + + + + + + + + + + + + + UTF-8 + + null + + + + + + + + + 2500 + + + -1 + + + + null + UTF-8 + 0 + + + + + + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + bottom + + /home/c2i/git/Symphony_S_A + + + + + + + + + + true + + + + + + + + + + false + 2 + bottom + + ^/(app(_[\w]+)?\.php/)?_wdt + + + + + + + + + request + + + + + + + + + + + + cache + + + + + + + + + + + + translation + + + + + + + + + + + + templating + + + + + + + + + + + + profiler + + + + + + + + + + + + php + + + + + + + + + + + + event + + + + + + + + + router + + + + + + + + + + + + security + + + + + + + + + + + + doctrine + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/sessions + MOCKSESSID + + + + /home/c2i/git/Symphony_S_A/app/../var/sessions/dev + + + + + + + + + Symfony\Component\Templating\EngineInterface + Symfony\Bundle\FrameworkBundle\Templating\EngineInterface + + + + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + + /home/c2i/git/Symphony_S_A/var/cache/dev + true + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + appDevDebugProjectContainerUrlGenerator + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appDevDebugProjectContainerUrlMatcher + true + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/dev/annotations.php + + + + + + + true + Doctrine\Common\Annotations\Reader + + + + + + + + + app + + + + + true + + + + + + + + Psr\Log\LoggerInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + null + + + null + + + + + + + 127.0.0.1 + + + 25 + + + null + + + 30 + + + null + + + + null + + + + + + + + + /home/c2i/git/Symphony_S_A + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views + Framework + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views + Security + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views + Twig + + + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views + Swiftmailer + + + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views + Doctrine + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views + Debug + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views + WebProfiler + + + /home/c2i/git/Symphony_S_A/app/Resources/views + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form + + + + + + + + + + + + + + + + + + + diff --git a/var/cache/dev/appDevDebugProjectContainerCompiler.log b/var/cache/dev/appDevDebugProjectContainerCompiler.log new file mode 100644 index 0000000000000000000000000000000000000000..ec731d77b559d78b4e2d3cce528a78fdc9436693 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerCompiler.log @@ -0,0 +1,456 @@ +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.app" (parent: cache.adapter.filesystem). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.system" (parent: cache.adapter.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.validator" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.serializer" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.annotations" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.simple_form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.persistent" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.simplehash" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.dev" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.main" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.main" (parent: security.authentication.listener.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.main" (parent: security.authentication.provider.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.main" (parent: security.exception_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.main" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.authhandler" (parent: swiftmailer.transport.authhandler.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.buffer" (parent: swiftmailer.transport.buffer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.transport.configurator.default" (parent: swiftmailer.transport.smtp.configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.smtp" (parent: swiftmailer.transport.smtp.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.spool.memory" (parent: swiftmailer.spool.memory.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.spool" (parent: swiftmailer.transport.spool.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.cache" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.property_accessor"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.choice_list_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "cache.default_redis_provider"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.user_checker.main"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "controller_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "argument_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.access.decision_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.native" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.php_bridge" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.runtime_loader" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.spool" to "swiftmailer.mailer.default.transport". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.debug_toolbar" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.password_encoder" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default.transport" previously pointing to "swiftmailer.mailer.default.spool.memory" to "swiftmailer.mailer.default.spool". +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.doctrine"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.filesystem"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.psr6"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.config"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.ldap"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.ldap_bind"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.predis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.sqlite3"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.void"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.mapping.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1" to "config_cache_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.property_access" to "property_accessor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1" to "form.resolved_type_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.default" to "form.choice_list_factory.property_access". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.property_access" to "form.choice_list_factory.cached". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.cached" to "form.type.choice". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1" to "validator.mapping.cache.symfony". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2" to "validator.mapping.cache.doctrine.apc". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.controller_resolver.inner" to "debug.controller_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.argument_resolver.inner" to "debug.argument_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.directory" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.service" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2" to "annotations.cache". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.main" to "security.authentication.manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.security.access.decision_manager.inner" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.simple_role_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.dev" to "security.firewall.map.context.dev". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.exception_listener.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.runtime_loader" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_iterator" to "twig.template_cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3" to "swiftmailer.mailer.default.transport.authhandler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.replacementfactory" to "swiftmailer.mailer.default.transport.buffer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.underscore" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_entity_manager.metadata_factory" to "doctrine.orm.default_entity_manager.property_info_extractor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "var_dumper.html_dumper" to "twig.extension.dump". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1" to "web_profiler.csp.handler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2" to "twig.extension.webprofiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_metadata_factory" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request_attribute" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user_value_resolver" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.default" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.variadic" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.buffer" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.authhandler" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.configurator.default" to "swiftmailer.mailer.default.transport.real". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request_attribute"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.variadic"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.serializer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.cached"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.symfony"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.doctrine.apc"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "c66c8daa4fa4dead6a562ed2c4bdb322"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.directory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.service"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.filesystem_cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_value_resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_checker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.simple_role_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.dev"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_iterator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.runtime_loader"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.logstash"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.authhandler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.buffer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.configurator.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_entity_manager.metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "var_dumper.html_dumper"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.controller_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.argument_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.security.access.decision_manager.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.validator" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.validator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "annotations.cached_reader" was defined on service(s) "annotation_reader", but was never used. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.list_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.type_extractor"? +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.type_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.list_extractor"? \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php new file mode 100644 index 0000000000000000000000000000000000000000..bce03a5ce9e04c37ef96db14a1625556c8dad799 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php @@ -0,0 +1,54 @@ +context = $context; + $this->logger = $logger; + if (null === self::$declaredRoutes) { + self::$declaredRoutes = array( + '_wdt' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_wdt', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_home' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:homeAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search_bar' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/search_bar', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_info' => array ( 0 => array ( 0 => 'about', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:infoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'about', ), 1 => array ( 0 => 'text', 1 => '/_profiler/info', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_phpinfo' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/phpinfo', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_search_results' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/search/results', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_open_file' => array ( 0 => array ( ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:openAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/_profiler/open', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.profiler:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 1 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_router' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.router:panelAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/router', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_exception' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:showAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_profiler_exception_css' => array ( 0 => array ( 0 => 'token', ), 1 => array ( '_controller' => 'web_profiler.controller.exception:cssAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/exception.css', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '[^/]++', 3 => 'token', ), 2 => array ( 0 => 'text', 1 => '/_profiler', ), ), 4 => array ( ), 5 => array ( ),), + '_twig_error_test' => array ( 0 => array ( 0 => 'code', 1 => '_format', ), 1 => array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html', ), 2 => array ( 'code' => '\\d+', ), 3 => array ( 0 => array ( 0 => 'variable', 1 => '.', 2 => '[^/]++', 3 => '_format', ), 1 => array ( 0 => 'variable', 1 => '/', 2 => '\\d+', 3 => 'code', ), 2 => array ( 0 => 'text', 1 => '/_error', ), ), 4 => array ( ), 5 => array ( ),), + 'homepage' => array ( 0 => array ( ), 1 => array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', ), 2 => array ( ), 3 => array ( 0 => array ( 0 => 'text', 1 => '/', ), ), 4 => array ( ), 5 => array ( ),), + ); + } + } + + public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) + { + if (!isset(self::$declaredRoutes[$name])) { + throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); + } + + list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name]; + + return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..5640883573cc03d78d99cc43b865bba7e8677068 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlGenerator.php.meta @@ -0,0 +1 @@ +a:7:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}} \ No newline at end of file diff --git a/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..4eaeb8048a06dd400e6429b788de24df8caf2674 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php @@ -0,0 +1,119 @@ +context = $context; + } + + public function match($pathinfo) + { + $allow = array(); + $pathinfo = rawurldecode($pathinfo); + $context = $this->context; + $request = $this->request; + + if (0 === strpos($pathinfo, '/_')) { + // _wdt + if (0 === strpos($pathinfo, '/_wdt') && preg_match('#^/_wdt/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_wdt')), array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction',)); + } + + if (0 === strpos($pathinfo, '/_profiler')) { + // _profiler_home + if (rtrim($pathinfo, '/') === '/_profiler') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', '_profiler_home'); + } + + return array ( '_controller' => 'web_profiler.controller.profiler:homeAction', '_route' => '_profiler_home',); + } + + if (0 === strpos($pathinfo, '/_profiler/search')) { + // _profiler_search + if ($pathinfo === '/_profiler/search') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchAction', '_route' => '_profiler_search',); + } + + // _profiler_search_bar + if ($pathinfo === '/_profiler/search_bar') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', '_route' => '_profiler_search_bar',); + } + + } + + // _profiler_info + if (0 === strpos($pathinfo, '/_profiler/info') && preg_match('#^/_profiler/info/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_info')), array ( '_controller' => 'web_profiler.controller.profiler:infoAction',)); + } + + // _profiler_phpinfo + if ($pathinfo === '/_profiler/phpinfo') { + return array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', '_route' => '_profiler_phpinfo',); + } + + // _profiler_search_results + if (preg_match('#^/_profiler/(?P[^/]++)/search/results$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_search_results')), array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction',)); + } + + // _profiler_open_file + if ($pathinfo === '/_profiler/open') { + return array ( '_controller' => 'web_profiler.controller.profiler:openAction', '_route' => '_profiler_open_file',); + } + + // _profiler + if (preg_match('#^/_profiler/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler')), array ( '_controller' => 'web_profiler.controller.profiler:panelAction',)); + } + + // _profiler_router + if (preg_match('#^/_profiler/(?P[^/]++)/router$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_router')), array ( '_controller' => 'web_profiler.controller.router:panelAction',)); + } + + // _profiler_exception + if (preg_match('#^/_profiler/(?P[^/]++)/exception$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception')), array ( '_controller' => 'web_profiler.controller.exception:showAction',)); + } + + // _profiler_exception_css + if (preg_match('#^/_profiler/(?P[^/]++)/exception\\.css$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception_css')), array ( '_controller' => 'web_profiler.controller.exception:cssAction',)); + } + + } + + // _twig_error_test + if (0 === strpos($pathinfo, '/_error') && preg_match('#^/_error/(?P\\d+)(?:\\.(?P<_format>[^/]++))?$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_twig_error_test')), array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html',)); + } + + } + + // homepage + if (rtrim($pathinfo, '/') === '') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', 'homepage'); + } + + return array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', '_route' => 'homepage',); + } + + throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException(); + } +} diff --git a/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..5640883573cc03d78d99cc43b865bba7e8677068 --- /dev/null +++ b/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php.meta @@ -0,0 +1 @@ +a:7:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}} \ No newline at end of file diff --git a/var/cache/dev/classes.map b/var/cache/dev/classes.map new file mode 100644 index 0000000000000000000000000000000000000000..98e32d3ef75db7b6035e55e577cb0022102f98ed --- /dev/null +++ b/var/cache/dev/classes.map @@ -0,0 +1,99 @@ + 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener', + 1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage', + 2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage', + 3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', + 4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy', + 5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy', + 6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session', + 8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables', + 9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference', + 10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser', + 11 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator', + 12 => 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', + 13 => 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', + 14 => 'Symfony\\Component\\Cache\\CacheItem', + 15 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 16 => 'Symfony\\Component\\Routing\\RequestContext', + 17 => 'Symfony\\Component\\Routing\\Router', + 18 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 19 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router', + 20 => 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter', + 21 => 'Symfony\\Component\\Cache\\DoctrineProvider', + 22 => 'Symfony\\Component\\Config\\ConfigCache', + 23 => 'Symfony\\Component\\Config\\FileLocator', + 24 => 'Symfony\\Component\\Debug\\ErrorHandler', + 25 => 'Symfony\\Component\\DependencyInjection\\ContainerAwareInterface', + 26 => 'Symfony\\Component\\DependencyInjection\\Container', + 27 => 'Symfony\\Component\\EventDispatcher\\Event', + 28 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher', + 29 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener', + 30 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener', + 31 => 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle', + 32 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver', + 33 => 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver', + 34 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata', + 35 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory', + 36 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent', + 37 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent', + 38 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent', + 39 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent', + 40 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent', + 41 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent', + 42 => 'Symfony\\Component\\HttpKernel\\HttpKernel', + 43 => 'Symfony\\Component\\HttpKernel\\KernelEvents', + 44 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator', + 45 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser', + 46 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver', + 47 => 'Symfony\\Component\\Security\\Http\\Firewall', + 48 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface', + 49 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager', + 50 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage', + 51 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager', + 52 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker', + 53 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface', + 54 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallConfig', + 55 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap', + 56 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext', + 57 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher', + 58 => 'Twig_Environment', + 59 => 'Twig_Extension', + 60 => 'Twig_Extension_Core', + 61 => 'Twig_Extension_Escaper', + 62 => 'Twig_Extension_Optimizer', + 63 => 'Twig_LoaderInterface', + 64 => 'Twig_Markup', + 65 => 'Twig_Template', + 66 => 'Monolog\\Formatter\\FormatterInterface', + 67 => 'Monolog\\Formatter\\LineFormatter', + 68 => 'Monolog\\Handler\\HandlerInterface', + 69 => 'Monolog\\Handler\\AbstractHandler', + 70 => 'Monolog\\Handler\\AbstractProcessingHandler', + 71 => 'Monolog\\Handler\\StreamHandler', + 72 => 'Monolog\\Handler\\FingersCrossedHandler', + 73 => 'Monolog\\Handler\\FilterHandler', + 74 => 'Monolog\\Handler\\TestHandler', + 75 => 'Monolog\\Logger', + 76 => 'Symfony\\Bridge\\Monolog\\Logger', + 77 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface', + 78 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy', + 79 => 'Doctrine\\Common\\Annotations\\DocLexer', + 80 => 'Doctrine\\Common\\Annotations\\FileCacheReader', + 81 => 'Doctrine\\Common\\Annotations\\PhpParser', + 82 => 'Doctrine\\Common\\Annotations\\Reader', + 83 => 'Doctrine\\Common\\Lexer', + 84 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry', + 85 => 'Doctrine\\Common\\Persistence\\Proxy', + 86 => 'Doctrine\\Common\\Util\\ClassUtils', + 87 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 88 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 89 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 90 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 91 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 92 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface', + 93 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 94 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 95 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener', + 96 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener', + 97 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation', +); \ No newline at end of file diff --git a/var/cache/dev/classes.php b/var/cache/dev/classes.php new file mode 100644 index 0000000000000000000000000000000000000000..4be33a5c40a3d61e2554b4f0cc39377c5dc561a4 --- /dev/null +++ b/var/cache/dev/classes.php @@ -0,0 +1,9764 @@ +isMasterRequest()) { +return; +} +$request = $event->getRequest(); +$session = $this->getSession(); +if (null === $session || $request->hasSession()) { +return; +} +$request->setSession($session); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array('onKernelRequest', 128), +); +} +abstract protected function getSession(); +} +} +namespace Symfony\Bundle\FrameworkBundle\EventListener +{ +use Symfony\Component\HttpKernel\EventListener\SessionListener as BaseSessionListener; +use Symfony\Component\DependencyInjection\ContainerInterface; +class SessionListener extends BaseSessionListener +{ +private $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +protected function getSession() +{ +if (!$this->container->has('session')) { +return; +} +return $this->container->get('session'); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\SessionBagInterface; +interface SessionStorageInterface +{ +public function start(); +public function isStarted(); +public function getId(); +public function setId($id); +public function getName(); +public function setName($name); +public function regenerate($destroy = false, $lifetime = null); +public function save(); +public function clear(); +public function getBag($name); +public function registerBag(SessionBagInterface $bag); +public function getMetadataBag(); +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\SessionBagInterface; +use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy; +class NativeSessionStorage implements SessionStorageInterface +{ +protected $bags; +protected $started = false; +protected $closed = false; +protected $saveHandler; +protected $metadataBag; +public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null) +{ +session_cache_limiter(''); ini_set('session.use_cookies', 1); +session_register_shutdown(); +$this->setMetadataBag($metaBag); +$this->setOptions($options); +$this->setSaveHandler($handler); +} +public function getSaveHandler() +{ +return $this->saveHandler; +} +public function start() +{ +if ($this->started) { +return true; +} +if (\PHP_SESSION_ACTIVE === session_status()) { +throw new \RuntimeException('Failed to start the session: already started by PHP.'); +} +if (ini_get('session.use_cookies') && headers_sent($file, $line)) { +throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)); +} +if (!session_start()) { +throw new \RuntimeException('Failed to start the session'); +} +$this->loadSession(); +return true; +} +public function getId() +{ +return $this->saveHandler->getId(); +} +public function setId($id) +{ +$this->saveHandler->setId($id); +} +public function getName() +{ +return $this->saveHandler->getName(); +} +public function setName($name) +{ +$this->saveHandler->setName($name); +} +public function regenerate($destroy = false, $lifetime = null) +{ +if (\PHP_SESSION_ACTIVE !== session_status()) { +return false; +} +if (null !== $lifetime) { +ini_set('session.cookie_lifetime', $lifetime); +} +if ($destroy) { +$this->metadataBag->stampNew(); +} +$isRegenerated = session_regenerate_id($destroy); +$this->loadSession(); +return $isRegenerated; +} +public function save() +{ +session_write_close(); +$this->closed = true; +$this->started = false; +} +public function clear() +{ +foreach ($this->bags as $bag) { +$bag->clear(); +} +$_SESSION = array(); +$this->loadSession(); +} +public function registerBag(SessionBagInterface $bag) +{ +if ($this->started) { +throw new \LogicException('Cannot register a bag when the session is already started.'); +} +$this->bags[$bag->getName()] = $bag; +} +public function getBag($name) +{ +if (!isset($this->bags[$name])) { +throw new \InvalidArgumentException(sprintf('The SessionBagInterface %s is not registered.', $name)); +} +if ($this->saveHandler->isActive() && !$this->started) { +$this->loadSession(); +} elseif (!$this->started) { +$this->start(); +} +return $this->bags[$name]; +} +public function setMetadataBag(MetadataBag $metaBag = null) +{ +if (null === $metaBag) { +$metaBag = new MetadataBag(); +} +$this->metadataBag = $metaBag; +} +public function getMetadataBag() +{ +return $this->metadataBag; +} +public function isStarted() +{ +return $this->started; +} +public function setOptions(array $options) +{ +$validOptions = array_flip(array('cache_limiter','cookie_domain','cookie_httponly','cookie_lifetime','cookie_path','cookie_secure','entropy_file','entropy_length','gc_divisor','gc_maxlifetime','gc_probability','hash_bits_per_character','hash_function','name','referer_check','serialize_handler','use_cookies','use_only_cookies','use_trans_sid','upload_progress.enabled','upload_progress.cleanup','upload_progress.prefix','upload_progress.name','upload_progress.freq','upload_progress.min-freq','url_rewriter.tags', +)); +foreach ($options as $key => $value) { +if (isset($validOptions[$key])) { +ini_set('session.'.$key, $value); +} +} +} +public function setSaveHandler($saveHandler = null) +{ +if (!$saveHandler instanceof AbstractProxy && +!$saveHandler instanceof NativeSessionHandler && +!$saveHandler instanceof \SessionHandlerInterface && +null !== $saveHandler) { +throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.'); +} +if (!$saveHandler instanceof AbstractProxy && $saveHandler instanceof \SessionHandlerInterface) { +$saveHandler = new SessionHandlerProxy($saveHandler); +} elseif (!$saveHandler instanceof AbstractProxy) { +$saveHandler = new SessionHandlerProxy(new \SessionHandler()); +} +$this->saveHandler = $saveHandler; +if ($this->saveHandler instanceof \SessionHandlerInterface) { +session_set_save_handler($this->saveHandler, false); +} +} +protected function loadSession(array &$session = null) +{ +if (null === $session) { +$session = &$_SESSION; +} +$bags = array_merge($this->bags, array($this->metadataBag)); +foreach ($bags as $bag) { +$key = $bag->getStorageKey(); +$session[$key] = isset($session[$key]) ? $session[$key] : array(); +$bag->initialize($session[$key]); +} +$this->started = true; +$this->closed = false; +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage +{ +use Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy; +use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeSessionHandler; +class PhpBridgeSessionStorage extends NativeSessionStorage +{ +public function __construct($handler = null, MetadataBag $metaBag = null) +{ +$this->setMetadataBag($metaBag); +$this->setSaveHandler($handler); +} +public function start() +{ +if ($this->started) { +return true; +} +$this->loadSession(); +return true; +} +public function clear() +{ +foreach ($this->bags as $bag) { +$bag->clear(); +} +$this->loadSession(); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler +{ +class NativeSessionHandler extends \SessionHandler +{ +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Handler +{ +class NativeFileSessionHandler extends NativeSessionHandler +{ +public function __construct($savePath = null) +{ +if (null === $savePath) { +$savePath = ini_get('session.save_path'); +} +$baseDir = $savePath; +if ($count = substr_count($savePath,';')) { +if ($count > 2) { +throw new \InvalidArgumentException(sprintf('Invalid argument $savePath \'%s\'', $savePath)); +} +$baseDir = ltrim(strrchr($savePath,';'),';'); +} +if ($baseDir && !is_dir($baseDir) && !@mkdir($baseDir, 0777, true) && !is_dir($baseDir)) { +throw new \RuntimeException(sprintf('Session Storage was not able to create directory "%s"', $baseDir)); +} +ini_set('session.save_path', $savePath); +ini_set('session.save_handler','files'); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy +{ +abstract class AbstractProxy +{ +protected $wrapper = false; +protected $saveHandlerName; +public function getSaveHandlerName() +{ +return $this->saveHandlerName; +} +public function isSessionHandlerInterface() +{ +return $this instanceof \SessionHandlerInterface; +} +public function isWrapper() +{ +return $this->wrapper; +} +public function isActive() +{ +return \PHP_SESSION_ACTIVE === session_status(); +} +public function getId() +{ +return session_id(); +} +public function setId($id) +{ +if ($this->isActive()) { +throw new \LogicException('Cannot change the ID of an active session'); +} +session_id($id); +} +public function getName() +{ +return session_name(); +} +public function setName($name) +{ +if ($this->isActive()) { +throw new \LogicException('Cannot change the name of an active session'); +} +session_name($name); +} +} +} +namespace Symfony\Component\HttpFoundation\Session\Storage\Proxy +{ +class SessionHandlerProxy extends AbstractProxy implements \SessionHandlerInterface +{ +protected $handler; +public function __construct(\SessionHandlerInterface $handler) +{ +$this->handler = $handler; +$this->wrapper = ($handler instanceof \SessionHandler); +$this->saveHandlerName = $this->wrapper ? ini_get('session.save_handler') :'user'; +} +public function open($savePath, $sessionName) +{ +return (bool) $this->handler->open($savePath, $sessionName); +} +public function close() +{ +return (bool) $this->handler->close(); +} +public function read($sessionId) +{ +return (string) $this->handler->read($sessionId); +} +public function write($sessionId, $data) +{ +return (bool) $this->handler->write($sessionId, $data); +} +public function destroy($sessionId) +{ +return (bool) $this->handler->destroy($sessionId); +} +public function gc($maxlifetime) +{ +return (bool) $this->handler->gc($maxlifetime); +} +} +} +namespace Symfony\Component\HttpFoundation\Session +{ +use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; +interface SessionInterface +{ +public function start(); +public function getId(); +public function setId($id); +public function getName(); +public function setName($name); +public function invalidate($lifetime = null); +public function migrate($destroy = false, $lifetime = null); +public function save(); +public function has($name); +public function get($name, $default = null); +public function set($name, $value); +public function all(); +public function replace(array $attributes); +public function remove($name); +public function clear(); +public function isStarted(); +public function registerBag(SessionBagInterface $bag); +public function getBag($name); +public function getMetadataBag(); +} +} +namespace Symfony\Component\HttpFoundation\Session +{ +use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface; +use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag; +use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBag; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; +use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; +class Session implements SessionInterface, \IteratorAggregate, \Countable +{ +protected $storage; +private $flashName; +private $attributeName; +public function __construct(SessionStorageInterface $storage = null, AttributeBagInterface $attributes = null, FlashBagInterface $flashes = null) +{ +$this->storage = $storage ?: new NativeSessionStorage(); +$attributes = $attributes ?: new AttributeBag(); +$this->attributeName = $attributes->getName(); +$this->registerBag($attributes); +$flashes = $flashes ?: new FlashBag(); +$this->flashName = $flashes->getName(); +$this->registerBag($flashes); +} +public function start() +{ +return $this->storage->start(); +} +public function has($name) +{ +return $this->storage->getBag($this->attributeName)->has($name); +} +public function get($name, $default = null) +{ +return $this->storage->getBag($this->attributeName)->get($name, $default); +} +public function set($name, $value) +{ +$this->storage->getBag($this->attributeName)->set($name, $value); +} +public function all() +{ +return $this->storage->getBag($this->attributeName)->all(); +} +public function replace(array $attributes) +{ +$this->storage->getBag($this->attributeName)->replace($attributes); +} +public function remove($name) +{ +return $this->storage->getBag($this->attributeName)->remove($name); +} +public function clear() +{ +$this->storage->getBag($this->attributeName)->clear(); +} +public function isStarted() +{ +return $this->storage->isStarted(); +} +public function getIterator() +{ +return new \ArrayIterator($this->storage->getBag($this->attributeName)->all()); +} +public function count() +{ +return count($this->storage->getBag($this->attributeName)->all()); +} +public function invalidate($lifetime = null) +{ +$this->storage->clear(); +return $this->migrate(true, $lifetime); +} +public function migrate($destroy = false, $lifetime = null) +{ +return $this->storage->regenerate($destroy, $lifetime); +} +public function save() +{ +$this->storage->save(); +} +public function getId() +{ +return $this->storage->getId(); +} +public function setId($id) +{ +$this->storage->setId($id); +} +public function getName() +{ +return $this->storage->getName(); +} +public function setName($name) +{ +$this->storage->setName($name); +} +public function getMetadataBag() +{ +return $this->storage->getMetadataBag(); +} +public function registerBag(SessionBagInterface $bag) +{ +$this->storage->registerBag($bag); +} +public function getBag($name) +{ +return $this->storage->getBag($name); +} +public function getFlashBag() +{ +return $this->getBag($this->flashName); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Session\Session; +class GlobalVariables +{ +protected $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function getUser() +{ +if (!$this->container->has('security.token_storage')) { +return; +} +$tokenStorage = $this->container->get('security.token_storage'); +if (!$token = $tokenStorage->getToken()) { +return; +} +$user = $token->getUser(); +if (!is_object($user)) { +return; +} +return $user; +} +public function getRequest() +{ +if ($this->container->has('request_stack')) { +return $this->container->get('request_stack')->getCurrentRequest(); +} +} +public function getSession() +{ +if ($request = $this->getRequest()) { +return $request->getSession(); +} +} +public function getEnvironment() +{ +return $this->container->getParameter('kernel.environment'); +} +public function getDebug() +{ +return (bool) $this->container->getParameter('kernel.debug'); +} +} +} +namespace Symfony\Component\Templating +{ +interface TemplateReferenceInterface +{ +public function all(); +public function set($name, $value); +public function get($name); +public function getPath(); +public function getLogicalName(); +public function __toString(); +} +} +namespace Symfony\Component\Templating +{ +class TemplateReference implements TemplateReferenceInterface +{ +protected $parameters; +public function __construct($name = null, $engine = null) +{ +$this->parameters = array('name'=> $name,'engine'=> $engine, +); +} +public function __toString() +{ +return $this->getLogicalName(); +} +public function set($name, $value) +{ +if (array_key_exists($name, $this->parameters)) { +$this->parameters[$name] = $value; +} else { +throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); +} +return $this; +} +public function get($name) +{ +if (array_key_exists($name, $this->parameters)) { +return $this->parameters[$name]; +} +throw new \InvalidArgumentException(sprintf('The template does not support the "%s" parameter.', $name)); +} +public function all() +{ +return $this->parameters; +} +public function getPath() +{ +return $this->parameters['name']; +} +public function getLogicalName() +{ +return $this->parameters['name']; +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\Templating\TemplateReference as BaseTemplateReference; +class TemplateReference extends BaseTemplateReference +{ +public function __construct($bundle = null, $controller = null, $name = null, $format = null, $engine = null) +{ +$this->parameters = array('bundle'=> $bundle,'controller'=> $controller,'name'=> $name,'format'=> $format,'engine'=> $engine, +); +} +public function getPath() +{ +$controller = str_replace('\\','/', $this->get('controller')); +$path = (empty($controller) ?'': $controller.'/').$this->get('name').'.'.$this->get('format').'.'.$this->get('engine'); +return empty($this->parameters['bundle']) ?'views/'.$path :'@'.$this->get('bundle').'/Resources/views/'.$path; +} +public function getLogicalName() +{ +return sprintf('%s:%s:%s.%s.%s', $this->parameters['bundle'], $this->parameters['controller'], $this->parameters['name'], $this->parameters['format'], $this->parameters['engine']); +} +} +} +namespace Symfony\Component\Templating +{ +interface TemplateNameParserInterface +{ +public function parse($name); +} +} +namespace Symfony\Component\Templating +{ +class TemplateNameParser implements TemplateNameParserInterface +{ +public function parse($name) +{ +if ($name instanceof TemplateReferenceInterface) { +return $name; +} +$engine = null; +if (false !== $pos = strrpos($name,'.')) { +$engine = substr($name, $pos + 1); +} +return new TemplateReference($name, $engine); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating +{ +use Symfony\Component\Templating\TemplateReferenceInterface; +use Symfony\Component\HttpKernel\KernelInterface; +use Symfony\Component\Templating\TemplateNameParser as BaseTemplateNameParser; +class TemplateNameParser extends BaseTemplateNameParser +{ +protected $kernel; +protected $cache = array(); +public function __construct(KernelInterface $kernel) +{ +$this->kernel = $kernel; +} +public function parse($name) +{ +if ($name instanceof TemplateReferenceInterface) { +return $name; +} elseif (isset($this->cache[$name])) { +return $this->cache[$name]; +} +$name = str_replace(':/',':', preg_replace('#/{2,}#','/', str_replace('\\','/', $name))); +if (false !== strpos($name,'..')) { +throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name)); +} +if ($this->isAbsolutePath($name) || !preg_match('/^(?:([^:]*):([^:]*):)?(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches) || 0 === strpos($name,'@')) { +return parent::parse($name); +} +$template = new TemplateReference($matches[1], $matches[2], $matches[3], $matches[4], $matches[5]); +if ($template->get('bundle')) { +try { +$this->kernel->getBundle($template->get('bundle')); +} catch (\Exception $e) { +throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e); +} +} +return $this->cache[$name] = $template; +} +private function isAbsolutePath($file) +{ +$isAbsolute = (bool) preg_match('#^(?:/|[a-zA-Z]:)#', $file); +if ($isAbsolute) { +@trigger_error('Absolute template path support is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); +} +return $isAbsolute; +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Exception\FileLocatorFileNotFoundException; +interface FileLocatorInterface +{ +public function locate($name, $currentPath = null, $first = true); +} +} +namespace Symfony\Bundle\FrameworkBundle\Templating\Loader +{ +use Symfony\Component\Config\FileLocatorInterface; +use Symfony\Component\Templating\TemplateReferenceInterface; +class TemplateLocator implements FileLocatorInterface +{ +protected $locator; +protected $cache; +private $cacheHits = array(); +public function __construct(FileLocatorInterface $locator, $cacheDir = null) +{ +if (null !== $cacheDir && file_exists($cache = $cacheDir.'/templates.php')) { +$this->cache = require $cache; +} +$this->locator = $locator; +} +protected function getCacheKey($template) +{ +return $template->getLogicalName(); +} +public function locate($template, $currentPath = null, $first = true) +{ +if (!$template instanceof TemplateReferenceInterface) { +throw new \InvalidArgumentException('The template must be an instance of TemplateReferenceInterface.'); +} +$key = $this->getCacheKey($template); +if (isset($this->cacheHits[$key])) { +return $this->cacheHits[$key]; +} +if (isset($this->cache[$key])) { +return $this->cacheHits[$key] = realpath($this->cache[$key]) ?: $this->cache[$key]; +} +try { +return $this->cacheHits[$key] = $this->locator->locate($template->getPath(), $currentPath); +} catch (\InvalidArgumentException $e) { +throw new \InvalidArgumentException(sprintf('Unable to find template "%s" : "%s".', $template, $e->getMessage()), 0, $e); +} +} +} +} +namespace Psr\Log +{ +interface LoggerAwareInterface +{ +public function setLogger(LoggerInterface $logger); +} +} +namespace Psr\Cache +{ +interface CacheItemPoolInterface +{ +public function getItem($key); +public function getItems(array $keys = array()); +public function hasItem($key); +public function clear(); +public function deleteItem($key); +public function deleteItems(array $keys); +public function save(CacheItemInterface $item); +public function saveDeferred(CacheItemInterface $item); +public function commit(); +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Cache\CacheItem; +interface AdapterInterface extends CacheItemPoolInterface +{ +public function getItem($key); +public function getItems(array $keys = array()); +} +} +namespace Psr\Log +{ +trait LoggerAwareTrait +{ +protected $logger; +public function setLogger(LoggerInterface $logger) +{ +$this->logger = $logger; +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemInterface; +use Psr\Log\LoggerAwareInterface; +use Psr\Log\LoggerAwareTrait; +use Psr\Log\LoggerInterface; +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +abstract class AbstractAdapter implements AdapterInterface, LoggerAwareInterface +{ +use LoggerAwareTrait; +private static $apcuSupported; +private static $phpFilesSupported; +private $namespace; +private $deferred = array(); +private $createCacheItem; +private $mergeByLifetime; +protected $maxIdLength; +protected function __construct($namespace ='', $defaultLifetime = 0) +{ +$this->namespace =''=== $namespace ?'': $this->getId($namespace).':'; +if (null !== $this->maxIdLength && strlen($namespace) > $this->maxIdLength - 24) { +throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s")', $this->maxIdLength - 24, strlen($namespace), $namespace)); +} +$this->createCacheItem = \Closure::bind( +function ($key, $value, $isHit) use ($defaultLifetime) { +$item = new CacheItem(); +$item->key = $key; +$item->value = $value; +$item->isHit = $isHit; +$item->defaultLifetime = $defaultLifetime; +return $item; +}, +null, +CacheItem::class +); +$this->mergeByLifetime = \Closure::bind( +function ($deferred, $namespace, &$expiredIds) { +$byLifetime = array(); +$now = time(); +$expiredIds = array(); +foreach ($deferred as $key => $item) { +if (null === $item->expiry) { +$byLifetime[0 < $item->defaultLifetime ? $item->defaultLifetime : 0][$namespace.$key] = $item->value; +} elseif ($item->expiry > $now) { +$byLifetime[$item->expiry - $now][$namespace.$key] = $item->value; +} else { +$expiredIds[] = $namespace.$key; +} +} +return $byLifetime; +}, +null, +CacheItem::class +); +} +public static function createSystemCache($namespace, $defaultLifetime, $version, $directory, LoggerInterface $logger = null) +{ +if (null === self::$apcuSupported) { +self::$apcuSupported = ApcuAdapter::isSupported(); +} +if (!self::$apcuSupported && null === self::$phpFilesSupported) { +self::$phpFilesSupported = PhpFilesAdapter::isSupported(); +} +if (self::$phpFilesSupported) { +$opcache = new PhpFilesAdapter($namespace, $defaultLifetime, $directory); +if (null !== $logger) { +$opcache->setLogger($logger); +} +return $opcache; +} +$fs = new FilesystemAdapter($namespace, $defaultLifetime, $directory); +if (null !== $logger) { +$fs->setLogger($logger); +} +if (!self::$apcuSupported) { +return $fs; +} +$apcu = new ApcuAdapter($namespace, (int) $defaultLifetime / 5, $version); +if (null !== $logger) { +$apcu->setLogger($logger); +} +return new ChainAdapter(array($apcu, $fs)); +} +abstract protected function doFetch(array $ids); +abstract protected function doHave($id); +abstract protected function doClear($namespace); +abstract protected function doDelete(array $ids); +abstract protected function doSave(array $values, $lifetime); +public function getItem($key) +{ +if ($this->deferred) { +$this->commit(); +} +$id = $this->getId($key); +$f = $this->createCacheItem; +$isHit = false; +$value = null; +try { +foreach ($this->doFetch(array($id)) as $value) { +$isHit = true; +} +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch key "{key}"', array('key'=> $key,'exception'=> $e)); +} +return $f($key, $value, $isHit); +} +public function getItems(array $keys = array()) +{ +if ($this->deferred) { +$this->commit(); +} +$ids = array(); +foreach ($keys as $key) { +$ids[] = $this->getId($key); +} +try { +$items = $this->doFetch($ids); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch requested items', array('keys'=> $keys,'exception'=> $e)); +$items = array(); +} +$ids = array_combine($ids, $keys); +return $this->generateItems($items, $ids); +} +public function hasItem($key) +{ +$id = $this->getId($key); +if (isset($this->deferred[$key])) { +$this->commit(); +} +try { +return $this->doHave($id); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to check if key "{key}" is cached', array('key'=> $key,'exception'=> $e)); +return false; +} +} +public function clear() +{ +$this->deferred = array(); +try { +return $this->doClear($this->namespace); +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to clear the cache', array('exception'=> $e)); +return false; +} +} +public function deleteItem($key) +{ +return $this->deleteItems(array($key)); +} +public function deleteItems(array $keys) +{ +$ids = array(); +foreach ($keys as $key) { +$ids[$key] = $this->getId($key); +unset($this->deferred[$key]); +} +try { +if ($this->doDelete($ids)) { +return true; +} +} catch (\Exception $e) { +} +$ok = true; +foreach ($ids as $key => $id) { +try { +$e = null; +if ($this->doDelete(array($id))) { +continue; +} +} catch (\Exception $e) { +} +CacheItem::log($this->logger,'Failed to delete key "{key}"', array('key'=> $key,'exception'=> $e)); +$ok = false; +} +return $ok; +} +public function save(CacheItemInterface $item) +{ +if (!$item instanceof CacheItem) { +return false; +} +$this->deferred[$item->getKey()] = $item; +return $this->commit(); +} +public function saveDeferred(CacheItemInterface $item) +{ +if (!$item instanceof CacheItem) { +return false; +} +$this->deferred[$item->getKey()] = $item; +return true; +} +public function commit() +{ +$ok = true; +$byLifetime = $this->mergeByLifetime; +$byLifetime = $byLifetime($this->deferred, $this->namespace, $expiredIds); +$retry = $this->deferred = array(); +if ($expiredIds) { +$this->doDelete($expiredIds); +} +foreach ($byLifetime as $lifetime => $values) { +try { +$e = $this->doSave($values, $lifetime); +} catch (\Exception $e) { +} +if (true === $e || array() === $e) { +continue; +} +if (is_array($e) || 1 === count($values)) { +foreach (is_array($e) ? $e : array_keys($values) as $id) { +$ok = false; +$v = $values[$id]; +$type = is_object($v) ? get_class($v) : gettype($v); +CacheItem::log($this->logger,'Failed to save key "{key}" ({type})', array('key'=> substr($id, strlen($this->namespace)),'type'=> $type,'exception'=> $e instanceof \Exception ? $e : null)); +} +} else { +foreach ($values as $id => $v) { +$retry[$lifetime][] = $id; +} +} +} +foreach ($retry as $lifetime => $ids) { +foreach ($ids as $id) { +try { +$v = $byLifetime[$lifetime][$id]; +$e = $this->doSave(array($id => $v), $lifetime); +} catch (\Exception $e) { +} +if (true === $e || array() === $e) { +continue; +} +$ok = false; +$type = is_object($v) ? get_class($v) : gettype($v); +CacheItem::log($this->logger,'Failed to save key "{key}" ({type})', array('key'=> substr($id, strlen($this->namespace)),'type'=> $type,'exception'=> $e instanceof \Exception ? $e : null)); +} +} +return $ok; +} +public function __destruct() +{ +if ($this->deferred) { +$this->commit(); +} +} +protected static function unserialize($value) +{ +if ('b:0;'=== $value) { +return false; +} +$unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback'); +try { +if (false !== $value = unserialize($value)) { +return $value; +} +throw new \DomainException('Failed to unserialize cached value'); +} catch (\Error $e) { +throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); +} finally { +ini_set('unserialize_callback_func', $unserializeCallbackHandler); +} +} +private function getId($key) +{ +CacheItem::validateKey($key); +if (null === $this->maxIdLength) { +return $this->namespace.$key; +} +if (strlen($id = $this->namespace.$key) > $this->maxIdLength) { +$id = $this->namespace.substr_replace(base64_encode(hash('sha256', $key, true)),':', -22); +} +return $id; +} +private function generateItems($items, &$keys) +{ +$f = $this->createCacheItem; +try { +foreach ($items as $id => $value) { +$key = $keys[$id]; +unset($keys[$id]); +yield $key => $f($key, $value, true); +} +} catch (\Exception $e) { +CacheItem::log($this->logger,'Failed to fetch requested items', array('keys'=> array_values($keys),'exception'=> $e)); +} +foreach ($keys as $key) { +yield $key => $f($key, null, false); +} +} +public static function handleUnserializeCallback($class) +{ +throw new \DomainException('Class not found: '.$class); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\CacheException; +class ApcuAdapter extends AbstractAdapter +{ +public static function isSupported() +{ +return function_exists('apcu_fetch') && ini_get('apc.enabled') && !('cli'=== PHP_SAPI && !ini_get('apc.enable_cli')); +} +public function __construct($namespace ='', $defaultLifetime = 0, $version = null) +{ +if (!static::isSupported()) { +throw new CacheException('APCu is not enabled'); +} +if ('cli'=== PHP_SAPI) { +ini_set('apc.use_request_time', 0); +} +parent::__construct($namespace, $defaultLifetime); +if (null !== $version) { +CacheItem::validateKey($version); +if (!apcu_exists($version.'@'.$namespace)) { +$this->doClear($namespace); +apcu_add($version.'@'.$namespace, null); +} +} +} +protected function doFetch(array $ids) +{ +try { +return apcu_fetch($ids); +} catch (\Error $e) { +throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine()); +} +} +protected function doHave($id) +{ +return apcu_exists($id); +} +protected function doClear($namespace) +{ +return isset($namespace[0]) && class_exists('APCuIterator', false) +? apcu_delete(new \APCuIterator(sprintf('/^%s/', preg_quote($namespace,'/')), APC_ITER_KEY)) +: apcu_clear_cache(); +} +protected function doDelete(array $ids) +{ +foreach ($ids as $id) { +apcu_delete($id); +} +return true; +} +protected function doSave(array $values, $lifetime) +{ +try { +return array_keys(apcu_store($values, null, $lifetime)); +} catch (\Error $e) { +} catch (\Exception $e) { +} +if (1 === count($values)) { +apcu_delete(key($values)); +} +throw $e; +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\Exception\InvalidArgumentException; +trait FilesystemAdapterTrait +{ +private $directory; +private $tmp; +private function init($namespace, $directory) +{ +if (!isset($directory[0])) { +$directory = sys_get_temp_dir().'/symfony-cache'; +} +if (isset($namespace[0])) { +if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) { +throw new InvalidArgumentException(sprintf('Namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0])); +} +$directory .='/'.$namespace; +} +if (!file_exists($dir = $directory.'/.')) { +@mkdir($directory, 0777, true); +} +if (false === $dir = realpath($dir) ?: (file_exists($dir) ? $dir : false)) { +throw new InvalidArgumentException(sprintf('Cache directory does not exist (%s)', $directory)); +} +$dir .= DIRECTORY_SEPARATOR; +if ('\\'=== DIRECTORY_SEPARATOR && strlen($dir) > 234) { +throw new InvalidArgumentException(sprintf('Cache directory too long (%s)', $directory)); +} +$this->directory = $dir; +$this->tmp = $this->directory.uniqid('', true); +} +protected function doClear($namespace) +{ +$ok = true; +foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS)) as $file) { +$ok = ($file->isDir() || @unlink($file) || !file_exists($file)) && $ok; +} +return $ok; +} +protected function doDelete(array $ids) +{ +$ok = true; +foreach ($ids as $id) { +$file = $this->getFile($id); +$ok = (!file_exists($file) || @unlink($file) || !file_exists($file)) && $ok; +} +return $ok; +} +private function write($file, $data, $expiresAt = null) +{ +if (false === @file_put_contents($this->tmp, $data)) { +return false; +} +if (null !== $expiresAt) { +@touch($this->tmp, $expiresAt); +} +if (@rename($this->tmp, $file)) { +return true; +} +@unlink($this->tmp); +return false; +} +private function getFile($id, $mkdir = false) +{ +$hash = str_replace('/','-', base64_encode(hash('sha256', static::class.$id, true))); +$dir = $this->directory.strtoupper($hash[0].DIRECTORY_SEPARATOR.$hash[1].DIRECTORY_SEPARATOR); +if ($mkdir && !file_exists($dir)) { +@mkdir($dir, 0777, true); +} +return $dir.substr($hash, 2, 20); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Symfony\Component\Cache\Exception\CacheException; +class FilesystemAdapter extends AbstractAdapter +{ +use FilesystemAdapterTrait; +public function __construct($namespace ='', $defaultLifetime = 0, $directory = null) +{ +parent::__construct('', $defaultLifetime); +$this->init($namespace, $directory); +} +protected function doFetch(array $ids) +{ +$values = array(); +$now = time(); +foreach ($ids as $id) { +$file = $this->getFile($id); +if (!file_exists($file) || !$h = @fopen($file,'rb')) { +continue; +} +if ($now >= (int) $expiresAt = fgets($h)) { +fclose($h); +if (isset($expiresAt[0])) { +@unlink($file); +} +} else { +$i = rawurldecode(rtrim(fgets($h))); +$value = stream_get_contents($h); +fclose($h); +if ($i === $id) { +$values[$id] = parent::unserialize($value); +} +} +} +return $values; +} +protected function doHave($id) +{ +$file = $this->getFile($id); +return file_exists($file) && (@filemtime($file) > time() || $this->doFetch(array($id))); +} +protected function doSave(array $values, $lifetime) +{ +$ok = true; +$expiresAt = time() + ($lifetime ?: 31557600); +foreach ($values as $id => $value) { +$ok = $this->write($this->getFile($id, true), $expiresAt."\n".rawurlencode($id)."\n".serialize($value), $expiresAt) && $ok; +} +if (!$ok && !is_writable($this->directory)) { +throw new CacheException(sprintf('Cache directory is not writable (%s)', $this->directory)); +} +return $ok; +} +} +} +namespace Psr\Cache +{ +interface CacheItemInterface +{ +public function getKey(); +public function get(); +public function isHit(); +public function set($value); +public function expiresAt($expiration); +public function expiresAfter($time); +} +} +namespace Symfony\Component\Cache +{ +use Psr\Cache\CacheItemInterface; +use Psr\Log\LoggerInterface; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +final class CacheItem implements CacheItemInterface +{ +protected $key; +protected $value; +protected $isHit; +protected $expiry; +protected $defaultLifetime; +protected $tags = array(); +protected $innerItem; +protected $poolHash; +public function getKey() +{ +return $this->key; +} +public function get() +{ +return $this->value; +} +public function isHit() +{ +return $this->isHit; +} +public function set($value) +{ +$this->value = $value; +return $this; +} +public function expiresAt($expiration) +{ +if (null === $expiration) { +$this->expiry = $this->defaultLifetime > 0 ? time() + $this->defaultLifetime : null; +} elseif ($expiration instanceof \DateTimeInterface) { +$this->expiry = (int) $expiration->format('U'); +} else { +throw new InvalidArgumentException(sprintf('Expiration date must implement DateTimeInterface or be null, "%s" given', is_object($expiration) ? get_class($expiration) : gettype($expiration))); +} +return $this; +} +public function expiresAfter($time) +{ +if (null === $time) { +$this->expiry = $this->defaultLifetime > 0 ? time() + $this->defaultLifetime : null; +} elseif ($time instanceof \DateInterval) { +$this->expiry = (int) \DateTime::createFromFormat('U', time())->add($time)->format('U'); +} elseif (is_int($time)) { +$this->expiry = $time + time(); +} else { +throw new InvalidArgumentException(sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given', is_object($time) ? get_class($time) : gettype($time))); +} +return $this; +} +public function tag($tags) +{ +if (!is_array($tags)) { +$tags = array($tags); +} +foreach ($tags as $tag) { +if (!is_string($tag)) { +throw new InvalidArgumentException(sprintf('Cache tag must be string, "%s" given', is_object($tag) ? get_class($tag) : gettype($tag))); +} +if (isset($this->tags[$tag])) { +continue; +} +if (!isset($tag[0])) { +throw new InvalidArgumentException('Cache tag length must be greater than zero'); +} +if (false !== strpbrk($tag,'{}()/\@:')) { +throw new InvalidArgumentException(sprintf('Cache tag "%s" contains reserved characters {}()/\@:', $tag)); +} +$this->tags[$tag] = $tag; +} +return $this; +} +public static function validateKey($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given', is_object($key) ? get_class($key) : gettype($key))); +} +if (!isset($key[0])) { +throw new InvalidArgumentException('Cache key length must be greater than zero'); +} +if (false !== strpbrk($key,'{}()/\@:')) { +throw new InvalidArgumentException(sprintf('Cache key "%s" contains reserved characters {}()/\@:', $key)); +} +} +public static function log(LoggerInterface $logger = null, $message, $context = array()) +{ +if ($logger) { +$logger->warning($message, $context); +} else { +$replace = array(); +foreach ($context as $k => $v) { +if (is_scalar($v)) { +$replace['{'.$k.'}'] = $v; +} +} +@trigger_error(strtr($message, $replace), E_USER_WARNING); +} +} +} +} +namespace Symfony\Component\Routing +{ +interface RequestContextAwareInterface +{ +public function setContext(RequestContext $context); +public function getContext(); +} +} +namespace Symfony\Component\Routing\Generator +{ +use Symfony\Component\Routing\Exception\InvalidParameterException; +use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; +use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\RequestContextAwareInterface; +interface UrlGeneratorInterface extends RequestContextAwareInterface +{ +const ABSOLUTE_URL = 0; +const ABSOLUTE_PATH = 1; +const RELATIVE_PATH = 2; +const NETWORK_PATH = 3; +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH); +} +} +namespace Symfony\Component\Routing\Generator +{ +interface ConfigurableRequirementsInterface +{ +public function setStrictRequirements($enabled); +public function isStrictRequirements(); +} +} +namespace Symfony\Component\Routing\Generator +{ +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\Exception\InvalidParameterException; +use Symfony\Component\Routing\Exception\RouteNotFoundException; +use Symfony\Component\Routing\Exception\MissingMandatoryParametersException; +use Psr\Log\LoggerInterface; +class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInterface +{ +protected $routes; +protected $context; +protected $strictRequirements = true; +protected $logger; +protected $decodedChars = array('%2F'=>'/','%40'=>'@','%3A'=>':','%3B'=>';','%2C'=>',','%3D'=>'=','%2B'=>'+','%21'=>'!','%2A'=>'*','%7C'=>'|', +); +public function __construct(RouteCollection $routes, RequestContext $context, LoggerInterface $logger = null) +{ +$this->routes = $routes; +$this->context = $context; +$this->logger = $logger; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +} +public function getContext() +{ +return $this->context; +} +public function setStrictRequirements($enabled) +{ +$this->strictRequirements = null === $enabled ? null : (bool) $enabled; +} +public function isStrictRequirements() +{ +return $this->strictRequirements; +} +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) +{ +if (null === $route = $this->routes->get($name)) { +throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name)); +} +$compiledRoute = $route->compile(); +return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $name, $referenceType, $compiledRoute->getHostTokens(), $route->getSchemes()); +} +protected function doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, array $requiredSchemes = array()) +{ +$variables = array_flip($variables); +$mergedParams = array_replace($defaults, $this->context->getParameters(), $parameters); +if ($diff = array_diff_key($variables, $mergedParams)) { +throw new MissingMandatoryParametersException(sprintf('Some mandatory parameters are missing ("%s") to generate a URL for route "%s".', implode('", "', array_keys($diff)), $name)); +} +$url =''; +$optional = true; +$message ='Parameter "{parameter}" for route "{route}" must match "{expected}" ("{given}" given) to generate a corresponding URL.'; +foreach ($tokens as $token) { +if ('variable'=== $token[0]) { +if (!$optional || !array_key_exists($token[3], $defaults) || null !== $mergedParams[$token[3]] && (string) $mergedParams[$token[3]] !== (string) $defaults[$token[3]]) { +if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#'.(empty($token[4]) ?'':'u'), $mergedParams[$token[3]])) { +if ($this->strictRequirements) { +throw new InvalidParameterException(strtr($message, array('{parameter}'=> $token[3],'{route}'=> $name,'{expected}'=> $token[2],'{given}'=> $mergedParams[$token[3]]))); +} +if ($this->logger) { +$this->logger->error($message, array('parameter'=> $token[3],'route'=> $name,'expected'=> $token[2],'given'=> $mergedParams[$token[3]])); +} +return; +} +$url = $token[1].$mergedParams[$token[3]].$url; +$optional = false; +} +} else { +$url = $token[1].$url; +$optional = false; +} +} +if (''=== $url) { +$url ='/'; +} +$url = strtr(rawurlencode($url), $this->decodedChars); +$url = strtr($url, array('/../'=>'/%2E%2E/','/./'=>'/%2E/')); +if ('/..'=== substr($url, -3)) { +$url = substr($url, 0, -2).'%2E%2E'; +} elseif ('/.'=== substr($url, -2)) { +$url = substr($url, 0, -1).'%2E'; +} +$schemeAuthority =''; +if ($host = $this->context->getHost()) { +$scheme = $this->context->getScheme(); +if ($requiredSchemes) { +if (!in_array($scheme, $requiredSchemes, true)) { +$referenceType = self::ABSOLUTE_URL; +$scheme = current($requiredSchemes); +} +} +if ($hostTokens) { +$routeHost =''; +foreach ($hostTokens as $token) { +if ('variable'=== $token[0]) { +if (null !== $this->strictRequirements && !preg_match('#^'.$token[2].'$#i'.(empty($token[4]) ?'':'u'), $mergedParams[$token[3]])) { +if ($this->strictRequirements) { +throw new InvalidParameterException(strtr($message, array('{parameter}'=> $token[3],'{route}'=> $name,'{expected}'=> $token[2],'{given}'=> $mergedParams[$token[3]]))); +} +if ($this->logger) { +$this->logger->error($message, array('parameter'=> $token[3],'route'=> $name,'expected'=> $token[2],'given'=> $mergedParams[$token[3]])); +} +return; +} +$routeHost = $token[1].$mergedParams[$token[3]].$routeHost; +} else { +$routeHost = $token[1].$routeHost; +} +} +if ($routeHost !== $host) { +$host = $routeHost; +if (self::ABSOLUTE_URL !== $referenceType) { +$referenceType = self::NETWORK_PATH; +} +} +} +if (self::ABSOLUTE_URL === $referenceType || self::NETWORK_PATH === $referenceType) { +$port =''; +if ('http'=== $scheme && 80 != $this->context->getHttpPort()) { +$port =':'.$this->context->getHttpPort(); +} elseif ('https'=== $scheme && 443 != $this->context->getHttpsPort()) { +$port =':'.$this->context->getHttpsPort(); +} +$schemeAuthority = self::NETWORK_PATH === $referenceType ?'//': "$scheme://"; +$schemeAuthority .= $host.$port; +} +} +if (self::RELATIVE_PATH === $referenceType) { +$url = self::getRelativePath($this->context->getPathInfo(), $url); +} else { +$url = $schemeAuthority.$this->context->getBaseUrl().$url; +} +$extra = array_udiff_assoc(array_diff_key($parameters, $variables), $defaults, function ($a, $b) { +return $a == $b ? 0 : 1; +}); +$fragment =''; +if (isset($defaults['_fragment'])) { +$fragment = $defaults['_fragment']; +} +if (isset($extra['_fragment'])) { +$fragment = $extra['_fragment']; +unset($extra['_fragment']); +} +if ($extra && $query = http_build_query($extra,'','&', PHP_QUERY_RFC3986)) { +$url .='?'.strtr($query, array('%2F'=>'/')); +} +if (''!== $fragment) { +$url .='#'.strtr(rawurlencode($fragment), array('%2F'=>'/','%3F'=>'?')); +} +return $url; +} +public static function getRelativePath($basePath, $targetPath) +{ +if ($basePath === $targetPath) { +return''; +} +$sourceDirs = explode('/', isset($basePath[0]) &&'/'=== $basePath[0] ? substr($basePath, 1) : $basePath); +$targetDirs = explode('/', isset($targetPath[0]) &&'/'=== $targetPath[0] ? substr($targetPath, 1) : $targetPath); +array_pop($sourceDirs); +$targetFile = array_pop($targetDirs); +foreach ($sourceDirs as $i => $dir) { +if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) { +unset($sourceDirs[$i], $targetDirs[$i]); +} else { +break; +} +} +$targetDirs[] = $targetFile; +$path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs); +return''=== $path ||'/'=== $path[0] +|| false !== ($colonPos = strpos($path,':')) && ($colonPos < ($slashPos = strpos($path,'/')) || false === $slashPos) +? "./$path" : $path; +} +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\HttpFoundation\Request; +class RequestContext +{ +private $baseUrl; +private $pathInfo; +private $method; +private $host; +private $scheme; +private $httpPort; +private $httpsPort; +private $queryString; +private $parameters = array(); +public function __construct($baseUrl ='', $method ='GET', $host ='localhost', $scheme ='http', $httpPort = 80, $httpsPort = 443, $path ='/', $queryString ='') +{ +$this->setBaseUrl($baseUrl); +$this->setMethod($method); +$this->setHost($host); +$this->setScheme($scheme); +$this->setHttpPort($httpPort); +$this->setHttpsPort($httpsPort); +$this->setPathInfo($path); +$this->setQueryString($queryString); +} +public function fromRequest(Request $request) +{ +$this->setBaseUrl($request->getBaseUrl()); +$this->setPathInfo($request->getPathInfo()); +$this->setMethod($request->getMethod()); +$this->setHost($request->getHost()); +$this->setScheme($request->getScheme()); +$this->setHttpPort($request->isSecure() ? $this->httpPort : $request->getPort()); +$this->setHttpsPort($request->isSecure() ? $request->getPort() : $this->httpsPort); +$this->setQueryString($request->server->get('QUERY_STRING','')); +return $this; +} +public function getBaseUrl() +{ +return $this->baseUrl; +} +public function setBaseUrl($baseUrl) +{ +$this->baseUrl = $baseUrl; +return $this; +} +public function getPathInfo() +{ +return $this->pathInfo; +} +public function setPathInfo($pathInfo) +{ +$this->pathInfo = $pathInfo; +return $this; +} +public function getMethod() +{ +return $this->method; +} +public function setMethod($method) +{ +$this->method = strtoupper($method); +return $this; +} +public function getHost() +{ +return $this->host; +} +public function setHost($host) +{ +$this->host = strtolower($host); +return $this; +} +public function getScheme() +{ +return $this->scheme; +} +public function setScheme($scheme) +{ +$this->scheme = strtolower($scheme); +return $this; +} +public function getHttpPort() +{ +return $this->httpPort; +} +public function setHttpPort($httpPort) +{ +$this->httpPort = (int) $httpPort; +return $this; +} +public function getHttpsPort() +{ +return $this->httpsPort; +} +public function setHttpsPort($httpsPort) +{ +$this->httpsPort = (int) $httpsPort; +return $this; +} +public function getQueryString() +{ +return $this->queryString; +} +public function setQueryString($queryString) +{ +$this->queryString = (string) $queryString; +return $this; +} +public function getParameters() +{ +return $this->parameters; +} +public function setParameters(array $parameters) +{ +$this->parameters = $parameters; +return $this; +} +public function getParameter($name) +{ +return isset($this->parameters[$name]) ? $this->parameters[$name] : null; +} +public function hasParameter($name) +{ +return array_key_exists($name, $this->parameters); +} +public function setParameter($name, $parameter) +{ +$this->parameters[$name] = $parameter; +return $this; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\RequestContextAwareInterface; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +interface UrlMatcherInterface extends RequestContextAwareInterface +{ +public function match($pathinfo); +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +interface RouterInterface extends UrlMatcherInterface, UrlGeneratorInterface +{ +public function getRouteCollection(); +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +interface RequestMatcherInterface +{ +public function matchRequest(Request $request); +} +} +namespace Symfony\Component\Routing +{ +use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\Config\ConfigCacheInterface; +use Symfony\Component\Config\ConfigCacheFactoryInterface; +use Symfony\Component\Config\ConfigCacheFactory; +use Psr\Log\LoggerInterface; +use Symfony\Component\Routing\Generator\ConfigurableRequirementsInterface; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; +use Symfony\Component\Routing\Generator\Dumper\GeneratorDumperInterface; +use Symfony\Component\Routing\Matcher\RequestMatcherInterface; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +use Symfony\Component\Routing\Matcher\Dumper\MatcherDumperInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +class Router implements RouterInterface, RequestMatcherInterface +{ +protected $matcher; +protected $generator; +protected $context; +protected $loader; +protected $collection; +protected $resource; +protected $options = array(); +protected $logger; +private $configCacheFactory; +private $expressionLanguageProviders = array(); +public function __construct(LoaderInterface $loader, $resource, array $options = array(), RequestContext $context = null, LoggerInterface $logger = null) +{ +$this->loader = $loader; +$this->resource = $resource; +$this->logger = $logger; +$this->context = $context ?: new RequestContext(); +$this->setOptions($options); +} +public function setOptions(array $options) +{ +$this->options = array('cache_dir'=> null,'debug'=> false,'generator_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_base_class'=>'Symfony\\Component\\Routing\\Generator\\UrlGenerator','generator_dumper_class'=>'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper','generator_cache_class'=>'ProjectUrlGenerator','matcher_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_base_class'=>'Symfony\\Component\\Routing\\Matcher\\UrlMatcher','matcher_dumper_class'=>'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper','matcher_cache_class'=>'ProjectUrlMatcher','resource_type'=> null,'strict_requirements'=> true, +); +$invalid = array(); +foreach ($options as $key => $value) { +if (array_key_exists($key, $this->options)) { +$this->options[$key] = $value; +} else { +$invalid[] = $key; +} +} +if ($invalid) { +throw new \InvalidArgumentException(sprintf('The Router does not support the following options: "%s".', implode('", "', $invalid))); +} +} +public function setOption($key, $value) +{ +if (!array_key_exists($key, $this->options)) { +throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); +} +$this->options[$key] = $value; +} +public function getOption($key) +{ +if (!array_key_exists($key, $this->options)) { +throw new \InvalidArgumentException(sprintf('The Router does not support the "%s" option.', $key)); +} +return $this->options[$key]; +} +public function getRouteCollection() +{ +if (null === $this->collection) { +$this->collection = $this->loader->load($this->resource, $this->options['resource_type']); +} +return $this->collection; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +if (null !== $this->matcher) { +$this->getMatcher()->setContext($context); +} +if (null !== $this->generator) { +$this->getGenerator()->setContext($context); +} +} +public function getContext() +{ +return $this->context; +} +public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory) +{ +$this->configCacheFactory = $configCacheFactory; +} +public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) +{ +return $this->getGenerator()->generate($name, $parameters, $referenceType); +} +public function match($pathinfo) +{ +return $this->getMatcher()->match($pathinfo); +} +public function matchRequest(Request $request) +{ +$matcher = $this->getMatcher(); +if (!$matcher instanceof RequestMatcherInterface) { +return $matcher->match($request->getPathInfo()); +} +return $matcher->matchRequest($request); +} +public function getMatcher() +{ +if (null !== $this->matcher) { +return $this->matcher; +} +if (null === $this->options['cache_dir'] || null === $this->options['matcher_cache_class']) { +$this->matcher = new $this->options['matcher_class']($this->getRouteCollection(), $this->context); +if (method_exists($this->matcher,'addExpressionLanguageProvider')) { +foreach ($this->expressionLanguageProviders as $provider) { +$this->matcher->addExpressionLanguageProvider($provider); +} +} +return $this->matcher; +} +$cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['matcher_cache_class'].'.php', +function (ConfigCacheInterface $cache) { +$dumper = $this->getMatcherDumperInstance(); +if (method_exists($dumper,'addExpressionLanguageProvider')) { +foreach ($this->expressionLanguageProviders as $provider) { +$dumper->addExpressionLanguageProvider($provider); +} +} +$options = array('class'=> $this->options['matcher_cache_class'],'base_class'=> $this->options['matcher_base_class'], +); +$cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); +} +); +require_once $cache->getPath(); +return $this->matcher = new $this->options['matcher_cache_class']($this->context); +} +public function getGenerator() +{ +if (null !== $this->generator) { +return $this->generator; +} +if (null === $this->options['cache_dir'] || null === $this->options['generator_cache_class']) { +$this->generator = new $this->options['generator_class']($this->getRouteCollection(), $this->context, $this->logger); +} else { +$cache = $this->getConfigCacheFactory()->cache($this->options['cache_dir'].'/'.$this->options['generator_cache_class'].'.php', +function (ConfigCacheInterface $cache) { +$dumper = $this->getGeneratorDumperInstance(); +$options = array('class'=> $this->options['generator_cache_class'],'base_class'=> $this->options['generator_base_class'], +); +$cache->write($dumper->dump($options), $this->getRouteCollection()->getResources()); +} +); +require_once $cache->getPath(); +$this->generator = new $this->options['generator_cache_class']($this->context, $this->logger); +} +if ($this->generator instanceof ConfigurableRequirementsInterface) { +$this->generator->setStrictRequirements($this->options['strict_requirements']); +} +return $this->generator; +} +public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) +{ +$this->expressionLanguageProviders[] = $provider; +} +protected function getGeneratorDumperInstance() +{ +return new $this->options['generator_dumper_class']($this->getRouteCollection()); +} +protected function getMatcherDumperInstance() +{ +return new $this->options['matcher_dumper_class']($this->getRouteCollection()); +} +private function getConfigCacheFactory() +{ +if (null === $this->configCacheFactory) { +$this->configCacheFactory = new ConfigCacheFactory($this->options['debug']); +} +return $this->configCacheFactory; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +interface RedirectableUrlMatcherInterface +{ +public function redirect($path, $route, $scheme = null); +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\Route; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\ExpressionLanguage\ExpressionLanguage; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +class UrlMatcher implements UrlMatcherInterface, RequestMatcherInterface +{ +const REQUIREMENT_MATCH = 0; +const REQUIREMENT_MISMATCH = 1; +const ROUTE_MATCH = 2; +protected $context; +protected $allow = array(); +protected $routes; +protected $request; +protected $expressionLanguage; +protected $expressionLanguageProviders = array(); +public function __construct(RouteCollection $routes, RequestContext $context) +{ +$this->routes = $routes; +$this->context = $context; +} +public function setContext(RequestContext $context) +{ +$this->context = $context; +} +public function getContext() +{ +return $this->context; +} +public function match($pathinfo) +{ +$this->allow = array(); +if ($ret = $this->matchCollection(rawurldecode($pathinfo), $this->routes)) { +return $ret; +} +throw 0 < count($this->allow) +? new MethodNotAllowedException(array_unique($this->allow)) +: new ResourceNotFoundException(sprintf('No routes found for "%s".', $pathinfo)); +} +public function matchRequest(Request $request) +{ +$this->request = $request; +$ret = $this->match($request->getPathInfo()); +$this->request = null; +return $ret; +} +public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) +{ +$this->expressionLanguageProviders[] = $provider; +} +protected function matchCollection($pathinfo, RouteCollection $routes) +{ +foreach ($routes as $name => $route) { +$compiledRoute = $route->compile(); +if (''!== $compiledRoute->getStaticPrefix() && 0 !== strpos($pathinfo, $compiledRoute->getStaticPrefix())) { +continue; +} +if (!preg_match($compiledRoute->getRegex(), $pathinfo, $matches)) { +continue; +} +$hostMatches = array(); +if ($compiledRoute->getHostRegex() && !preg_match($compiledRoute->getHostRegex(), $this->context->getHost(), $hostMatches)) { +continue; +} +if ($requiredMethods = $route->getMethods()) { +if ('HEAD'=== $method = $this->context->getMethod()) { +$method ='GET'; +} +if (!in_array($method, $requiredMethods)) { +$this->allow = array_merge($this->allow, $requiredMethods); +continue; +} +} +$status = $this->handleRouteRequirements($pathinfo, $name, $route); +if (self::ROUTE_MATCH === $status[0]) { +return $status[1]; +} +if (self::REQUIREMENT_MISMATCH === $status[0]) { +continue; +} +return $this->getAttributes($route, $name, array_replace($matches, $hostMatches)); +} +} +protected function getAttributes(Route $route, $name, array $attributes) +{ +$attributes['_route'] = $name; +return $this->mergeDefaults($attributes, $route->getDefaults()); +} +protected function handleRouteRequirements($pathinfo, $name, Route $route) +{ +if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { +return array(self::REQUIREMENT_MISMATCH, null); +} +$scheme = $this->context->getScheme(); +$status = $route->getSchemes() && !$route->hasScheme($scheme) ? self::REQUIREMENT_MISMATCH : self::REQUIREMENT_MATCH; +return array($status, null); +} +protected function mergeDefaults($params, $defaults) +{ +foreach ($params as $key => $value) { +if (!is_int($key)) { +$defaults[$key] = $value; +} +} +return $defaults; +} +protected function getExpressionLanguage() +{ +if (null === $this->expressionLanguage) { +if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { +throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); +} +$this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders); +} +return $this->expressionLanguage; +} +} +} +namespace Symfony\Component\Routing\Matcher +{ +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Route; +abstract class RedirectableUrlMatcher extends UrlMatcher implements RedirectableUrlMatcherInterface +{ +public function match($pathinfo) +{ +try { +$parameters = parent::match($pathinfo); +} catch (ResourceNotFoundException $e) { +if ('/'=== substr($pathinfo, -1) || !in_array($this->context->getMethod(), array('HEAD','GET'))) { +throw $e; +} +try { +parent::match($pathinfo.'/'); +return $this->redirect($pathinfo.'/', null); +} catch (ResourceNotFoundException $e2) { +throw $e; +} +} +return $parameters; +} +protected function handleRouteRequirements($pathinfo, $name, Route $route) +{ +if ($route->getCondition() && !$this->getExpressionLanguage()->evaluate($route->getCondition(), array('context'=> $this->context,'request'=> $this->request))) { +return array(self::REQUIREMENT_MISMATCH, null); +} +$scheme = $this->context->getScheme(); +$schemes = $route->getSchemes(); +if ($schemes && !$route->hasScheme($scheme)) { +return array(self::ROUTE_MATCH, $this->redirect($pathinfo, $name, current($schemes))); +} +return array(self::REQUIREMENT_MATCH, null); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Routing +{ +use Symfony\Component\Routing\Matcher\RedirectableUrlMatcher as BaseMatcher; +class RedirectableUrlMatcher extends BaseMatcher +{ +public function redirect($path, $route, $scheme = null) +{ +return array('_controller'=>'Symfony\\Bundle\\FrameworkBundle\\Controller\\RedirectController::urlRedirectAction','path'=> $path,'permanent'=> true,'scheme'=> $scheme,'httpPort'=> $this->context->getHttpPort(),'httpsPort'=> $this->context->getHttpsPort(),'_route'=> $route, +); +} +} +} +namespace Symfony\Component\HttpKernel\CacheWarmer +{ +interface WarmableInterface +{ +public function warmUp($cacheDir); +} +} +namespace Symfony\Bundle\FrameworkBundle\Routing +{ +use Symfony\Component\Routing\Router as BaseRouter; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Routing\RouteCollection; +use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface; +use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; +use Symfony\Component\DependencyInjection\Exception\RuntimeException; +class Router extends BaseRouter implements WarmableInterface +{ +private $container; +public function __construct(ContainerInterface $container, $resource, array $options = array(), RequestContext $context = null) +{ +$this->container = $container; +$this->resource = $resource; +$this->context = $context ?: new RequestContext(); +$this->setOptions($options); +} +public function getRouteCollection() +{ +if (null === $this->collection) { +$this->collection = $this->container->get('routing.loader')->load($this->resource, $this->options['resource_type']); +$this->resolveParameters($this->collection); +} +return $this->collection; +} +public function warmUp($cacheDir) +{ +$currentDir = $this->getOption('cache_dir'); +$this->setOption('cache_dir', $cacheDir); +$this->getMatcher(); +$this->getGenerator(); +$this->setOption('cache_dir', $currentDir); +} +private function resolveParameters(RouteCollection $collection) +{ +foreach ($collection as $route) { +foreach ($route->getDefaults() as $name => $value) { +$route->setDefault($name, $this->resolve($value)); +} +foreach ($route->getRequirements() as $name => $value) { +$route->setRequirement($name, $this->resolve($value)); +} +$route->setPath($this->resolve($route->getPath())); +$route->setHost($this->resolve($route->getHost())); +$schemes = array(); +foreach ($route->getSchemes() as $scheme) { +$schemes = array_merge($schemes, explode('|', $this->resolve($scheme))); +} +$route->setSchemes($schemes); +$methods = array(); +foreach ($route->getMethods() as $method) { +$methods = array_merge($methods, explode('|', $this->resolve($method))); +} +$route->setMethods($methods); +$route->setCondition($this->resolve($route->getCondition())); +} +} +private function resolve($value) +{ +if (is_array($value)) { +foreach ($value as $key => $val) { +$value[$key] = $this->resolve($val); +} +return $value; +} +if (!is_string($value)) { +return $value; +} +$container = $this->container; +$escapedValue = preg_replace_callback('/%%|%([^%\s]++)%/', function ($match) use ($container, $value) { +if (!isset($match[1])) { +return'%%'; +} +if (preg_match('/^env\(\w+\)$/', $match[1])) { +throw new RuntimeException(sprintf('Using "%%%s%%" is not allowed in routing configuration.', $match[1])); +} +$resolved = $container->getParameter($match[1]); +if (is_string($resolved) || is_numeric($resolved)) { +return (string) $resolved; +} +throw new RuntimeException(sprintf('The container parameter "%s", used in the route configuration value "%s", '.'must be a string or numeric, but it is of type %s.', +$match[1], +$value, +gettype($resolved) +) +); +}, $value); +return str_replace('%%','%', $escapedValue); +} +} +} +namespace Symfony\Component\Cache\Adapter +{ +use Psr\Cache\CacheItemInterface; +use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Cache\CacheItem; +use Symfony\Component\Cache\Exception\InvalidArgumentException; +class PhpArrayAdapter implements AdapterInterface +{ +private $file; +private $values; +private $createCacheItem; +private $fallbackPool; +public function __construct($file, AdapterInterface $fallbackPool) +{ +$this->file = $file; +$this->fallbackPool = $fallbackPool; +$this->createCacheItem = \Closure::bind( +function ($key, $value, $isHit) { +$item = new CacheItem(); +$item->key = $key; +$item->value = $value; +$item->isHit = $isHit; +return $item; +}, +null, +CacheItem::class +); +} +public static function create($file, CacheItemPoolInterface $fallbackPool) +{ +if ((PHP_VERSION_ID >= 70000 && ini_get('opcache.enable')) || defined('HHVM_VERSION')) { +if (!$fallbackPool instanceof AdapterInterface) { +$fallbackPool = new ProxyAdapter($fallbackPool); +} +return new static($file, $fallbackPool); +} +return $fallbackPool; +} +public function warmUp(array $values) +{ +if (file_exists($this->file)) { +if (!is_file($this->file)) { +throw new InvalidArgumentException(sprintf('Cache path exists and is not a file: %s.', $this->file)); +} +if (!is_writable($this->file)) { +throw new InvalidArgumentException(sprintf('Cache file is not writable: %s.', $this->file)); +} +} else { +$directory = dirname($this->file); +if (!is_dir($directory) && !@mkdir($directory, 0777, true)) { +throw new InvalidArgumentException(sprintf('Cache directory does not exist and cannot be created: %s.', $directory)); +} +if (!is_writable($directory)) { +throw new InvalidArgumentException(sprintf('Cache directory is not writable: %s.', $directory)); +} +} +$dump =<<<'EOF' + $value) { +CacheItem::validateKey(is_int($key) ? (string) $key : $key); +if (null === $value || is_object($value)) { +try { +$value = serialize($value); +} catch (\Exception $e) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable %s value.', $key, get_class($value)), 0, $e); +} +} elseif (is_array($value)) { +try { +$serialized = serialize($value); +$unserialized = unserialize($serialized); +} catch (\Exception $e) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable array value.', $key), 0, $e); +} +if ($unserialized !== $value || (false !== strpos($serialized,';R:') && preg_match('/;R:[1-9]/', $serialized))) { +$value = $serialized; +} +} elseif (is_string($value)) { +if ('N;'=== $value || (isset($value[2]) &&':'=== $value[1])) { +$value = serialize($value); +} +} elseif (!is_scalar($value)) { +throw new InvalidArgumentException(sprintf('Cache key "%s" has non-serializable %s value.', $key, gettype($value))); +} +$dump .= var_export($key, true).' => '.var_export($value, true).",\n"; +} +$dump .="\n);\n"; +$dump = str_replace("' . \"\\0\" . '","\0", $dump); +$tmpFile = uniqid($this->file, true); +file_put_contents($tmpFile, $dump); +@chmod($tmpFile, 0666 & ~umask()); +unset($serialized, $unserialized, $value, $dump); +@rename($tmpFile, $this->file); +$this->values = (include $this->file) ?: array(); +} +public function getItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +if (!isset($this->values[$key])) { +return $this->fallbackPool->getItem($key); +} +$value = $this->values[$key]; +$isHit = true; +if ('N;'=== $value) { +$value = null; +} elseif (is_string($value) && isset($value[2]) &&':'=== $value[1]) { +try { +$e = null; +$value = unserialize($value); +} catch (\Error $e) { +} catch (\Exception $e) { +} +if (null !== $e) { +$value = null; +$isHit = false; +} +} +$f = $this->createCacheItem; +return $f($key, $value, $isHit); +} +public function getItems(array $keys = array()) +{ +foreach ($keys as $key) { +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +} +if (null === $this->values) { +$this->initialize(); +} +return $this->generateItems($keys); +} +public function hasItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +return isset($this->values[$key]) || $this->fallbackPool->hasItem($key); +} +public function clear() +{ +$this->values = array(); +$cleared = @unlink($this->file) || !file_exists($this->file); +return $this->fallbackPool->clear() && $cleared; +} +public function deleteItem($key) +{ +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$key]) && $this->fallbackPool->deleteItem($key); +} +public function deleteItems(array $keys) +{ +$deleted = true; +$fallbackKeys = array(); +foreach ($keys as $key) { +if (!is_string($key)) { +throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); +} +if (isset($this->values[$key])) { +$deleted = false; +} else { +$fallbackKeys[] = $key; +} +} +if (null === $this->values) { +$this->initialize(); +} +if ($fallbackKeys) { +$deleted = $this->fallbackPool->deleteItems($fallbackKeys) && $deleted; +} +return $deleted; +} +public function save(CacheItemInterface $item) +{ +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$item->getKey()]) && $this->fallbackPool->save($item); +} +public function saveDeferred(CacheItemInterface $item) +{ +if (null === $this->values) { +$this->initialize(); +} +return !isset($this->values[$item->getKey()]) && $this->fallbackPool->saveDeferred($item); +} +public function commit() +{ +return $this->fallbackPool->commit(); +} +private function initialize() +{ +$this->values = file_exists($this->file) ? (include $this->file ?: array()) : array(); +} +private function generateItems(array $keys) +{ +$f = $this->createCacheItem; +$fallbackKeys = array(); +foreach ($keys as $key) { +if (isset($this->values[$key])) { +$value = $this->values[$key]; +if ('N;'=== $value) { +yield $key => $f($key, null, true); +} elseif (is_string($value) && isset($value[2]) &&':'=== $value[1]) { +try { +yield $key => $f($key, unserialize($value), true); +} catch (\Error $e) { +yield $key => $f($key, null, false); +} catch (\Exception $e) { +yield $key => $f($key, null, false); +} +} else { +yield $key => $f($key, $value, true); +} +} else { +$fallbackKeys[] = $key; +} +} +if ($fallbackKeys) { +foreach ($this->fallbackPool->getItems($fallbackKeys) as $key => $item) { +yield $key => $item; +} +} +} +public static function throwOnRequiredClass($class) +{ +$e = new \ReflectionException("Class $class does not exist"); +$trace = $e->getTrace(); +$autoloadFrame = array('function'=>'spl_autoload_call','args'=> array($class), +); +$i = 1 + array_search($autoloadFrame, $trace, true); +if (isset($trace[$i]['function']) && !isset($trace[$i]['class'])) { +switch ($trace[$i]['function']) { +case'get_class_methods': +case'get_class_vars': +case'get_parent_class': +case'is_a': +case'is_subclass_of': +case'class_exists': +case'class_implements': +case'class_parents': +case'trait_exists': +case'defined': +case'interface_exists': +case'method_exists': +case'property_exists': +case'is_callable': +return; +} +} +throw $e; +} +} +} +namespace Doctrine\Common\Cache +{ +interface MultiPutCache +{ +function saveMultiple(array $keysAndValues, $lifetime = 0); +} +} +namespace Doctrine\Common\Cache +{ +interface MultiGetCache +{ +function fetchMultiple(array $keys); +} +} +namespace Doctrine\Common\Cache +{ +interface ClearableCache +{ +public function deleteAll(); +} +} +namespace Doctrine\Common\Cache +{ +interface FlushableCache +{ +public function flushAll(); +} +} +namespace Doctrine\Common\Cache +{ +interface Cache +{ +const STATS_HITS ='hits'; +const STATS_MISSES ='misses'; +const STATS_UPTIME ='uptime'; +const STATS_MEMORY_USAGE ='memory_usage'; +const STATS_MEMORY_AVAILABLE ='memory_available'; +const STATS_MEMORY_AVAILIABLE ='memory_available'; +public function fetch($id); +public function contains($id); +public function save($id, $data, $lifeTime = 0); +public function delete($id); +public function getStats(); +} +} +namespace Doctrine\Common\Cache +{ +abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache, MultiPutCache +{ +const DOCTRINE_NAMESPACE_CACHEKEY ='DoctrineNamespaceCacheKey[%s]'; +private $namespace =''; +private $namespaceVersion; +public function setNamespace($namespace) +{ +$this->namespace = (string) $namespace; +$this->namespaceVersion = null; +} +public function getNamespace() +{ +return $this->namespace; +} +public function fetch($id) +{ +return $this->doFetch($this->getNamespacedId($id)); +} +public function fetchMultiple(array $keys) +{ +if (empty($keys)) { +return array(); +} +$namespacedKeys = array_combine($keys, array_map(array($this,'getNamespacedId'), $keys)); +$items = $this->doFetchMultiple($namespacedKeys); +$foundItems = array(); +foreach ($namespacedKeys as $requestedKey => $namespacedKey) { +if (isset($items[$namespacedKey]) || array_key_exists($namespacedKey, $items)) { +$foundItems[$requestedKey] = $items[$namespacedKey]; +} +} +return $foundItems; +} +public function saveMultiple(array $keysAndValues, $lifetime = 0) +{ +$namespacedKeysAndValues = array(); +foreach ($keysAndValues as $key => $value) { +$namespacedKeysAndValues[$this->getNamespacedId($key)] = $value; +} +return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime); +} +public function contains($id) +{ +return $this->doContains($this->getNamespacedId($id)); +} +public function save($id, $data, $lifeTime = 0) +{ +return $this->doSave($this->getNamespacedId($id), $data, $lifeTime); +} +public function delete($id) +{ +return $this->doDelete($this->getNamespacedId($id)); +} +public function getStats() +{ +return $this->doGetStats(); +} +public function flushAll() +{ +return $this->doFlush(); +} +public function deleteAll() +{ +$namespaceCacheKey = $this->getNamespaceCacheKey(); +$namespaceVersion = $this->getNamespaceVersion() + 1; +if ($this->doSave($namespaceCacheKey, $namespaceVersion)) { +$this->namespaceVersion = $namespaceVersion; +return true; +} +return false; +} +private function getNamespacedId($id) +{ +$namespaceVersion = $this->getNamespaceVersion(); +return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion); +} +private function getNamespaceCacheKey() +{ +return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace); +} +private function getNamespaceVersion() +{ +if (null !== $this->namespaceVersion) { +return $this->namespaceVersion; +} +$namespaceCacheKey = $this->getNamespaceCacheKey(); +$this->namespaceVersion = $this->doFetch($namespaceCacheKey) ?: 1; +return $this->namespaceVersion; +} +protected function doFetchMultiple(array $keys) +{ +$returnValues = array(); +foreach ($keys as $key) { +if (false !== ($item = $this->doFetch($key)) || $this->doContains($key)) { +$returnValues[$key] = $item; +} +} +return $returnValues; +} +abstract protected function doFetch($id); +abstract protected function doContains($id); +protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) +{ +$success = true; +foreach ($keysAndValues as $key => $value) { +if (!$this->doSave($key, $value, $lifetime)) { +$success = false; +} +} +return $success; +} +abstract protected function doSave($id, $data, $lifeTime = 0); +abstract protected function doDelete($id); +abstract protected function doFlush(); +abstract protected function doGetStats(); +} +} +namespace Symfony\Component\Cache +{ +use Doctrine\Common\Cache\CacheProvider; +use Psr\Cache\CacheItemPoolInterface; +class DoctrineProvider extends CacheProvider +{ +private $pool; +public function __construct(CacheItemPoolInterface $pool) +{ +$this->pool = $pool; +} +protected function doFetch($id) +{ +$item = $this->pool->getItem(rawurlencode($id)); +return $item->isHit() ? $item->get() : false; +} +protected function doContains($id) +{ +return $this->pool->hasItem(rawurlencode($id)); +} +protected function doSave($id, $data, $lifeTime = 0) +{ +$item = $this->pool->getItem(rawurlencode($id)); +if (0 < $lifeTime) { +$item->expiresAfter($lifeTime); +} +return $this->pool->save($item->set($data)); +} +protected function doDelete($id) +{ +return $this->pool->deleteItem(rawurlencode($id)); +} +protected function doFlush() +{ +$this->pool->clear(); +} +protected function doGetStats() +{ +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\ResourceInterface; +interface ConfigCacheInterface +{ +public function getPath(); +public function isFresh(); +public function write($content, array $metadata = null); +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\ResourceInterface; +use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Filesystem\Filesystem; +class ResourceCheckerConfigCache implements ConfigCacheInterface +{ +private $file; +private $resourceCheckers; +public function __construct($file, array $resourceCheckers = array()) +{ +$this->file = $file; +$this->resourceCheckers = $resourceCheckers; +} +public function getPath() +{ +return $this->file; +} +public function isFresh() +{ +if (!is_file($this->file)) { +return false; +} +if (!$this->resourceCheckers) { +return true; } +$metadata = $this->getMetaFile(); +if (!is_file($metadata)) { +return false; +} +$e = null; +$meta = false; +$time = filemtime($this->file); +$signalingException = new \UnexpectedValueException(); +$prevUnserializeHandler = ini_set('unserialize_callback_func',''); +$prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context) use (&$prevErrorHandler, $signalingException) { +if (E_WARNING === $type &&'Class __PHP_Incomplete_Class has no unserializer'=== $msg) { +throw $signalingException; +} +return $prevErrorHandler ? $prevErrorHandler($type, $msg, $file, $line, $context) : false; +}); +try { +$meta = unserialize(file_get_contents($metadata)); +} catch (\Error $e) { +} catch (\Exception $e) { +} +restore_error_handler(); +ini_set('unserialize_callback_func', $prevUnserializeHandler); +if (null !== $e && $e !== $signalingException) { +throw $e; +} +if (false === $meta) { +return false; +} +foreach ($meta as $resource) { +foreach ($this->resourceCheckers as $checker) { +if (!$checker->supports($resource)) { +continue; } +if ($checker->isFresh($resource, $time)) { +break; } +return false; } +} +return true; +} +public function write($content, array $metadata = null) +{ +$mode = 0666; +$umask = umask(); +$filesystem = new Filesystem(); +$filesystem->dumpFile($this->file, $content, null); +try { +$filesystem->chmod($this->file, $mode, $umask); +} catch (IOException $e) { +} +if (null !== $metadata) { +$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null); +try { +$filesystem->chmod($this->getMetaFile(), $mode, $umask); +} catch (IOException $e) { +} +} +} +private function getMetaFile() +{ +return $this->file.'.meta'; +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Resource\SelfCheckingResourceChecker; +class ConfigCache extends ResourceCheckerConfigCache +{ +private $debug; +public function __construct($file, $debug) +{ +$this->debug = (bool) $debug; +$checkers = array(); +if (true === $this->debug) { +$checkers = array(new SelfCheckingResourceChecker()); +} +parent::__construct($file, $checkers); +} +public function isFresh() +{ +if (!$this->debug && is_file($this->getPath())) { +return true; +} +return parent::isFresh(); +} +} +} +namespace Symfony\Component\Config +{ +use Symfony\Component\Config\Exception\FileLocatorFileNotFoundException; +class FileLocator implements FileLocatorInterface +{ +protected $paths; +public function __construct($paths = array()) +{ +$this->paths = (array) $paths; +} +public function locate($name, $currentPath = null, $first = true) +{ +if (''== $name) { +throw new \InvalidArgumentException('An empty file name is not valid to be located.'); +} +if ($this->isAbsolutePath($name)) { +if (!file_exists($name)) { +throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist.', $name)); +} +return $name; +} +$paths = $this->paths; +if (null !== $currentPath) { +array_unshift($paths, $currentPath); +} +$paths = array_unique($paths); +$filepaths = array(); +foreach ($paths as $path) { +if (@file_exists($file = $path.DIRECTORY_SEPARATOR.$name)) { +if (true === $first) { +return $file; +} +$filepaths[] = $file; +} +} +if (!$filepaths) { +throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist (in: %s).', $name, implode(', ', $paths))); +} +return $filepaths; +} +private function isAbsolutePath($file) +{ +if ($file[0] ==='/'|| $file[0] ==='\\'|| (strlen($file) > 3 && ctype_alpha($file[0]) +&& $file[1] ===':'&& ($file[2] ==='\\'|| $file[2] ==='/') +) +|| null !== parse_url($file, PHP_URL_SCHEME) +) { +return true; +} +return false; +} +} +} +namespace Symfony\Component\DependencyInjection +{ +interface ContainerAwareInterface +{ +public function setContainer(ContainerInterface $container = null); +} +} +namespace Symfony\Component\DependencyInjection +{ +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; +interface ContainerInterface +{ +const EXCEPTION_ON_INVALID_REFERENCE = 1; +const NULL_ON_INVALID_REFERENCE = 2; +const IGNORE_ON_INVALID_REFERENCE = 3; +public function set($id, $service); +public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE); +public function has($id); +public function initialized($id); +public function getParameter($name); +public function hasParameter($name); +public function setParameter($name, $value); +} +} +namespace Symfony\Component\DependencyInjection +{ +interface ResettableContainerInterface extends ContainerInterface +{ +public function reset(); +} +} +namespace Symfony\Component\DependencyInjection +{ +use Symfony\Component\DependencyInjection\Exception\EnvNotFoundException; +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; +use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag; +use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; +class Container implements ResettableContainerInterface +{ +protected $parameterBag; +protected $services = array(); +protected $methodMap = array(); +protected $privates = array(); +protected $aliases = array(); +protected $loading = array(); +private $underscoreMap = array('_'=>'','.'=>'_','\\'=>'_'); +private $envCache = array(); +public function __construct(ParameterBagInterface $parameterBag = null) +{ +$this->parameterBag = $parameterBag ?: new EnvPlaceholderParameterBag(); +} +public function compile() +{ +$this->parameterBag->resolve(); +$this->parameterBag = new FrozenParameterBag($this->parameterBag->all()); +} +public function isFrozen() +{ +return $this->parameterBag instanceof FrozenParameterBag; +} +public function getParameterBag() +{ +return $this->parameterBag; +} +public function getParameter($name) +{ +return $this->parameterBag->get($name); +} +public function hasParameter($name) +{ +return $this->parameterBag->has($name); +} +public function setParameter($name, $value) +{ +$this->parameterBag->set($name, $value); +} +public function set($id, $service) +{ +$id = strtolower($id); +if ('service_container'=== $id) { +throw new InvalidArgumentException('You cannot set service "service_container".'); +} +if (isset($this->aliases[$id])) { +unset($this->aliases[$id]); +} +$this->services[$id] = $service; +if (null === $service) { +unset($this->services[$id]); +} +if (isset($this->privates[$id])) { +if (null === $service) { +@trigger_error(sprintf('Unsetting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +unset($this->privates[$id]); +} else { +@trigger_error(sprintf('Setting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0. A new public service will be created instead.', $id), E_USER_DEPRECATED); +} +} +} +public function has($id) +{ +for ($i = 2;;) { +if ('service_container'=== $id +|| isset($this->aliases[$id]) +|| isset($this->services[$id]) +) { +return true; +} +if (isset($this->privates[$id])) { +@trigger_error(sprintf('Checking for the existence of the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +} +if (isset($this->methodMap[$id])) { +return true; +} +if (--$i && $id !== $lcId = strtolower($id)) { +$id = $lcId; +continue; +} +if (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class && method_exists($this,'get'.strtr($id, $this->underscoreMap).'Service')) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +return true; +} +return false; +} +} +public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) +{ +for ($i = 2;;) { +if ('service_container'=== $id) { +return $this; +} +if (isset($this->aliases[$id])) { +$id = $this->aliases[$id]; +} +if (isset($this->services[$id])) { +return $this->services[$id]; +} +if (isset($this->loading[$id])) { +throw new ServiceCircularReferenceException($id, array_keys($this->loading)); +} +if (isset($this->methodMap[$id])) { +$method = $this->methodMap[$id]; +} elseif (--$i && $id !== $lcId = strtolower($id)) { +$id = $lcId; +continue; +} elseif (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class && method_exists($this, $method ='get'.strtr($id, $this->underscoreMap).'Service')) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +} else { +if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) { +if (!$id) { +throw new ServiceNotFoundException($id); +} +$alternatives = array(); +foreach ($this->getServiceIds() as $knownId) { +$lev = levenshtein($id, $knownId); +if ($lev <= strlen($id) / 3 || false !== strpos($knownId, $id)) { +$alternatives[] = $knownId; +} +} +throw new ServiceNotFoundException($id, null, null, $alternatives); +} +return; +} +if (isset($this->privates[$id])) { +@trigger_error(sprintf('Requesting the "%s" private service is deprecated since Symfony 3.2 and won\'t be supported anymore in Symfony 4.0.', $id), E_USER_DEPRECATED); +} +$this->loading[$id] = true; +try { +$service = $this->$method(); +} catch (\Exception $e) { +unset($this->services[$id]); +throw $e; +} finally { +unset($this->loading[$id]); +} +return $service; +} +} +public function initialized($id) +{ +$id = strtolower($id); +if ('service_container'=== $id) { +return false; +} +if (isset($this->aliases[$id])) { +$id = $this->aliases[$id]; +} +return isset($this->services[$id]); +} +public function reset() +{ +$this->services = array(); +} +public function getServiceIds() +{ +$ids = array(); +if (!$this->methodMap && !$this instanceof ContainerBuilder && __CLASS__ !== static::class) { +@trigger_error('Generating a dumped container without populating the method map is deprecated since 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', E_USER_DEPRECATED); +foreach (get_class_methods($this) as $method) { +if (preg_match('/^get(.+)Service$/', $method, $match)) { +$ids[] = self::underscore($match[1]); +} +} +} +$ids[] ='service_container'; +return array_unique(array_merge($ids, array_keys($this->methodMap), array_keys($this->services))); +} +public static function camelize($id) +{ +return strtr(ucwords(strtr($id, array('_'=>' ','.'=>'_ ','\\'=>'_ '))), array(' '=>'')); +} +public static function underscore($id) +{ +return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/','/([a-z\d])([A-Z])/'), array('\\1_\\2','\\1_\\2'), str_replace('_','.', $id))); +} +protected function getEnv($name) +{ +if (isset($this->envCache[$name]) || array_key_exists($name, $this->envCache)) { +return $this->envCache[$name]; +} +if (isset($_ENV[$name])) { +return $this->envCache[$name] = $_ENV[$name]; +} +if (false !== $env = getenv($name)) { +return $this->envCache[$name] = $env; +} +if (!$this->hasParameter("env($name)")) { +throw new EnvNotFoundException($name); +} +return $this->envCache[$name] = $this->getParameter("env($name)"); +} +private function __clone() +{ +} +} +} +namespace Symfony\Component\EventDispatcher +{ +class Event +{ +private $propagationStopped = false; +public function isPropagationStopped() +{ +return $this->propagationStopped; +} +public function stopPropagation() +{ +$this->propagationStopped = true; +} +} +} +namespace Symfony\Component\EventDispatcher +{ +interface EventDispatcherInterface +{ +public function dispatch($eventName, Event $event = null); +public function addListener($eventName, $listener, $priority = 0); +public function addSubscriber(EventSubscriberInterface $subscriber); +public function removeListener($eventName, $listener); +public function removeSubscriber(EventSubscriberInterface $subscriber); +public function getListeners($eventName = null); +public function getListenerPriority($eventName, $listener); +public function hasListeners($eventName = null); +} +} +namespace Symfony\Component\EventDispatcher +{ +class EventDispatcher implements EventDispatcherInterface +{ +private $listeners = array(); +private $sorted = array(); +public function dispatch($eventName, Event $event = null) +{ +if (null === $event) { +$event = new Event(); +} +if ($listeners = $this->getListeners($eventName)) { +$this->doDispatch($listeners, $eventName, $event); +} +return $event; +} +public function getListeners($eventName = null) +{ +if (null !== $eventName) { +if (!isset($this->listeners[$eventName])) { +return array(); +} +if (!isset($this->sorted[$eventName])) { +$this->sortListeners($eventName); +} +return $this->sorted[$eventName]; +} +foreach ($this->listeners as $eventName => $eventListeners) { +if (!isset($this->sorted[$eventName])) { +$this->sortListeners($eventName); +} +} +return array_filter($this->sorted); +} +public function getListenerPriority($eventName, $listener) +{ +if (!isset($this->listeners[$eventName])) { +return; +} +foreach ($this->listeners[$eventName] as $priority => $listeners) { +if (false !== in_array($listener, $listeners, true)) { +return $priority; +} +} +} +public function hasListeners($eventName = null) +{ +return (bool) count($this->getListeners($eventName)); +} +public function addListener($eventName, $listener, $priority = 0) +{ +$this->listeners[$eventName][$priority][] = $listener; +unset($this->sorted[$eventName]); +} +public function removeListener($eventName, $listener) +{ +if (!isset($this->listeners[$eventName])) { +return; +} +foreach ($this->listeners[$eventName] as $priority => $listeners) { +if (false !== ($key = array_search($listener, $listeners, true))) { +unset($this->listeners[$eventName][$priority][$key], $this->sorted[$eventName]); +} +} +} +public function addSubscriber(EventSubscriberInterface $subscriber) +{ +foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { +if (is_string($params)) { +$this->addListener($eventName, array($subscriber, $params)); +} elseif (is_string($params[0])) { +$this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); +} else { +foreach ($params as $listener) { +$this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); +} +} +} +} +public function removeSubscriber(EventSubscriberInterface $subscriber) +{ +foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { +if (is_array($params) && is_array($params[0])) { +foreach ($params as $listener) { +$this->removeListener($eventName, array($subscriber, $listener[0])); +} +} else { +$this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); +} +} +} +protected function doDispatch($listeners, $eventName, Event $event) +{ +foreach ($listeners as $listener) { +if ($event->isPropagationStopped()) { +break; +} +call_user_func($listener, $event, $eventName, $this); +} +} +private function sortListeners($eventName) +{ +krsort($this->listeners[$eventName]); +$this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); +} +} +} +namespace Symfony\Component\EventDispatcher +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +class ContainerAwareEventDispatcher extends EventDispatcher +{ +private $container; +private $listenerIds = array(); +private $listeners = array(); +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function addListenerService($eventName, $callback, $priority = 0) +{ +if (!is_array($callback) || 2 !== count($callback)) { +throw new \InvalidArgumentException('Expected an array("service", "method") argument'); +} +$this->listenerIds[$eventName][] = array($callback[0], $callback[1], $priority); +} +public function removeListener($eventName, $listener) +{ +$this->lazyLoad($eventName); +if (isset($this->listenerIds[$eventName])) { +foreach ($this->listenerIds[$eventName] as $i => list($serviceId, $method, $priority)) { +$key = $serviceId.'.'.$method; +if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) { +unset($this->listeners[$eventName][$key]); +if (empty($this->listeners[$eventName])) { +unset($this->listeners[$eventName]); +} +unset($this->listenerIds[$eventName][$i]); +if (empty($this->listenerIds[$eventName])) { +unset($this->listenerIds[$eventName]); +} +} +} +} +parent::removeListener($eventName, $listener); +} +public function hasListeners($eventName = null) +{ +if (null === $eventName) { +return (bool) count($this->listenerIds) || (bool) count($this->listeners); +} +if (isset($this->listenerIds[$eventName])) { +return true; +} +return parent::hasListeners($eventName); +} +public function getListeners($eventName = null) +{ +if (null === $eventName) { +foreach ($this->listenerIds as $serviceEventName => $args) { +$this->lazyLoad($serviceEventName); +} +} else { +$this->lazyLoad($eventName); +} +return parent::getListeners($eventName); +} +public function getListenerPriority($eventName, $listener) +{ +$this->lazyLoad($eventName); +return parent::getListenerPriority($eventName, $listener); +} +public function addSubscriberService($serviceId, $class) +{ +foreach ($class::getSubscribedEvents() as $eventName => $params) { +if (is_string($params)) { +$this->listenerIds[$eventName][] = array($serviceId, $params, 0); +} elseif (is_string($params[0])) { +$this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0); +} else { +foreach ($params as $listener) { +$this->listenerIds[$eventName][] = array($serviceId, $listener[0], isset($listener[1]) ? $listener[1] : 0); +} +} +} +} +public function getContainer() +{ +return $this->container; +} +protected function lazyLoad($eventName) +{ +if (isset($this->listenerIds[$eventName])) { +foreach ($this->listenerIds[$eventName] as list($serviceId, $method, $priority)) { +$listener = $this->container->get($serviceId); +$key = $serviceId.'.'.$method; +if (!isset($this->listeners[$eventName][$key])) { +$this->addListener($eventName, array($listener, $method), $priority); +} elseif ($listener !== $this->listeners[$eventName][$key]) { +parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method)); +$this->addListener($eventName, array($listener, $method), $priority); +} +$this->listeners[$eventName][$key] = $listener; +} +} +} +} +} +namespace Symfony\Component\HttpKernel\EventListener +{ +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class ResponseListener implements EventSubscriberInterface +{ +private $charset; +public function __construct($charset) +{ +$this->charset = $charset; +} +public function onKernelResponse(FilterResponseEvent $event) +{ +if (!$event->isMasterRequest()) { +return; +} +$response = $event->getResponse(); +if (null === $response->getCharset()) { +$response->setCharset($this->charset); +} +$response->prepare($event->getRequest()); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::RESPONSE =>'onKernelResponse', +); +} +} +} +namespace Symfony\Component\HttpKernel\EventListener +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; +use Symfony\Component\Routing\Exception\ResourceNotFoundException; +use Symfony\Component\Routing\Matcher\UrlMatcherInterface; +use Symfony\Component\Routing\Matcher\RequestMatcherInterface; +use Symfony\Component\Routing\RequestContext; +use Symfony\Component\Routing\RequestContextAwareInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\Request; +class RouterListener implements EventSubscriberInterface +{ +private $matcher; +private $context; +private $logger; +private $requestStack; +public function __construct($matcher, RequestStack $requestStack, RequestContext $context = null, LoggerInterface $logger = null) +{ +if (!$matcher instanceof UrlMatcherInterface && !$matcher instanceof RequestMatcherInterface) { +throw new \InvalidArgumentException('Matcher must either implement UrlMatcherInterface or RequestMatcherInterface.'); +} +if (null === $context && !$matcher instanceof RequestContextAwareInterface) { +throw new \InvalidArgumentException('You must either pass a RequestContext or the matcher must implement RequestContextAwareInterface.'); +} +$this->matcher = $matcher; +$this->context = $context ?: $matcher->getContext(); +$this->requestStack = $requestStack; +$this->logger = $logger; +} +private function setCurrentRequest(Request $request = null) +{ +if (null !== $request) { +$this->context->fromRequest($request); +} +} +public function onKernelFinishRequest(FinishRequestEvent $event) +{ +$this->setCurrentRequest($this->requestStack->getParentRequest()); +} +public function onKernelRequest(GetResponseEvent $event) +{ +$request = $event->getRequest(); +$this->setCurrentRequest($request); +if ($request->attributes->has('_controller')) { +return; +} +try { +if ($this->matcher instanceof RequestMatcherInterface) { +$parameters = $this->matcher->matchRequest($request); +} else { +$parameters = $this->matcher->match($request->getPathInfo()); +} +if (null !== $this->logger) { +$this->logger->info('Matched route "{route}".', array('route'=> isset($parameters['_route']) ? $parameters['_route'] :'n/a','route_parameters'=> $parameters,'request_uri'=> $request->getUri(),'method'=> $request->getMethod(), +)); +} +$request->attributes->add($parameters); +unset($parameters['_route'], $parameters['_controller']); +$request->attributes->set('_route_params', $parameters); +} catch (ResourceNotFoundException $e) { +$message = sprintf('No route found for "%s %s"', $request->getMethod(), $request->getPathInfo()); +if ($referer = $request->headers->get('referer')) { +$message .= sprintf(' (from "%s")', $referer); +} +throw new NotFoundHttpException($message, $e); +} catch (MethodNotAllowedException $e) { +$message = sprintf('No route found for "%s %s": Method Not Allowed (Allow: %s)', $request->getMethod(), $request->getPathInfo(), implode(', ', $e->getAllowedMethods())); +throw new MethodNotAllowedHttpException($e->getAllowedMethods(), $message, $e); +} +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array(array('onKernelRequest', 32)), +KernelEvents::FINISH_REQUEST => array(array('onKernelFinishRequest', 0)), +); +} +} +} +namespace Symfony\Component\HttpKernel\Bundle +{ +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; +interface BundleInterface extends ContainerAwareInterface +{ +public function boot(); +public function shutdown(); +public function build(ContainerBuilder $container); +public function getContainerExtension(); +public function getParent(); +public function getName(); +public function getNamespace(); +public function getPath(); +} +} +namespace Symfony\Component\DependencyInjection +{ +trait ContainerAwareTrait +{ +protected $container; +public function setContainer(ContainerInterface $container = null) +{ +$this->container = $container; +} +} +} +namespace Symfony\Component\HttpKernel\Bundle +{ +use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\Console\Application; +use Symfony\Component\Finder\Finder; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; +abstract class Bundle implements BundleInterface +{ +use ContainerAwareTrait; +protected $name; +protected $extension; +protected $path; +private $namespace; +public function boot() +{ +} +public function shutdown() +{ +} +public function build(ContainerBuilder $container) +{ +} +public function getContainerExtension() +{ +if (null === $this->extension) { +$extension = $this->createContainerExtension(); +if (null !== $extension) { +if (!$extension instanceof ExtensionInterface) { +throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', get_class($extension))); +} +$basename = preg_replace('/Bundle$/','', $this->getName()); +$expectedAlias = Container::underscore($basename); +if ($expectedAlias != $extension->getAlias()) { +throw new \LogicException(sprintf('Users will expect the alias of the default extension of a bundle to be the underscored version of the bundle name ("%s"). You can override "Bundle::getContainerExtension()" if you want to use "%s" or another alias.', +$expectedAlias, $extension->getAlias() +)); +} +$this->extension = $extension; +} else { +$this->extension = false; +} +} +if ($this->extension) { +return $this->extension; +} +} +public function getNamespace() +{ +if (null === $this->namespace) { +$this->parseClassName(); +} +return $this->namespace; +} +public function getPath() +{ +if (null === $this->path) { +$reflected = new \ReflectionObject($this); +$this->path = dirname($reflected->getFileName()); +} +return $this->path; +} +public function getParent() +{ +} +final public function getName() +{ +if (null === $this->name) { +$this->parseClassName(); +} +return $this->name; +} +public function registerCommands(Application $application) +{ +if (!is_dir($dir = $this->getPath().'/Command')) { +return; +} +if (!class_exists('Symfony\Component\Finder\Finder')) { +throw new \RuntimeException('You need the symfony/finder component to register bundle commands.'); +} +$finder = new Finder(); +$finder->files()->name('*Command.php')->in($dir); +$prefix = $this->getNamespace().'\\Command'; +foreach ($finder as $file) { +$ns = $prefix; +if ($relativePath = $file->getRelativePath()) { +$ns .='\\'.str_replace('/','\\', $relativePath); +} +$class = $ns.'\\'.$file->getBasename('.php'); +if ($this->container) { +$alias ='console.command.'.strtolower(str_replace('\\','_', $class)); +if ($this->container->has($alias)) { +continue; +} +} +$r = new \ReflectionClass($class); +if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) { +$application->add($r->newInstance()); +} +} +} +protected function getContainerExtensionClass() +{ +$basename = preg_replace('/Bundle$/','', $this->getName()); +return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension'; +} +protected function createContainerExtension() +{ +if (class_exists($class = $this->getContainerExtensionClass())) { +return new $class(); +} +} +private function parseClassName() +{ +$pos = strrpos(static::class,'\\'); +$this->namespace = false === $pos ?'': substr(static::class, 0, $pos); +if (null === $this->name) { +$this->name = false === $pos ? static::class : substr(static::class, $pos + 1); +} +} +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +interface ArgumentResolverInterface +{ +public function getArguments(Request $request, $controller); +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +interface ControllerResolverInterface +{ +public function getController(Request $request); +public function getArguments(Request $request, $controller); +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpFoundation\Request; +class ControllerResolver implements ArgumentResolverInterface, ControllerResolverInterface +{ +private $logger; +private $supportsVariadic; +private $supportsScalarTypes; +public function __construct(LoggerInterface $logger = null) +{ +$this->logger = $logger; +$this->supportsVariadic = method_exists('ReflectionParameter','isVariadic'); +$this->supportsScalarTypes = method_exists('ReflectionParameter','getType'); +} +public function getController(Request $request) +{ +if (!$controller = $request->attributes->get('_controller')) { +if (null !== $this->logger) { +$this->logger->warning('Unable to look for the controller as the "_controller" parameter is missing.'); +} +return false; +} +if (is_array($controller)) { +return $controller; +} +if (is_object($controller)) { +if (method_exists($controller,'__invoke')) { +return $controller; +} +throw new \InvalidArgumentException(sprintf('Controller "%s" for URI "%s" is not callable.', get_class($controller), $request->getPathInfo())); +} +if (false === strpos($controller,':')) { +if (method_exists($controller,'__invoke')) { +return $this->instantiateController($controller); +} elseif (function_exists($controller)) { +return $controller; +} +} +$callable = $this->createController($controller); +if (!is_callable($callable)) { +throw new \InvalidArgumentException(sprintf('The controller for URI "%s" is not callable. %s', $request->getPathInfo(), $this->getControllerError($callable))); +} +return $callable; +} +public function getArguments(Request $request, $controller) +{ +@trigger_error(sprintf('%s is deprecated as of 3.1 and will be removed in 4.0. Implement the %s and inject it in the HttpKernel instead.', __METHOD__, ArgumentResolverInterface::class), E_USER_DEPRECATED); +if (is_array($controller)) { +$r = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && !$controller instanceof \Closure) { +$r = new \ReflectionObject($controller); +$r = $r->getMethod('__invoke'); +} else { +$r = new \ReflectionFunction($controller); +} +return $this->doGetArguments($request, $controller, $r->getParameters()); +} +protected function doGetArguments(Request $request, $controller, array $parameters) +{ +@trigger_error(sprintf('%s is deprecated as of 3.1 and will be removed in 4.0. Implement the %s and inject it in the HttpKernel instead.', __METHOD__, ArgumentResolverInterface::class), E_USER_DEPRECATED); +$attributes = $request->attributes->all(); +$arguments = array(); +foreach ($parameters as $param) { +if (array_key_exists($param->name, $attributes)) { +if ($this->supportsVariadic && $param->isVariadic() && is_array($attributes[$param->name])) { +$arguments = array_merge($arguments, array_values($attributes[$param->name])); +} else { +$arguments[] = $attributes[$param->name]; +} +} elseif ($param->getClass() && $param->getClass()->isInstance($request)) { +$arguments[] = $request; +} elseif ($param->isDefaultValueAvailable()) { +$arguments[] = $param->getDefaultValue(); +} elseif ($this->supportsScalarTypes && $param->hasType() && $param->allowsNull()) { +$arguments[] = null; +} else { +if (is_array($controller)) { +$repr = sprintf('%s::%s()', get_class($controller[0]), $controller[1]); +} elseif (is_object($controller)) { +$repr = get_class($controller); +} else { +$repr = $controller; +} +throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument (because there is no default value or because there is a non optional argument after this one).', $repr, $param->name)); +} +} +return $arguments; +} +protected function createController($controller) +{ +if (false === strpos($controller,'::')) { +throw new \InvalidArgumentException(sprintf('Unable to find controller "%s".', $controller)); +} +list($class, $method) = explode('::', $controller, 2); +if (!class_exists($class)) { +throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $class)); +} +return array($this->instantiateController($class), $method); +} +protected function instantiateController($class) +{ +return new $class(); +} +private function getControllerError($callable) +{ +if (is_string($callable)) { +if (false !== strpos($callable,'::')) { +$callable = explode('::', $callable); +} +if (class_exists($callable) && !method_exists($callable,'__invoke')) { +return sprintf('Class "%s" does not have a method "__invoke".', $callable); +} +if (!function_exists($callable)) { +return sprintf('Function "%s" does not exist.', $callable); +} +} +if (!is_array($callable)) { +return sprintf('Invalid type for controller given, expected string or array, got "%s".', gettype($callable)); +} +if (2 !== count($callable)) { +return sprintf('Invalid format for controller, expected array(controller, method) or controller::method.'); +} +list($controller, $method) = $callable; +if (is_string($controller) && !class_exists($controller)) { +return sprintf('Class "%s" does not exist.', $controller); +} +$className = is_object($controller) ? get_class($controller) : $controller; +if (method_exists($controller, $method)) { +return sprintf('Method "%s" on class "%s" should be public and non-abstract.', $method, $className); +} +$collection = get_class_methods($controller); +$alternatives = array(); +foreach ($collection as $item) { +$lev = levenshtein($method, $item); +if ($lev <= strlen($method) / 3 || false !== strpos($item, $method)) { +$alternatives[] = $item; +} +} +asort($alternatives); +$message = sprintf('Expected method "%s" on class "%s"', $method, $className); +if (count($alternatives) > 0) { +$message .= sprintf(', did you mean "%s"?', implode('", "', $alternatives)); +} else { +$message .= sprintf('. Available methods: "%s".', implode('", "', $collection)); +} +return $message; +} +} +} +namespace Symfony\Component\HttpKernel\Controller +{ +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver; +use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory; +use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface; +final class ArgumentResolver implements ArgumentResolverInterface +{ +private $argumentMetadataFactory; +private $argumentValueResolvers; +public function __construct(ArgumentMetadataFactoryInterface $argumentMetadataFactory = null, array $argumentValueResolvers = array()) +{ +$this->argumentMetadataFactory = $argumentMetadataFactory ?: new ArgumentMetadataFactory(); +$this->argumentValueResolvers = $argumentValueResolvers ?: self::getDefaultArgumentValueResolvers(); +} +public function getArguments(Request $request, $controller) +{ +$arguments = array(); +foreach ($this->argumentMetadataFactory->createArgumentMetadata($controller) as $metadata) { +foreach ($this->argumentValueResolvers as $resolver) { +if (!$resolver->supports($request, $metadata)) { +continue; +} +$resolved = $resolver->resolve($request, $metadata); +if (!$resolved instanceof \Generator) { +throw new \InvalidArgumentException(sprintf('%s::resolve() must yield at least one value.', get_class($resolver))); +} +foreach ($resolved as $append) { +$arguments[] = $append; +} +continue 2; +} +$representative = $controller; +if (is_array($representative)) { +$representative = sprintf('%s::%s()', get_class($representative[0]), $representative[1]); +} elseif (is_object($representative)) { +$representative = get_class($representative); +} +throw new \RuntimeException(sprintf('Controller "%s" requires that you provide a value for the "$%s" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.', $representative, $metadata->getName())); +} +return $arguments; +} +public static function getDefaultArgumentValueResolvers() +{ +return array( +new RequestAttributeValueResolver(), +new RequestValueResolver(), +new DefaultValueResolver(), +new VariadicValueResolver(), +); +} +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +class ArgumentMetadata +{ +private $name; +private $type; +private $isVariadic; +private $hasDefaultValue; +private $defaultValue; +private $isNullable; +public function __construct($name, $type, $isVariadic, $hasDefaultValue, $defaultValue, $isNullable = false) +{ +$this->name = $name; +$this->type = $type; +$this->isVariadic = $isVariadic; +$this->hasDefaultValue = $hasDefaultValue; +$this->defaultValue = $defaultValue; +$this->isNullable = $isNullable || null === $type || ($hasDefaultValue && null === $defaultValue); +} +public function getName() +{ +return $this->name; +} +public function getType() +{ +return $this->type; +} +public function isVariadic() +{ +return $this->isVariadic; +} +public function hasDefaultValue() +{ +return $this->hasDefaultValue; +} +public function isNullable() +{ +return $this->isNullable; +} +public function getDefaultValue() +{ +if (!$this->hasDefaultValue) { +throw new \LogicException(sprintf('Argument $%s does not have a default value. Use %s::hasDefaultValue() to avoid this exception.', $this->name, __CLASS__)); +} +return $this->defaultValue; +} +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +interface ArgumentMetadataFactoryInterface +{ +public function createArgumentMetadata($controller); +} +} +namespace Symfony\Component\HttpKernel\ControllerMetadata +{ +final class ArgumentMetadataFactory implements ArgumentMetadataFactoryInterface +{ +private $supportsVariadic; +private $supportsParameterType; +public function __construct() +{ +$this->supportsVariadic = method_exists('ReflectionParameter','isVariadic'); +$this->supportsParameterType = method_exists('ReflectionParameter','getType'); +} +public function createArgumentMetadata($controller) +{ +$arguments = array(); +if (is_array($controller)) { +$reflection = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && !$controller instanceof \Closure) { +$reflection = (new \ReflectionObject($controller))->getMethod('__invoke'); +} else { +$reflection = new \ReflectionFunction($controller); +} +foreach ($reflection->getParameters() as $param) { +$arguments[] = new ArgumentMetadata($param->getName(), $this->getType($param), $this->isVariadic($param), $this->hasDefaultValue($param), $this->getDefaultValue($param), $param->allowsNull()); +} +return $arguments; +} +private function isVariadic(\ReflectionParameter $parameter) +{ +return $this->supportsVariadic && $parameter->isVariadic(); +} +private function hasDefaultValue(\ReflectionParameter $parameter) +{ +return $parameter->isDefaultValueAvailable(); +} +private function getDefaultValue(\ReflectionParameter $parameter) +{ +return $this->hasDefaultValue($parameter) ? $parameter->getDefaultValue() : null; +} +private function getType(\ReflectionParameter $parameter) +{ +if ($this->supportsParameterType) { +if (!$type = $parameter->getType()) { +return; +} +$typeName = $type instanceof \ReflectionNamedType ? $type->getName() : $type->__toString(); +if ('array'=== $typeName && !$type->isBuiltin()) { +return; +} +return $typeName; +} +if (preg_match('/^(?:[^ ]++ ){4}([a-zA-Z_\x7F-\xFF][^ ]++)/', $parameter, $info)) { +return $info[1]; +} +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\EventDispatcher\Event; +class KernelEvent extends Event +{ +private $kernel; +private $request; +private $requestType; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType) +{ +$this->kernel = $kernel; +$this->request = $request; +$this->requestType = $requestType; +} +public function getKernel() +{ +return $this->kernel; +} +public function getRequest() +{ +return $this->request; +} +public function getRequestType() +{ +return $this->requestType; +} +public function isMasterRequest() +{ +return HttpKernelInterface::MASTER_REQUEST === $this->requestType; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class FilterControllerEvent extends KernelEvent +{ +private $controller; +public function __construct(HttpKernelInterface $kernel, callable $controller, Request $request, $requestType) +{ +parent::__construct($kernel, $request, $requestType); +$this->setController($controller); +} +public function getController() +{ +return $this->controller; +} +public function setController(callable $controller) +{ +$this->controller = $controller; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +class FilterResponseEvent extends KernelEvent +{ +private $response; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, Response $response) +{ +parent::__construct($kernel, $request, $requestType); +$this->setResponse($response); +} +public function getResponse() +{ +return $this->response; +} +public function setResponse(Response $response) +{ +$this->response = $response; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpFoundation\Response; +class GetResponseEvent extends KernelEvent +{ +private $response; +public function getResponse() +{ +return $this->response; +} +public function setResponse(Response $response) +{ +$this->response = $response; +$this->stopPropagation(); +} +public function hasResponse() +{ +return null !== $this->response; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class GetResponseForControllerResultEvent extends GetResponseEvent +{ +private $controllerResult; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, $controllerResult) +{ +parent::__construct($kernel, $request, $requestType); +$this->controllerResult = $controllerResult; +} +public function getControllerResult() +{ +return $this->controllerResult; +} +public function setControllerResult($controllerResult) +{ +$this->controllerResult = $controllerResult; +} +} +} +namespace Symfony\Component\HttpKernel\Event +{ +use Symfony\Component\HttpKernel\HttpKernelInterface; +use Symfony\Component\HttpFoundation\Request; +class GetResponseForExceptionEvent extends GetResponseEvent +{ +private $exception; +public function __construct(HttpKernelInterface $kernel, Request $request, $requestType, \Exception $e) +{ +parent::__construct($kernel, $request, $requestType); +$this->setException($e); +} +public function getException() +{ +return $this->exception; +} +public function setException(\Exception $exception) +{ +$this->exception = $exception; +} +} +} +namespace Symfony\Component\HttpKernel +{ +use Symfony\Component\HttpKernel\Controller\ArgumentResolver; +use Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface; +use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface; +use Symfony\Component\HttpKernel\Event\FilterControllerArgumentsEvent; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Event\PostResponseEvent; +use Symfony\Component\HttpFoundation\Exception\ConflictingHeadersException; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +class HttpKernel implements HttpKernelInterface, TerminableInterface +{ +protected $dispatcher; +protected $resolver; +protected $requestStack; +private $argumentResolver; +public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null, ArgumentResolverInterface $argumentResolver = null) +{ +$this->dispatcher = $dispatcher; +$this->resolver = $resolver; +$this->requestStack = $requestStack ?: new RequestStack(); +$this->argumentResolver = $argumentResolver; +if (null === $this->argumentResolver) { +@trigger_error(sprintf('As of 3.1 an %s is used to resolve arguments. In 4.0 the $argumentResolver becomes the %s if no other is provided instead of using the $resolver argument.', ArgumentResolverInterface::class, ArgumentResolver::class), E_USER_DEPRECATED); +$this->argumentResolver = $resolver; +} +} +public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) +{ +$request->headers->set('X-Php-Ob-Level', ob_get_level()); +try { +return $this->handleRaw($request, $type); +} catch (\Exception $e) { +if ($e instanceof ConflictingHeadersException) { +$e = new BadRequestHttpException('The request headers contain conflicting information regarding the origin of this request.', $e); +} +if (false === $catch) { +$this->finishRequest($request, $type); +throw $e; +} +return $this->handleException($e, $request, $type); +} +} +public function terminate(Request $request, Response $response) +{ +$this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response)); +} +public function terminateWithException(\Exception $exception) +{ +if (!$request = $this->requestStack->getMasterRequest()) { +throw new \LogicException('Request stack is empty', 0, $exception); +} +$response = $this->handleException($exception, $request, self::MASTER_REQUEST); +$response->sendHeaders(); +$response->sendContent(); +$this->terminate($request, $response); +} +private function handleRaw(Request $request, $type = self::MASTER_REQUEST) +{ +$this->requestStack->push($request); +$event = new GetResponseEvent($this, $request, $type); +$this->dispatcher->dispatch(KernelEvents::REQUEST, $event); +if ($event->hasResponse()) { +return $this->filterResponse($event->getResponse(), $request, $type); +} +if (false === $controller = $this->resolver->getController($request)) { +throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". The route is wrongly configured.', $request->getPathInfo())); +} +$event = new FilterControllerEvent($this, $controller, $request, $type); +$this->dispatcher->dispatch(KernelEvents::CONTROLLER, $event); +$controller = $event->getController(); +$arguments = $this->argumentResolver->getArguments($request, $controller); +$event = new FilterControllerArgumentsEvent($this, $controller, $arguments, $request, $type); +$this->dispatcher->dispatch(KernelEvents::CONTROLLER_ARGUMENTS, $event); +$controller = $event->getController(); +$arguments = $event->getArguments(); +$response = call_user_func_array($controller, $arguments); +if (!$response instanceof Response) { +$event = new GetResponseForControllerResultEvent($this, $request, $type, $response); +$this->dispatcher->dispatch(KernelEvents::VIEW, $event); +if ($event->hasResponse()) { +$response = $event->getResponse(); +} +if (!$response instanceof Response) { +$msg = sprintf('The controller must return a response (%s given).', $this->varToString($response)); +if (null === $response) { +$msg .=' Did you forget to add a return statement somewhere in your controller?'; +} +throw new \LogicException($msg); +} +} +return $this->filterResponse($response, $request, $type); +} +private function filterResponse(Response $response, Request $request, $type) +{ +$event = new FilterResponseEvent($this, $request, $type, $response); +$this->dispatcher->dispatch(KernelEvents::RESPONSE, $event); +$this->finishRequest($request, $type); +return $event->getResponse(); +} +private function finishRequest(Request $request, $type) +{ +$this->dispatcher->dispatch(KernelEvents::FINISH_REQUEST, new FinishRequestEvent($this, $request, $type)); +$this->requestStack->pop(); +} +private function handleException(\Exception $e, $request, $type) +{ +$event = new GetResponseForExceptionEvent($this, $request, $type, $e); +$this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event); +$e = $event->getException(); +if (!$event->hasResponse()) { +$this->finishRequest($request, $type); +throw $e; +} +$response = $event->getResponse(); +if ($response->headers->has('X-Status-Code')) { +$response->setStatusCode($response->headers->get('X-Status-Code')); +$response->headers->remove('X-Status-Code'); +} elseif (!$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) { +if ($e instanceof HttpExceptionInterface) { +$response->setStatusCode($e->getStatusCode()); +$response->headers->add($e->getHeaders()); +} else { +$response->setStatusCode(500); +} +} +try { +return $this->filterResponse($response, $request, $type); +} catch (\Exception $e) { +return $response; +} +} +private function varToString($var) +{ +if (is_object($var)) { +return sprintf('Object(%s)', get_class($var)); +} +if (is_array($var)) { +$a = array(); +foreach ($var as $k => $v) { +$a[] = sprintf('%s => %s', $k, $this->varToString($v)); +} +return sprintf('Array(%s)', implode(', ', $a)); +} +if (is_resource($var)) { +return sprintf('Resource(%s)', get_resource_type($var)); +} +if (null === $var) { +return'null'; +} +if (false === $var) { +return'false'; +} +if (true === $var) { +return'true'; +} +return (string) $var; +} +} +} +namespace Symfony\Component\HttpKernel +{ +final class KernelEvents +{ +const REQUEST ='kernel.request'; +const EXCEPTION ='kernel.exception'; +const VIEW ='kernel.view'; +const CONTROLLER ='kernel.controller'; +const CONTROLLER_ARGUMENTS ='kernel.controller_arguments'; +const RESPONSE ='kernel.response'; +const TERMINATE ='kernel.terminate'; +const FINISH_REQUEST ='kernel.finish_request'; +} +} +namespace Symfony\Component\HttpKernel\Config +{ +use Symfony\Component\Config\FileLocator as BaseFileLocator; +use Symfony\Component\HttpKernel\KernelInterface; +class FileLocator extends BaseFileLocator +{ +private $kernel; +private $path; +public function __construct(KernelInterface $kernel, $path = null, array $paths = array()) +{ +$this->kernel = $kernel; +if (null !== $path) { +$this->path = $path; +$paths[] = $path; +} +parent::__construct($paths); +} +public function locate($file, $currentPath = null, $first = true) +{ +if (isset($file[0]) &&'@'=== $file[0]) { +return $this->kernel->locateResource($file, $this->path, $first); +} +return parent::locate($file, $currentPath, $first); +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Controller +{ +use Symfony\Component\HttpKernel\KernelInterface; +class ControllerNameParser +{ +protected $kernel; +public function __construct(KernelInterface $kernel) +{ +$this->kernel = $kernel; +} +public function parse($controller) +{ +$parts = explode(':', $controller); +if (3 !== count($parts) || in_array('', $parts, true)) { +throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "a:b:c" controller string.', $controller)); +} +$originalController = $controller; +list($bundle, $controller, $action) = $parts; +$controller = str_replace('/','\\', $controller); +$bundles = array(); +try { +$allBundles = $this->kernel->getBundle($bundle, false); +} catch (\InvalidArgumentException $e) { +$message = sprintf('The "%s" (from the _controller value "%s") does not exist or is not enabled in your kernel!', +$bundle, +$originalController +); +if ($alternative = $this->findAlternative($bundle)) { +$message .= sprintf(' Did you mean "%s:%s:%s"?', $alternative, $controller, $action); +} +throw new \InvalidArgumentException($message, 0, $e); +} +foreach ($allBundles as $b) { +$try = $b->getNamespace().'\\Controller\\'.$controller.'Controller'; +if (class_exists($try)) { +return $try.'::'.$action.'Action'; +} +$bundles[] = $b->getName(); +$msg = sprintf('The _controller value "%s:%s:%s" maps to a "%s" class, but this class was not found. Create this class or check the spelling of the class and its namespace.', $bundle, $controller, $action, $try); +} +if (count($bundles) > 1) { +$msg = sprintf('Unable to find controller "%s:%s" in bundles %s.', $bundle, $controller, implode(', ', $bundles)); +} +throw new \InvalidArgumentException($msg); +} +public function build($controller) +{ +if (0 === preg_match('#^(.*?\\\\Controller\\\\(.+)Controller)::(.+)Action$#', $controller, $match)) { +throw new \InvalidArgumentException(sprintf('The "%s" controller is not a valid "class::method" string.', $controller)); +} +$className = $match[1]; +$controllerName = $match[2]; +$actionName = $match[3]; +foreach ($this->kernel->getBundles() as $name => $bundle) { +if (0 !== strpos($className, $bundle->getNamespace())) { +continue; +} +return sprintf('%s:%s:%s', $name, $controllerName, $actionName); +} +throw new \InvalidArgumentException(sprintf('Unable to find a bundle that defines controller "%s".', $controller)); +} +private function findAlternative($nonExistentBundleName) +{ +$bundleNames = array_map(function ($b) { +return $b->getName(); +}, $this->kernel->getBundles()); +$alternative = null; +$shortest = null; +foreach ($bundleNames as $bundleName) { +if (false !== strpos($bundleName, $nonExistentBundleName)) { +return $bundleName; +} +$lev = levenshtein($nonExistentBundleName, $bundleName); +if ($lev <= strlen($nonExistentBundleName) / 3 && ($alternative === null || $lev < $shortest)) { +$alternative = $bundleName; +$shortest = $lev; +} +} +return $alternative; +} +} +} +namespace Symfony\Bundle\FrameworkBundle\Controller +{ +use Psr\Log\LoggerInterface; +use Symfony\Component\HttpKernel\Controller\ControllerResolver as BaseControllerResolver; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +class ControllerResolver extends BaseControllerResolver +{ +protected $container; +protected $parser; +public function __construct(ContainerInterface $container, ControllerNameParser $parser, LoggerInterface $logger = null) +{ +$this->container = $container; +$this->parser = $parser; +parent::__construct($logger); +} +protected function createController($controller) +{ +if (false === strpos($controller,'::')) { +$count = substr_count($controller,':'); +if (2 == $count) { +$controller = $this->parser->parse($controller); +} elseif (1 == $count) { +list($service, $method) = explode(':', $controller, 2); +return array($this->container->get($service), $method); +} elseif ($this->container->has($controller) && method_exists($service = $this->container->get($controller),'__invoke')) { +return $service; +} else { +throw new \LogicException(sprintf('Unable to parse the controller name "%s".', $controller)); +} +} +return parent::createController($controller); +} +protected function instantiateController($class) +{ +if ($this->container->has($class)) { +return $this->container->get($class); +} +$controller = parent::instantiateController($class); +if ($controller instanceof ContainerAwareInterface) { +$controller->setContainer($this->container); +} +return $controller; +} +} +} +namespace Symfony\Component\Security\Http +{ +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Event\GetResponseEvent; +use Symfony\Component\HttpKernel\Event\FinishRequestEvent; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class Firewall implements EventSubscriberInterface +{ +private $map; +private $dispatcher; +private $exceptionListeners; +public function __construct(FirewallMapInterface $map, EventDispatcherInterface $dispatcher) +{ +$this->map = $map; +$this->dispatcher = $dispatcher; +$this->exceptionListeners = new \SplObjectStorage(); +} +public function onKernelRequest(GetResponseEvent $event) +{ +if (!$event->isMasterRequest()) { +return; +} +list($listeners, $exceptionListener) = $this->map->getListeners($event->getRequest()); +if (null !== $exceptionListener) { +$this->exceptionListeners[$event->getRequest()] = $exceptionListener; +$exceptionListener->register($this->dispatcher); +} +foreach ($listeners as $listener) { +$listener->handle($event); +if ($event->hasResponse()) { +break; +} +} +} +public function onKernelFinishRequest(FinishRequestEvent $event) +{ +$request = $event->getRequest(); +if (isset($this->exceptionListeners[$request])) { +$this->exceptionListeners[$request]->unregister($this->dispatcher); +unset($this->exceptionListeners[$request]); +} +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::REQUEST => array('onKernelRequest', 8), +KernelEvents::FINISH_REQUEST =>'onKernelFinishRequest', +); +} +} +} +namespace Symfony\Component\Security\Core\User +{ +use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; +use Symfony\Component\Security\Core\Exception\UnsupportedUserException; +interface UserProviderInterface +{ +public function loadUserByUsername($username); +public function refreshUser(UserInterface $user); +public function supportsClass($class); +} +} +namespace Symfony\Component\Security\Core\Authentication +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +use Symfony\Component\Security\Core\Exception\AuthenticationException; +interface AuthenticationManagerInterface +{ +public function authenticate(TokenInterface $token); +} +} +namespace Symfony\Component\Security\Core\Authentication +{ +use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent; +use Symfony\Component\Security\Core\Event\AuthenticationEvent; +use Symfony\Component\Security\Core\AuthenticationEvents; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Security\Core\Exception\AccountStatusException; +use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Core\Exception\ProviderNotFoundException; +use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class AuthenticationProviderManager implements AuthenticationManagerInterface +{ +private $providers; +private $eraseCredentials; +private $eventDispatcher; +public function __construct(array $providers, $eraseCredentials = true) +{ +if (!$providers) { +throw new \InvalidArgumentException('You must at least add one authentication provider.'); +} +foreach ($providers as $provider) { +if (!$provider instanceof AuthenticationProviderInterface) { +throw new \InvalidArgumentException(sprintf('Provider "%s" must implement the AuthenticationProviderInterface.', get_class($provider))); +} +} +$this->providers = $providers; +$this->eraseCredentials = (bool) $eraseCredentials; +} +public function setEventDispatcher(EventDispatcherInterface $dispatcher) +{ +$this->eventDispatcher = $dispatcher; +} +public function authenticate(TokenInterface $token) +{ +$lastException = null; +$result = null; +foreach ($this->providers as $provider) { +if (!$provider->supports($token)) { +continue; +} +try { +$result = $provider->authenticate($token); +if (null !== $result) { +break; +} +} catch (AccountStatusException $e) { +$e->setToken($token); +throw $e; +} catch (AuthenticationException $e) { +$lastException = $e; +} +} +if (null !== $result) { +if (true === $this->eraseCredentials) { +$result->eraseCredentials(); +} +if (null !== $this->eventDispatcher) { +$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_SUCCESS, new AuthenticationEvent($result)); +} +return $result; +} +if (null === $lastException) { +$lastException = new ProviderNotFoundException(sprintf('No Authentication Provider found for token of class "%s".', get_class($token))); +} +if (null !== $this->eventDispatcher) { +$this->eventDispatcher->dispatch(AuthenticationEvents::AUTHENTICATION_FAILURE, new AuthenticationFailureEvent($token, $lastException)); +} +$lastException->setToken($token); +throw $lastException; +} +} +} +namespace Symfony\Component\Security\Core\Authentication\Token\Storage +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface TokenStorageInterface +{ +public function getToken(); +public function setToken(TokenInterface $token = null); +} +} +namespace Symfony\Component\Security\Core\Authentication\Token\Storage +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class TokenStorage implements TokenStorageInterface +{ +private $token; +public function getToken() +{ +return $this->token; +} +public function setToken(TokenInterface $token = null) +{ +$this->token = $token; +} +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface AccessDecisionManagerInterface +{ +public function decide(TokenInterface $token, array $attributes, $object = null); +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +class AccessDecisionManager implements AccessDecisionManagerInterface +{ +const STRATEGY_AFFIRMATIVE ='affirmative'; +const STRATEGY_CONSENSUS ='consensus'; +const STRATEGY_UNANIMOUS ='unanimous'; +private $voters; +private $strategy; +private $allowIfAllAbstainDecisions; +private $allowIfEqualGrantedDeniedDecisions; +public function __construct(array $voters = array(), $strategy = self::STRATEGY_AFFIRMATIVE, $allowIfAllAbstainDecisions = false, $allowIfEqualGrantedDeniedDecisions = true) +{ +$strategyMethod ='decide'.ucfirst($strategy); +if (!is_callable(array($this, $strategyMethod))) { +throw new \InvalidArgumentException(sprintf('The strategy "%s" is not supported.', $strategy)); +} +$this->voters = $voters; +$this->strategy = $strategyMethod; +$this->allowIfAllAbstainDecisions = (bool) $allowIfAllAbstainDecisions; +$this->allowIfEqualGrantedDeniedDecisions = (bool) $allowIfEqualGrantedDeniedDecisions; +} +public function setVoters(array $voters) +{ +$this->voters = $voters; +} +public function decide(TokenInterface $token, array $attributes, $object = null) +{ +return $this->{$this->strategy}($token, $attributes, $object); +} +private function decideAffirmative(TokenInterface $token, array $attributes, $object = null) +{ +$deny = 0; +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, $attributes); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +return true; +case VoterInterface::ACCESS_DENIED: +++$deny; +break; +default: +break; +} +} +if ($deny > 0) { +return false; +} +return $this->allowIfAllAbstainDecisions; +} +private function decideConsensus(TokenInterface $token, array $attributes, $object = null) +{ +$grant = 0; +$deny = 0; +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, $attributes); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +++$grant; +break; +case VoterInterface::ACCESS_DENIED: +++$deny; +break; +} +} +if ($grant > $deny) { +return true; +} +if ($deny > $grant) { +return false; +} +if ($grant > 0) { +return $this->allowIfEqualGrantedDeniedDecisions; +} +return $this->allowIfAllAbstainDecisions; +} +private function decideUnanimous(TokenInterface $token, array $attributes, $object = null) +{ +$grant = 0; +foreach ($attributes as $attribute) { +foreach ($this->voters as $voter) { +$result = $voter->vote($token, $object, array($attribute)); +switch ($result) { +case VoterInterface::ACCESS_GRANTED: +++$grant; +break; +case VoterInterface::ACCESS_DENIED: +return false; +default: +break; +} +} +} +if ($grant > 0) { +return true; +} +return $this->allowIfAllAbstainDecisions; +} +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +interface AuthorizationCheckerInterface +{ +public function isGranted($attributes, $object = null); +} +} +namespace Symfony\Component\Security\Core\Authorization +{ +use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; +class AuthorizationChecker implements AuthorizationCheckerInterface +{ +private $tokenStorage; +private $accessDecisionManager; +private $authenticationManager; +private $alwaysAuthenticate; +public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, AccessDecisionManagerInterface $accessDecisionManager, $alwaysAuthenticate = false) +{ +$this->tokenStorage = $tokenStorage; +$this->authenticationManager = $authenticationManager; +$this->accessDecisionManager = $accessDecisionManager; +$this->alwaysAuthenticate = $alwaysAuthenticate; +} +final public function isGranted($attributes, $object = null) +{ +if (null === ($token = $this->tokenStorage->getToken())) { +throw new AuthenticationCredentialsNotFoundException('The token storage contains no authentication token. One possible reason may be that there is no firewall configured for this URL.'); +} +if ($this->alwaysAuthenticate || !$token->isAuthenticated()) { +$this->tokenStorage->setToken($token = $this->authenticationManager->authenticate($token)); +} +if (!is_array($attributes)) { +$attributes = array($attributes); +} +return $this->accessDecisionManager->decide($token, $attributes, $object); +} +} +} +namespace Symfony\Component\Security\Core\Authorization\Voter +{ +use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; +interface VoterInterface +{ +const ACCESS_GRANTED = 1; +const ACCESS_ABSTAIN = 0; +const ACCESS_DENIED = -1; +public function vote(TokenInterface $token, $subject, array $attributes); +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +final class FirewallConfig +{ +private $name; +private $userChecker; +private $requestMatcher; +private $securityEnabled; +private $stateless; +private $provider; +private $context; +private $entryPoint; +private $accessDeniedHandler; +private $accessDeniedUrl; +private $listeners; +public function __construct($name, $userChecker, $requestMatcher = null, $securityEnabled = true, $stateless = false, $provider = null, $context = null, $entryPoint = null, $accessDeniedHandler = null, $accessDeniedUrl = null, $listeners = array()) +{ +$this->name = $name; +$this->userChecker = $userChecker; +$this->requestMatcher = $requestMatcher; +$this->securityEnabled = $securityEnabled; +$this->stateless = $stateless; +$this->provider = $provider; +$this->context = $context; +$this->entryPoint = $entryPoint; +$this->accessDeniedHandler = $accessDeniedHandler; +$this->accessDeniedUrl = $accessDeniedUrl; +$this->listeners = $listeners; +} +public function getName() +{ +return $this->name; +} +public function getRequestMatcher() +{ +return $this->requestMatcher; +} +public function isSecurityEnabled() +{ +return $this->securityEnabled; +} +public function allowsAnonymous() +{ +return in_array('anonymous', $this->listeners, true); +} +public function isStateless() +{ +return $this->stateless; +} +public function getProvider() +{ +return $this->provider; +} +public function getContext() +{ +return $this->context; +} +public function getEntryPoint() +{ +return $this->entryPoint; +} +public function getUserChecker() +{ +return $this->userChecker; +} +public function getAccessDeniedHandler() +{ +return $this->accessDeniedHandler; +} +public function getAccessDeniedUrl() +{ +return $this->accessDeniedUrl; +} +public function getListeners() +{ +return $this->listeners; +} +} +} +namespace Symfony\Component\Security\Http +{ +use Symfony\Component\HttpFoundation\Request; +interface FirewallMapInterface +{ +public function getListeners(Request $request); +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +use Symfony\Component\Security\Http\FirewallMapInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\DependencyInjection\ContainerInterface; +class FirewallMap implements FirewallMapInterface +{ +protected $container; +protected $map; +private $contexts; +public function __construct(ContainerInterface $container, array $map) +{ +$this->container = $container; +$this->map = $map; +$this->contexts = new \SplObjectStorage(); +} +public function getListeners(Request $request) +{ +$context = $this->getFirewallContext($request); +if (null === $context) { +return array(array(), null); +} +return $context->getContext(); +} +public function getFirewallConfig(Request $request) +{ +$context = $this->getFirewallContext($request); +if (null === $context) { +return; +} +return $context->getConfig(); +} +private function getFirewallContext(Request $request) +{ +if ($this->contexts->contains($request)) { +return $this->contexts[$request]; +} +foreach ($this->map as $contextId => $requestMatcher) { +if (null === $requestMatcher || $requestMatcher->matches($request)) { +return $this->contexts[$request] = $this->container->get($contextId); +} +} +} +} +} +namespace Symfony\Bundle\SecurityBundle\Security +{ +use Symfony\Component\Security\Http\Firewall\ExceptionListener; +class FirewallContext +{ +private $listeners; +private $exceptionListener; +private $config; +public function __construct(array $listeners, ExceptionListener $exceptionListener = null, FirewallConfig $config = null) +{ +$this->listeners = $listeners; +$this->exceptionListener = $exceptionListener; +$this->config = $config; +} +public function getConfig() +{ +return $this->config; +} +public function getContext() +{ +return array($this->listeners, $this->exceptionListener); +} +} +} +namespace Symfony\Component\HttpFoundation +{ +interface RequestMatcherInterface +{ +public function matches(Request $request); +} +} +namespace Symfony\Component\HttpFoundation +{ +class RequestMatcher implements RequestMatcherInterface +{ +private $path; +private $host; +private $methods = array(); +private $ips = array(); +private $attributes = array(); +private $schemes = array(); +public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = array(), $schemes = null) +{ +$this->matchPath($path); +$this->matchHost($host); +$this->matchMethod($methods); +$this->matchIps($ips); +$this->matchScheme($schemes); +foreach ($attributes as $k => $v) { +$this->matchAttribute($k, $v); +} +} +public function matchScheme($scheme) +{ +$this->schemes = null !== $scheme ? array_map('strtolower', (array) $scheme) : array(); +} +public function matchHost($regexp) +{ +$this->host = $regexp; +} +public function matchPath($regexp) +{ +$this->path = $regexp; +} +public function matchIp($ip) +{ +$this->matchIps($ip); +} +public function matchIps($ips) +{ +$this->ips = null !== $ips ? (array) $ips : array(); +} +public function matchMethod($method) +{ +$this->methods = null !== $method ? array_map('strtoupper', (array) $method) : array(); +} +public function matchAttribute($key, $regexp) +{ +$this->attributes[$key] = $regexp; +} +public function matches(Request $request) +{ +if ($this->schemes && !in_array($request->getScheme(), $this->schemes, true)) { +return false; +} +if ($this->methods && !in_array($request->getMethod(), $this->methods, true)) { +return false; +} +foreach ($this->attributes as $key => $pattern) { +if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) { +return false; +} +} +if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) { +return false; +} +if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) { +return false; +} +if (IpUtils::checkIp($request->getClientIp(), $this->ips)) { +return true; +} +return count($this->ips) === 0; +} +} +} +namespace +{ +class Twig_Environment +{ +const VERSION ='1.32.0'; +const VERSION_ID = 13200; +const MAJOR_VERSION = 1; +const MINOR_VERSION = 32; +const RELEASE_VERSION = 0; +const EXTRA_VERSION =''; +protected $charset; +protected $loader; +protected $debug; +protected $autoReload; +protected $cache; +protected $lexer; +protected $parser; +protected $compiler; +protected $baseTemplateClass; +protected $extensions; +protected $parsers; +protected $visitors; +protected $filters; +protected $tests; +protected $functions; +protected $globals; +protected $runtimeInitialized = false; +protected $extensionInitialized = false; +protected $loadedTemplates; +protected $strictVariables; +protected $unaryOperators; +protected $binaryOperators; +protected $templateClassPrefix ='__TwigTemplate_'; +protected $functionCallbacks = array(); +protected $filterCallbacks = array(); +protected $staging; +private $originalCache; +private $bcWriteCacheFile = false; +private $bcGetCacheFilename = false; +private $lastModifiedExtension = 0; +private $extensionsByClass = array(); +private $runtimeLoaders = array(); +private $runtimes = array(); +private $optionsHash; +public function __construct(Twig_LoaderInterface $loader = null, $options = array()) +{ +if (null !== $loader) { +$this->setLoader($loader); +} else { +@trigger_error('Not passing a Twig_LoaderInterface as the first constructor argument of Twig_Environment is deprecated since version 1.21.', E_USER_DEPRECATED); +} +$options = array_merge(array('debug'=> false,'charset'=>'UTF-8','base_template_class'=>'Twig_Template','strict_variables'=> false,'autoescape'=>'html','cache'=> false,'auto_reload'=> null,'optimizations'=> -1, +), $options); +$this->debug = (bool) $options['debug']; +$this->charset = strtoupper($options['charset']); +$this->baseTemplateClass = $options['base_template_class']; +$this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; +$this->strictVariables = (bool) $options['strict_variables']; +$this->setCache($options['cache']); +$this->addExtension(new Twig_Extension_Core()); +$this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); +$this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); +$this->staging = new Twig_Extension_Staging(); +if (is_string($this->originalCache)) { +$r = new ReflectionMethod($this,'writeCacheFile'); +if ($r->getDeclaringClass()->getName() !== __CLASS__) { +@trigger_error('The Twig_Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->bcWriteCacheFile = true; +} +$r = new ReflectionMethod($this,'getCacheFilename'); +if ($r->getDeclaringClass()->getName() !== __CLASS__) { +@trigger_error('The Twig_Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->bcGetCacheFilename = true; +} +} +} +public function getBaseTemplateClass() +{ +return $this->baseTemplateClass; +} +public function setBaseTemplateClass($class) +{ +$this->baseTemplateClass = $class; +$this->updateOptionsHash(); +} +public function enableDebug() +{ +$this->debug = true; +$this->updateOptionsHash(); +} +public function disableDebug() +{ +$this->debug = false; +$this->updateOptionsHash(); +} +public function isDebug() +{ +return $this->debug; +} +public function enableAutoReload() +{ +$this->autoReload = true; +} +public function disableAutoReload() +{ +$this->autoReload = false; +} +public function isAutoReload() +{ +return $this->autoReload; +} +public function enableStrictVariables() +{ +$this->strictVariables = true; +$this->updateOptionsHash(); +} +public function disableStrictVariables() +{ +$this->strictVariables = false; +$this->updateOptionsHash(); +} +public function isStrictVariables() +{ +return $this->strictVariables; +} +public function getCache($original = true) +{ +return $original ? $this->originalCache : $this->cache; +} +public function setCache($cache) +{ +if (is_string($cache)) { +$this->originalCache = $cache; +$this->cache = new Twig_Cache_Filesystem($cache); +} elseif (false === $cache) { +$this->originalCache = $cache; +$this->cache = new Twig_Cache_Null(); +} elseif (null === $cache) { +@trigger_error('Using "null" as the cache strategy is deprecated since version 1.23 and will be removed in Twig 2.0.', E_USER_DEPRECATED); +$this->originalCache = false; +$this->cache = new Twig_Cache_Null(); +} elseif ($cache instanceof Twig_CacheInterface) { +$this->originalCache = $this->cache = $cache; +} else { +throw new LogicException(sprintf('Cache can only be a string, false, or a Twig_CacheInterface implementation.')); +} +} +public function getCacheFilename($name) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +$key = $this->cache->generateKey($name, $this->getTemplateClass($name)); +return !$key ? false : $key; +} +public function getTemplateClass($name, $index = null) +{ +$key = $this->getLoader()->getCacheKey($name).$this->optionsHash; +return $this->templateClassPrefix.hash('sha256', $key).(null === $index ?'':'_'.$index); +} +public function getTemplateClassPrefix() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +return $this->templateClassPrefix; +} +public function render($name, array $context = array()) +{ +return $this->loadTemplate($name)->render($context); +} +public function display($name, array $context = array()) +{ +$this->loadTemplate($name)->display($context); +} +public function load($name) +{ +if ($name instanceof Twig_TemplateWrapper) { +return $name; +} +if ($name instanceof Twig_Template) { +return new Twig_TemplateWrapper($this, $name); +} +return new Twig_TemplateWrapper($this, $this->loadTemplate($name)); +} +public function loadTemplate($name, $index = null) +{ +$cls = $mainCls = $this->getTemplateClass($name); +if (null !== $index) { +$cls .='_'.$index; +} +if (isset($this->loadedTemplates[$cls])) { +return $this->loadedTemplates[$cls]; +} +if (!class_exists($cls, false)) { +if ($this->bcGetCacheFilename) { +$key = $this->getCacheFilename($name); +} else { +$key = $this->cache->generateKey($name, $mainCls); +} +if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { +$this->cache->load($key); +} +if (!class_exists($cls, false)) { +$loader = $this->getLoader(); +if (!$loader instanceof Twig_SourceContextLoaderInterface) { +$source = new Twig_Source($loader->getSource($name), $name); +} else { +$source = $loader->getSourceContext($name); +} +$content = $this->compileSource($source); +if ($this->bcWriteCacheFile) { +$this->writeCacheFile($key, $content); +} else { +$this->cache->write($key, $content); +$this->cache->load($key); +} +if (!class_exists($mainCls, false)) { +eval('?>'.$content); +} +} +if (!class_exists($cls, false)) { +throw new Twig_Error_Runtime(sprintf('Failed to load Twig template "%s", index "%s": cache is corrupted.', $name, $index), -1, $source); +} +} +if (!$this->runtimeInitialized) { +$this->initRuntime(); +} +return $this->loadedTemplates[$cls] = new $cls($this); +} +public function createTemplate($template) +{ +$name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); +$loader = new Twig_Loader_Chain(array( +new Twig_Loader_Array(array($name => $template)), +$current = $this->getLoader(), +)); +$this->setLoader($loader); +try { +$template = $this->loadTemplate($name); +} catch (Exception $e) { +$this->setLoader($current); +throw $e; +} catch (Throwable $e) { +$this->setLoader($current); +throw $e; +} +$this->setLoader($current); +return $template; +} +public function isTemplateFresh($name, $time) +{ +if (0 === $this->lastModifiedExtension) { +foreach ($this->extensions as $extension) { +$r = new ReflectionObject($extension); +if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) { +$this->lastModifiedExtension = $extensionTime; +} +} +} +return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time); +} +public function resolveTemplate($names) +{ +if (!is_array($names)) { +$names = array($names); +} +foreach ($names as $name) { +if ($name instanceof Twig_Template) { +return $name; +} +try { +return $this->loadTemplate($name); +} catch (Twig_Error_Loader $e) { +} +} +if (1 === count($names)) { +throw $e; +} +throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); +} +public function clearTemplateCache() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.18.3 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +$this->loadedTemplates = array(); +} +public function clearCacheFiles() +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +if (is_string($this->originalCache)) { +foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->originalCache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { +if ($file->isFile()) { +@unlink($file->getPathname()); +} +} +} +} +public function getLexer() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->lexer) { +$this->lexer = new Twig_Lexer($this); +} +return $this->lexer; +} +public function setLexer(Twig_LexerInterface $lexer) +{ +$this->lexer = $lexer; +} +public function tokenize($source, $name = null) +{ +if (!$source instanceof Twig_Source) { +@trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); +$source = new Twig_Source($source, $name); +} +if (null === $this->lexer) { +$this->lexer = new Twig_Lexer($this); +} +return $this->lexer->tokenize($source); +} +public function getParser() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->parser) { +$this->parser = new Twig_Parser($this); +} +return $this->parser; +} +public function setParser(Twig_ParserInterface $parser) +{ +$this->parser = $parser; +} +public function parse(Twig_TokenStream $stream) +{ +if (null === $this->parser) { +$this->parser = new Twig_Parser($this); +} +return $this->parser->parse($stream); +} +public function getCompiler() +{ +@trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); +if (null === $this->compiler) { +$this->compiler = new Twig_Compiler($this); +} +return $this->compiler; +} +public function setCompiler(Twig_CompilerInterface $compiler) +{ +$this->compiler = $compiler; +} +public function compile(Twig_NodeInterface $node) +{ +if (null === $this->compiler) { +$this->compiler = new Twig_Compiler($this); +} +return $this->compiler->compile($node)->getSource(); +} +public function compileSource($source, $name = null) +{ +if (!$source instanceof Twig_Source) { +@trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); +$source = new Twig_Source($source, $name); +} +try { +return $this->compile($this->parse($this->tokenize($source))); +} catch (Twig_Error $e) { +$e->setSourceContext($source); +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); +} +} +public function setLoader(Twig_LoaderInterface $loader) +{ +if (!$loader instanceof Twig_SourceContextLoaderInterface && 0 !== strpos(get_class($loader),'Mock_Twig_LoaderInterface')) { +@trigger_error(sprintf('Twig loader "%s" should implement Twig_SourceContextLoaderInterface since version 1.27.', get_class($loader)), E_USER_DEPRECATED); +} +$this->loader = $loader; +} +public function getLoader() +{ +if (null === $this->loader) { +throw new LogicException('You must set a loader first.'); +} +return $this->loader; +} +public function setCharset($charset) +{ +$this->charset = strtoupper($charset); +} +public function getCharset() +{ +return $this->charset; +} +public function initRuntime() +{ +$this->runtimeInitialized = true; +foreach ($this->getExtensions() as $name => $extension) { +if (!$extension instanceof Twig_Extension_InitRuntimeInterface) { +$m = new ReflectionMethod($extension,'initRuntime'); +if ('Twig_Extension'!== $m->getDeclaringClass()->getName()) { +@trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED); +} +} +$extension->initRuntime($this); +} +} +public function hasExtension($class) +{ +$class = ltrim($class,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +return true; +} +return isset($this->extensionsByClass[$class]); +} +public function addRuntimeLoader(Twig_RuntimeLoaderInterface $loader) +{ +$this->runtimeLoaders[] = $loader; +} +public function getExtension($class) +{ +$class = ltrim($class,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +return $this->extensions[$class]; +} +if (!isset($this->extensionsByClass[$class])) { +throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $class)); +} +return $this->extensionsByClass[$class]; +} +public function getRuntime($class) +{ +if (isset($this->runtimes[$class])) { +return $this->runtimes[$class]; +} +foreach ($this->runtimeLoaders as $loader) { +if (null !== $runtime = $loader->load($class)) { +return $this->runtimes[$class] = $runtime; +} +} +throw new Twig_Error_Runtime(sprintf('Unable to load the "%s" runtime.', $class)); +} +public function addExtension(Twig_ExtensionInterface $extension) +{ +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); +} +$class = get_class($extension); +if ($class !== $extension->getName()) { +if (isset($this->extensions[$extension->getName()])) { +unset($this->extensions[$extension->getName()], $this->extensionsByClass[$class]); +@trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated since version 1.23 and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $extension->getName()), E_USER_DEPRECATED); +} +} +$this->lastModifiedExtension = 0; +$this->extensionsByClass[$class] = $extension; +$this->extensions[$extension->getName()] = $extension; +$this->updateOptionsHash(); +} +public function removeExtension($name) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.12 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); +} +$class = ltrim($name,'\\'); +if (isset($this->extensions[$class])) { +if ($class !== get_class($this->extensions[$class])) { +@trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); +} +unset($this->extensions[$class]); +} +unset($this->extensions[$class]); +$this->updateOptionsHash(); +} +public function setExtensions(array $extensions) +{ +foreach ($extensions as $extension) { +$this->addExtension($extension); +} +} +public function getExtensions() +{ +return $this->extensions; +} +public function addTokenParser(Twig_TokenParserInterface $parser) +{ +if ($this->extensionInitialized) { +throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); +} +$this->staging->addTokenParser($parser); +} +public function getTokenParsers() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->parsers; +} +public function getTags() +{ +$tags = array(); +foreach ($this->getTokenParsers()->getParsers() as $parser) { +if ($parser instanceof Twig_TokenParserInterface) { +$tags[$parser->getTag()] = $parser; +} +} +return $tags; +} +public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) +{ +if ($this->extensionInitialized) { +throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); +} +$this->staging->addNodeVisitor($visitor); +} +public function getNodeVisitors() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->visitors; +} +public function addFilter($name, $filter = null) +{ +if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) { +throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter.'); +} +if ($name instanceof Twig_SimpleFilter) { +$filter = $name; +$name = $filter->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addFilter($name, $filter); +} +public function getFilter($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->filters[$name])) { +return $this->filters[$name]; +} +foreach ($this->filters as $pattern => $filter) { +$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); +if ($count) { +if (preg_match('#^'.$pattern.'$#', $name, $matches)) { +array_shift($matches); +$filter->setArguments($matches); +return $filter; +} +} +} +foreach ($this->filterCallbacks as $callback) { +if (false !== $filter = call_user_func($callback, $name)) { +return $filter; +} +} +return false; +} +public function registerUndefinedFilterCallback($callable) +{ +$this->filterCallbacks[] = $callable; +} +public function getFilters() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->filters; +} +public function addTest($name, $test = null) +{ +if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) { +throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest.'); +} +if ($name instanceof Twig_SimpleTest) { +$test = $name; +$name = $test->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addTest($name, $test); +} +public function getTests() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->tests; +} +public function getTest($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->tests[$name])) { +return $this->tests[$name]; +} +return false; +} +public function addFunction($name, $function = null) +{ +if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) { +throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction.'); +} +if ($name instanceof Twig_SimpleFunction) { +$function = $name; +$name = $function->getName(); +} else { +@trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED); +} +if ($this->extensionInitialized) { +throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); +} +$this->staging->addFunction($name, $function); +} +public function getFunction($name) +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +if (isset($this->functions[$name])) { +return $this->functions[$name]; +} +foreach ($this->functions as $pattern => $function) { +$pattern = str_replace('\\*','(.*?)', preg_quote($pattern,'#'), $count); +if ($count) { +if (preg_match('#^'.$pattern.'$#', $name, $matches)) { +array_shift($matches); +$function->setArguments($matches); +return $function; +} +} +} +foreach ($this->functionCallbacks as $callback) { +if (false !== $function = call_user_func($callback, $name)) { +return $function; +} +} +return false; +} +public function registerUndefinedFunctionCallback($callable) +{ +$this->functionCallbacks[] = $callable; +} +public function getFunctions() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->functions; +} +public function addGlobal($name, $value) +{ +if ($this->extensionInitialized || $this->runtimeInitialized) { +if (null === $this->globals) { +$this->globals = $this->initGlobals(); +} +if (!array_key_exists($name, $this->globals)) { +@trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated since version 1.21.', $name), E_USER_DEPRECATED); +} +} +if ($this->extensionInitialized || $this->runtimeInitialized) { +$this->globals[$name] = $value; +} else { +$this->staging->addGlobal($name, $value); +} +} +public function getGlobals() +{ +if (!$this->runtimeInitialized && !$this->extensionInitialized) { +return $this->initGlobals(); +} +if (null === $this->globals) { +$this->globals = $this->initGlobals(); +} +return $this->globals; +} +public function mergeGlobals(array $context) +{ +foreach ($this->getGlobals() as $key => $value) { +if (!array_key_exists($key, $context)) { +$context[$key] = $value; +} +} +return $context; +} +public function getUnaryOperators() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->unaryOperators; +} +public function getBinaryOperators() +{ +if (!$this->extensionInitialized) { +$this->initExtensions(); +} +return $this->binaryOperators; +} +public function computeAlternatives($name, $items) +{ +@trigger_error(sprintf('The %s method is deprecated since version 1.23 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); +return Twig_Error_Syntax::computeAlternatives($name, $items); +} +protected function initGlobals() +{ +$globals = array(); +foreach ($this->extensions as $name => $extension) { +if (!$extension instanceof Twig_Extension_GlobalsInterface) { +$m = new ReflectionMethod($extension,'getGlobals'); +if ('Twig_Extension'!== $m->getDeclaringClass()->getName()) { +@trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension without explicitly implementing Twig_Extension_GlobalsInterface is deprecated since version 1.23.', $name), E_USER_DEPRECATED); +} +} +$extGlob = $extension->getGlobals(); +if (!is_array($extGlob)) { +throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension))); +} +$globals[] = $extGlob; +} +$globals[] = $this->staging->getGlobals(); +return call_user_func_array('array_merge', $globals); +} +protected function initExtensions() +{ +if ($this->extensionInitialized) { +return; +} +$this->parsers = new Twig_TokenParserBroker(array(), array(), false); +$this->filters = array(); +$this->functions = array(); +$this->tests = array(); +$this->visitors = array(); +$this->unaryOperators = array(); +$this->binaryOperators = array(); +foreach ($this->extensions as $extension) { +$this->initExtension($extension); +} +$this->initExtension($this->staging); +$this->extensionInitialized = true; +} +protected function initExtension(Twig_ExtensionInterface $extension) +{ +foreach ($extension->getFilters() as $name => $filter) { +if ($filter instanceof Twig_SimpleFilter) { +$name = $filter->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated since version 1.21. Use Twig_SimpleFilter instead.', get_class($filter), $name), E_USER_DEPRECATED); +} +$this->filters[$name] = $filter; +} +foreach ($extension->getFunctions() as $name => $function) { +if ($function instanceof Twig_SimpleFunction) { +$name = $function->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated since version 1.21. Use Twig_SimpleFunction instead.', get_class($function), $name), E_USER_DEPRECATED); +} +$this->functions[$name] = $function; +} +foreach ($extension->getTests() as $name => $test) { +if ($test instanceof Twig_SimpleTest) { +$name = $test->getName(); +} else { +@trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated since version 1.21. Use Twig_SimpleTest instead.', get_class($test), $name), E_USER_DEPRECATED); +} +$this->tests[$name] = $test; +} +foreach ($extension->getTokenParsers() as $parser) { +if ($parser instanceof Twig_TokenParserInterface) { +$this->parsers->addTokenParser($parser); +} elseif ($parser instanceof Twig_TokenParserBrokerInterface) { +@trigger_error('Registering a Twig_TokenParserBrokerInterface instance is deprecated since version 1.21.', E_USER_DEPRECATED); +$this->parsers->addTokenParserBroker($parser); +} else { +throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances.'); +} +} +foreach ($extension->getNodeVisitors() as $visitor) { +$this->visitors[] = $visitor; +} +if ($operators = $extension->getOperators()) { +if (!is_array($operators)) { +throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array with operators, got "%s".', get_class($extension), is_object($operators) ? get_class($operators) : gettype($operators).(is_resource($operators) ?'':'#'.$operators))); +} +if (2 !== count($operators)) { +throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array of 2 elements, got %d.', get_class($extension), count($operators))); +} +$this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); +$this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); +} +} +protected function writeCacheFile($file, $content) +{ +$this->cache->write($file, $content); +} +private function updateOptionsHash() +{ +$hashParts = array_merge( +array_keys($this->extensions), +array( +(int) function_exists('twig_template_get_attributes'), +PHP_MAJOR_VERSION, +PHP_MINOR_VERSION, +self::VERSION, +(int) $this->debug, +$this->baseTemplateClass, +(int) $this->strictVariables, +) +); +$this->optionsHash = implode(':', $hashParts); +} +} +} +namespace +{ +interface Twig_ExtensionInterface +{ +public function initRuntime(Twig_Environment $environment); +public function getTokenParsers(); +public function getNodeVisitors(); +public function getFilters(); +public function getTests(); +public function getFunctions(); +public function getOperators(); +public function getGlobals(); +public function getName(); +} +} +namespace +{ +abstract class Twig_Extension implements Twig_ExtensionInterface +{ +public function initRuntime(Twig_Environment $environment) +{ +} +public function getTokenParsers() +{ +return array(); +} +public function getNodeVisitors() +{ +return array(); +} +public function getFilters() +{ +return array(); +} +public function getTests() +{ +return array(); +} +public function getFunctions() +{ +return array(); +} +public function getOperators() +{ +return array(); +} +public function getGlobals() +{ +return array(); +} +public function getName() +{ +return get_class($this); +} +} +} +namespace +{ +if (!defined('ENT_SUBSTITUTE')) { +define('ENT_SUBSTITUTE', 0); +} +class Twig_Extension_Core extends Twig_Extension +{ +protected $dateFormats = array('F j, Y H:i','%d days'); +protected $numberFormat = array(0,'.',','); +protected $timezone = null; +protected $escapers = array(); +public function setEscaper($strategy, $callable) +{ +$this->escapers[$strategy] = $callable; +} +public function getEscapers() +{ +return $this->escapers; +} +public function setDateFormat($format = null, $dateIntervalFormat = null) +{ +if (null !== $format) { +$this->dateFormats[0] = $format; +} +if (null !== $dateIntervalFormat) { +$this->dateFormats[1] = $dateIntervalFormat; +} +} +public function getDateFormat() +{ +return $this->dateFormats; +} +public function setTimezone($timezone) +{ +$this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); +} +public function getTimezone() +{ +if (null === $this->timezone) { +$this->timezone = new DateTimeZone(date_default_timezone_get()); +} +return $this->timezone; +} +public function setNumberFormat($decimal, $decimalPoint, $thousandSep) +{ +$this->numberFormat = array($decimal, $decimalPoint, $thousandSep); +} +public function getNumberFormat() +{ +return $this->numberFormat; +} +public function getTokenParsers() +{ +return array( +new Twig_TokenParser_For(), +new Twig_TokenParser_If(), +new Twig_TokenParser_Extends(), +new Twig_TokenParser_Include(), +new Twig_TokenParser_Block(), +new Twig_TokenParser_Use(), +new Twig_TokenParser_Filter(), +new Twig_TokenParser_Macro(), +new Twig_TokenParser_Import(), +new Twig_TokenParser_From(), +new Twig_TokenParser_Set(), +new Twig_TokenParser_Spaceless(), +new Twig_TokenParser_Flush(), +new Twig_TokenParser_Do(), +new Twig_TokenParser_Embed(), +new Twig_TokenParser_With(), +); +} +public function getFilters() +{ +$filters = array( +new Twig_SimpleFilter('date','twig_date_format_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('date_modify','twig_date_modify_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('format','sprintf'), +new Twig_SimpleFilter('replace','twig_replace_filter'), +new Twig_SimpleFilter('number_format','twig_number_format_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('abs','abs'), +new Twig_SimpleFilter('round','twig_round'), +new Twig_SimpleFilter('url_encode','twig_urlencode_filter'), +new Twig_SimpleFilter('json_encode','twig_jsonencode_filter'), +new Twig_SimpleFilter('convert_encoding','twig_convert_encoding'), +new Twig_SimpleFilter('title','twig_title_string_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('capitalize','twig_capitalize_string_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('upper','strtoupper'), +new Twig_SimpleFilter('lower','strtolower'), +new Twig_SimpleFilter('striptags','strip_tags'), +new Twig_SimpleFilter('trim','twig_trim_filter'), +new Twig_SimpleFilter('nl2br','nl2br', array('pre_escape'=>'html','is_safe'=> array('html'))), +new Twig_SimpleFilter('join','twig_join_filter'), +new Twig_SimpleFilter('split','twig_split_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('sort','twig_sort_filter'), +new Twig_SimpleFilter('merge','twig_array_merge'), +new Twig_SimpleFilter('batch','twig_array_batch'), +new Twig_SimpleFilter('reverse','twig_reverse_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('length','twig_length_filter', array('needs_environment'=> true)), +new Twig_SimpleFilter('slice','twig_slice', array('needs_environment'=> true)), +new Twig_SimpleFilter('first','twig_first', array('needs_environment'=> true)), +new Twig_SimpleFilter('last','twig_last', array('needs_environment'=> true)), +new Twig_SimpleFilter('default','_twig_default_filter', array('node_class'=>'Twig_Node_Expression_Filter_Default')), +new Twig_SimpleFilter('keys','twig_get_array_keys_filter'), +new Twig_SimpleFilter('escape','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), +new Twig_SimpleFilter('e','twig_escape_filter', array('needs_environment'=> true,'is_safe_callback'=>'twig_escape_filter_is_safe')), +); +if (function_exists('mb_get_info')) { +$filters[] = new Twig_SimpleFilter('upper','twig_upper_filter', array('needs_environment'=> true)); +$filters[] = new Twig_SimpleFilter('lower','twig_lower_filter', array('needs_environment'=> true)); +} +return $filters; +} +public function getFunctions() +{ +return array( +new Twig_SimpleFunction('max','max'), +new Twig_SimpleFunction('min','min'), +new Twig_SimpleFunction('range','range'), +new Twig_SimpleFunction('constant','twig_constant'), +new Twig_SimpleFunction('cycle','twig_cycle'), +new Twig_SimpleFunction('random','twig_random', array('needs_environment'=> true)), +new Twig_SimpleFunction('date','twig_date_converter', array('needs_environment'=> true)), +new Twig_SimpleFunction('include','twig_include', array('needs_environment'=> true,'needs_context'=> true,'is_safe'=> array('all'))), +new Twig_SimpleFunction('source','twig_source', array('needs_environment'=> true,'is_safe'=> array('all'))), +); +} +public function getTests() +{ +return array( +new Twig_SimpleTest('even', null, array('node_class'=>'Twig_Node_Expression_Test_Even')), +new Twig_SimpleTest('odd', null, array('node_class'=>'Twig_Node_Expression_Test_Odd')), +new Twig_SimpleTest('defined', null, array('node_class'=>'Twig_Node_Expression_Test_Defined')), +new Twig_SimpleTest('sameas', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas','deprecated'=>'1.21','alternative'=>'same as')), +new Twig_SimpleTest('same as', null, array('node_class'=>'Twig_Node_Expression_Test_Sameas')), +new Twig_SimpleTest('none', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), +new Twig_SimpleTest('null', null, array('node_class'=>'Twig_Node_Expression_Test_Null')), +new Twig_SimpleTest('divisibleby', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby','deprecated'=>'1.21','alternative'=>'divisible by')), +new Twig_SimpleTest('divisible by', null, array('node_class'=>'Twig_Node_Expression_Test_Divisibleby')), +new Twig_SimpleTest('constant', null, array('node_class'=>'Twig_Node_Expression_Test_Constant')), +new Twig_SimpleTest('empty','twig_test_empty'), +new Twig_SimpleTest('iterable','twig_test_iterable'), +); +} +public function getOperators() +{ +return array( +array('not'=> array('precedence'=> 50,'class'=>'Twig_Node_Expression_Unary_Not'),'-'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Neg'),'+'=> array('precedence'=> 500,'class'=>'Twig_Node_Expression_Unary_Pos'), +), +array('or'=> array('precedence'=> 10,'class'=>'Twig_Node_Expression_Binary_Or','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'and'=> array('precedence'=> 15,'class'=>'Twig_Node_Expression_Binary_And','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-or'=> array('precedence'=> 16,'class'=>'Twig_Node_Expression_Binary_BitwiseOr','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-xor'=> array('precedence'=> 17,'class'=>'Twig_Node_Expression_Binary_BitwiseXor','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'b-and'=> array('precedence'=> 18,'class'=>'Twig_Node_Expression_Binary_BitwiseAnd','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'=='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Equal','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'!='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Less','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Greater','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'>='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_GreaterEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'<='=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_LessEqual','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'not in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_NotIn','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'in'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_In','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'matches'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_Matches','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'starts with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_StartsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'ends with'=> array('precedence'=> 20,'class'=>'Twig_Node_Expression_Binary_EndsWith','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'..'=> array('precedence'=> 25,'class'=>'Twig_Node_Expression_Binary_Range','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'+'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Add','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'-'=> array('precedence'=> 30,'class'=>'Twig_Node_Expression_Binary_Sub','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'~'=> array('precedence'=> 40,'class'=>'Twig_Node_Expression_Binary_Concat','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'*'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mul','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'/'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Div','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'//'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_FloorDiv','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'%'=> array('precedence'=> 60,'class'=>'Twig_Node_Expression_Binary_Mod','associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is'=> array('precedence'=> 100,'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'is not'=> array('precedence'=> 100,'associativity'=> Twig_ExpressionParser::OPERATOR_LEFT),'**'=> array('precedence'=> 200,'class'=>'Twig_Node_Expression_Binary_Power','associativity'=> Twig_ExpressionParser::OPERATOR_RIGHT),'??'=> array('precedence'=> 300,'class'=>'Twig_Node_Expression_NullCoalesce','associativity'=> Twig_ExpressionParser::OPERATOR_RIGHT), +), +); +} +public function getName() +{ +return'core'; +} +} +function twig_cycle($values, $position) +{ +if (!is_array($values) && !$values instanceof ArrayAccess) { +return $values; +} +return $values[$position % count($values)]; +} +function twig_random(Twig_Environment $env, $values = null) +{ +if (null === $values) { +return mt_rand(); +} +if (is_int($values) || is_float($values)) { +return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); +} +if ($values instanceof Traversable) { +$values = iterator_to_array($values); +} elseif (is_string($values)) { +if (''=== $values) { +return''; +} +if (null !== $charset = $env->getCharset()) { +if ('UTF-8'!== $charset) { +$values = twig_convert_encoding($values,'UTF-8', $charset); +} +$values = preg_split('/(? $value) { +$values[$i] = twig_convert_encoding($value, $charset,'UTF-8'); +} +} +} else { +return $values[mt_rand(0, strlen($values) - 1)]; +} +} +if (!is_array($values)) { +return $values; +} +if (0 === count($values)) { +throw new Twig_Error_Runtime('The random function cannot pick from an empty array.'); +} +return $values[array_rand($values, 1)]; +} +function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null) +{ +if (null === $format) { +$formats = $env->getExtension('Twig_Extension_Core')->getDateFormat(); +$format = $date instanceof DateInterval ? $formats[1] : $formats[0]; +} +if ($date instanceof DateInterval) { +return $date->format($format); +} +return twig_date_converter($env, $date, $timezone)->format($format); +} +function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) +{ +$date = twig_date_converter($env, $date, false); +$resultDate = $date->modify($modifier); +return null === $resultDate ? $date : $resultDate; +} +function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) +{ +if (false !== $timezone) { +if (null === $timezone) { +$timezone = $env->getExtension('Twig_Extension_Core')->getTimezone(); +} elseif (!$timezone instanceof DateTimeZone) { +$timezone = new DateTimeZone($timezone); +} +} +if ($date instanceof DateTimeImmutable) { +return false !== $timezone ? $date->setTimezone($timezone) : $date; +} +if ($date instanceof DateTime || $date instanceof DateTimeInterface) { +$date = clone $date; +if (false !== $timezone) { +$date->setTimezone($timezone); +} +return $date; +} +if (null === $date ||'now'=== $date) { +return new DateTime($date, false !== $timezone ? $timezone : $env->getExtension('Twig_Extension_Core')->getTimezone()); +} +$asString = (string) $date; +if (ctype_digit($asString) || (!empty($asString) &&'-'=== $asString[0] && ctype_digit(substr($asString, 1)))) { +$date = new DateTime('@'.$date); +} else { +$date = new DateTime($date, $env->getExtension('Twig_Extension_Core')->getTimezone()); +} +if (false !== $timezone) { +$date->setTimezone($timezone); +} +return $date; +} +function twig_replace_filter($str, $from, $to = null) +{ +if ($from instanceof Traversable) { +$from = iterator_to_array($from); +} elseif (is_string($from) && is_string($to)) { +@trigger_error('Using "replace" with character by character replacement is deprecated since version 1.22 and will be removed in Twig 2.0', E_USER_DEPRECATED); +return strtr($str, $from, $to); +} elseif (!is_array($from)) { +throw new Twig_Error_Runtime(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', is_object($from) ? get_class($from) : gettype($from))); +} +return strtr($str, $from); +} +function twig_round($value, $precision = 0, $method ='common') +{ +if ('common'== $method) { +return round($value, $precision); +} +if ('ceil'!= $method &&'floor'!= $method) { +throw new Twig_Error_Runtime('The round filter only supports the "common", "ceil", and "floor" methods.'); +} +return $method($value * pow(10, $precision)) / pow(10, $precision); +} +function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) +{ +$defaults = $env->getExtension('Twig_Extension_Core')->getNumberFormat(); +if (null === $decimal) { +$decimal = $defaults[0]; +} +if (null === $decimalPoint) { +$decimalPoint = $defaults[1]; +} +if (null === $thousandSep) { +$thousandSep = $defaults[2]; +} +return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); +} +function twig_urlencode_filter($url) +{ +if (is_array($url)) { +if (defined('PHP_QUERY_RFC3986')) { +return http_build_query($url,'','&', PHP_QUERY_RFC3986); +} +return http_build_query($url,'','&'); +} +return rawurlencode($url); +} +if (PHP_VERSION_ID < 50300) { +function twig_jsonencode_filter($value, $options = 0) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} elseif (is_array($value)) { +array_walk_recursive($value,'_twig_markup2string'); +} +return json_encode($value); +} +} else { +function twig_jsonencode_filter($value, $options = 0) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} elseif (is_array($value)) { +array_walk_recursive($value,'_twig_markup2string'); +} +return json_encode($value, $options); +} +} +function _twig_markup2string(&$value) +{ +if ($value instanceof Twig_Markup) { +$value = (string) $value; +} +} +function twig_array_merge($arr1, $arr2) +{ +if ($arr1 instanceof Traversable) { +$arr1 = iterator_to_array($arr1); +} elseif (!is_array($arr1)) { +throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', gettype($arr1))); +} +if ($arr2 instanceof Traversable) { +$arr2 = iterator_to_array($arr2); +} elseif (!is_array($arr2)) { +throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', gettype($arr2))); +} +return array_merge($arr1, $arr2); +} +function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) +{ +if ($item instanceof Traversable) { +while ($item instanceof IteratorAggregate) { +$item = $item->getIterator(); +} +if ($start >= 0 && $length >= 0 && $item instanceof Iterator) { +try { +return iterator_to_array(new LimitIterator($item, $start, $length === null ? -1 : $length), $preserveKeys); +} catch (OutOfBoundsException $exception) { +return array(); +} +} +$item = iterator_to_array($item, $preserveKeys); +} +if (is_array($item)) { +return array_slice($item, $start, $length, $preserveKeys); +} +$item = (string) $item; +if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { +return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); +} +return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length)); +} +function twig_first(Twig_Environment $env, $item) +{ +$elements = twig_slice($env, $item, 0, 1, false); +return is_string($elements) ? $elements : current($elements); +} +function twig_last(Twig_Environment $env, $item) +{ +$elements = twig_slice($env, $item, -1, 1, false); +return is_string($elements) ? $elements : current($elements); +} +function twig_join_filter($value, $glue ='') +{ +if ($value instanceof Traversable) { +$value = iterator_to_array($value, false); +} +return implode($glue, (array) $value); +} +function twig_split_filter(Twig_Environment $env, $value, $delimiter, $limit = null) +{ +if (!empty($delimiter)) { +return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); +} +if (!function_exists('mb_get_info') || null === $charset = $env->getCharset()) { +return str_split($value, null === $limit ? 1 : $limit); +} +if ($limit <= 1) { +return preg_split('/(?getIterator(); +} +if ($array instanceof Iterator) { +$keys = array(); +$array->rewind(); +while ($array->valid()) { +$keys[] = $array->key(); +$array->next(); +} +return $keys; +} +$keys = array(); +foreach ($array as $key => $item) { +$keys[] = $key; +} +return $keys; +} +if (!is_array($array)) { +return array(); +} +return array_keys($array); +} +function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false) +{ +if ($item instanceof Traversable) { +return array_reverse(iterator_to_array($item), $preserveKeys); +} +if (is_array($item)) { +return array_reverse($item, $preserveKeys); +} +if (null !== $charset = $env->getCharset()) { +$string = (string) $item; +if ('UTF-8'!== $charset) { +$item = twig_convert_encoding($string,'UTF-8', $charset); +} +preg_match_all('/./us', $item, $matches); +$string = implode('', array_reverse($matches[0])); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +} +return strrev((string) $item); +} +function twig_sort_filter($array) +{ +if ($array instanceof Traversable) { +$array = iterator_to_array($array); +} elseif (!is_array($array)) { +throw new Twig_Error_Runtime(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', gettype($array))); +} +asort($array); +return $array; +} +function twig_in_filter($value, $compare) +{ +if (is_array($compare)) { +return in_array($value, $compare, is_object($value) || is_resource($value)); +} elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) { +return''=== $value || false !== strpos($compare, (string) $value); +} elseif ($compare instanceof Traversable) { +if (is_object($value) || is_resource($value)) { +foreach ($compare as $item) { +if ($item === $value) { +return true; +} +} +} else { +foreach ($compare as $item) { +if ($item == $value) { +return true; +} +} +} +return false; +} +return false; +} +function twig_trim_filter($string, $characterMask = null, $side ='both') +{ +if (null === $characterMask) { +$characterMask =" \t\n\r\0\x0B"; +} +switch ($side) { +case'both': +return trim($string, $characterMask); +case'left': +return ltrim($string, $characterMask); +case'right': +return rtrim($string, $characterMask); +default: +throw new Twig_Error_Runtime('Trimming side must be "left", "right" or "both".'); +} +} +function twig_escape_filter(Twig_Environment $env, $string, $strategy ='html', $charset = null, $autoescape = false) +{ +if ($autoescape && $string instanceof Twig_Markup) { +return $string; +} +if (!is_string($string)) { +if (is_object($string) && method_exists($string,'__toString')) { +$string = (string) $string; +} elseif (in_array($strategy, array('html','js','css','html_attr','url'))) { +return $string; +} +} +if (null === $charset) { +$charset = $env->getCharset(); +} +switch ($strategy) { +case'html': +static $htmlspecialcharsCharsets; +if (null === $htmlspecialcharsCharsets) { +if (defined('HHVM_VERSION')) { +$htmlspecialcharsCharsets = array('utf-8'=> true,'UTF-8'=> true); +} else { +$htmlspecialcharsCharsets = array('ISO-8859-1'=> true,'ISO8859-1'=> true,'ISO-8859-15'=> true,'ISO8859-15'=> true,'utf-8'=> true,'UTF-8'=> true,'CP866'=> true,'IBM866'=> true,'866'=> true,'CP1251'=> true,'WINDOWS-1251'=> true,'WIN-1251'=> true,'1251'=> true,'CP1252'=> true,'WINDOWS-1252'=> true,'1252'=> true,'KOI8-R'=> true,'KOI8-RU'=> true,'KOI8R'=> true,'BIG5'=> true,'950'=> true,'GB2312'=> true,'936'=> true,'BIG5-HKSCS'=> true,'SHIFT_JIS'=> true,'SJIS'=> true,'932'=> true,'EUC-JP'=> true,'EUCJP'=> true,'ISO8859-5'=> true,'ISO-8859-5'=> true,'MACROMAN'=> true, +); +} +} +if (isset($htmlspecialcharsCharsets[$charset])) { +return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); +} +if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) { +$htmlspecialcharsCharsets[$charset] = true; +return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); +} +$string = twig_convert_encoding($string,'UTF-8', $charset); +$string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE,'UTF-8'); +return twig_convert_encoding($string, $charset,'UTF-8'); +case'js': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su','_twig_escape_js_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'css': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9]#Su','_twig_escape_css_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'html_attr': +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string,'UTF-8', $charset); +} +if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { +throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); +} +$string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su','_twig_escape_html_attr_callback', $string); +if ('UTF-8'!== $charset) { +$string = twig_convert_encoding($string, $charset,'UTF-8'); +} +return $string; +case'url': +if (PHP_VERSION_ID < 50300) { +return str_replace('%7E','~', rawurlencode($string)); +} +return rawurlencode($string); +default: +static $escapers; +if (null === $escapers) { +$escapers = $env->getExtension('Twig_Extension_Core')->getEscapers(); +} +if (isset($escapers[$strategy])) { +return call_user_func($escapers[$strategy], $env, $string, $charset); +} +$validStrategies = implode(', ', array_merge(array('html','js','url','css','html_attr'), array_keys($escapers))); +throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); +} +} +function twig_escape_filter_is_safe(Twig_Node $filterArgs) +{ +foreach ($filterArgs as $arg) { +if ($arg instanceof Twig_Node_Expression_Constant) { +return array($arg->getAttribute('value')); +} +return array(); +} +return array('html'); +} +if (function_exists('mb_convert_encoding')) { +function twig_convert_encoding($string, $to, $from) +{ +return mb_convert_encoding($string, $to, $from); +} +} elseif (function_exists('iconv')) { +function twig_convert_encoding($string, $to, $from) +{ +return iconv($from, $to, $string); +} +} else { +function twig_convert_encoding($string, $to, $from) +{ +throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); +} +} +function _twig_escape_js_callback($matches) +{ +$char = $matches[0]; +if (!isset($char[1])) { +return'\\x'.strtoupper(substr('00'.bin2hex($char), -2)); +} +$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); +return'\\u'.strtoupper(substr('0000'.bin2hex($char), -4)); +} +function _twig_escape_css_callback($matches) +{ +$char = $matches[0]; +if (!isset($char[1])) { +$hex = ltrim(strtoupper(bin2hex($char)),'0'); +if (0 === strlen($hex)) { +$hex ='0'; +} +return'\\'.$hex.' '; +} +$char = twig_convert_encoding($char,'UTF-16BE','UTF-8'); +return'\\'.ltrim(strtoupper(bin2hex($char)),'0').' '; +} +function _twig_escape_html_attr_callback($matches) +{ +static $entityMap = array( +34 =>'quot', +38 =>'amp', +60 =>'lt', +62 =>'gt', +); +$chr = $matches[0]; +$ord = ord($chr); +if (($ord <= 0x1f && $chr !="\t"&& $chr !="\n"&& $chr !="\r") || ($ord >= 0x7f && $ord <= 0x9f)) { +return'�'; +} +if (strlen($chr) == 1) { +$hex = strtoupper(substr('00'.bin2hex($chr), -2)); +} else { +$chr = twig_convert_encoding($chr,'UTF-16BE','UTF-8'); +$hex = strtoupper(substr('0000'.bin2hex($chr), -4)); +} +$int = hexdec($hex); +if (array_key_exists($int, $entityMap)) { +return sprintf('&%s;', $entityMap[$int]); +} +return sprintf('&#x%s;', $hex); +} +if (function_exists('mb_get_info')) { +function twig_length_filter(Twig_Environment $env, $thing) +{ +return is_scalar($thing) ? mb_strlen($thing, $env->getCharset()) : count($thing); +} +function twig_upper_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtoupper($string, $charset); +} +return strtoupper($string); +} +function twig_lower_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtolower($string, $charset); +} +return strtolower($string); +} +function twig_title_string_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_convert_case($string, MB_CASE_TITLE, $charset); +} +return ucwords(strtolower($string)); +} +function twig_capitalize_string_filter(Twig_Environment $env, $string) +{ +if (null !== $charset = $env->getCharset()) { +return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); +} +return ucfirst(strtolower($string)); +} +} +else { +function twig_length_filter(Twig_Environment $env, $thing) +{ +return is_scalar($thing) ? strlen($thing) : count($thing); +} +function twig_title_string_filter(Twig_Environment $env, $string) +{ +return ucwords(strtolower($string)); +} +function twig_capitalize_string_filter(Twig_Environment $env, $string) +{ +return ucfirst(strtolower($string)); +} +} +function twig_ensure_traversable($seq) +{ +if ($seq instanceof Traversable || is_array($seq)) { +return $seq; +} +return array(); +} +function twig_test_empty($value) +{ +if ($value instanceof Countable) { +return 0 == count($value); +} +return''=== $value || false === $value || null === $value || array() === $value; +} +function twig_test_iterable($value) +{ +return $value instanceof Traversable || is_array($value); +} +function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false) +{ +$alreadySandboxed = false; +$sandbox = null; +if ($withContext) { +$variables = array_merge($context, $variables); +} +if ($isSandboxed = $sandboxed && $env->hasExtension('Twig_Extension_Sandbox')) { +$sandbox = $env->getExtension('Twig_Extension_Sandbox'); +if (!$alreadySandboxed = $sandbox->isSandboxed()) { +$sandbox->enableSandbox(); +} +} +$result = null; +try { +$result = $env->resolveTemplate($template)->render($variables); +} catch (Twig_Error_Loader $e) { +if (!$ignoreMissing) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} +} catch (Throwable $e) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} catch (Exception $e) { +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +throw $e; +} +if ($isSandboxed && !$alreadySandboxed) { +$sandbox->disableSandbox(); +} +return $result; +} +function twig_source(Twig_Environment $env, $name, $ignoreMissing = false) +{ +$loader = $env->getLoader(); +try { +if (!$loader instanceof Twig_SourceContextLoaderInterface) { +return $loader->getSource($name); +} else { +return $loader->getSourceContext($name)->getCode(); +} +} catch (Twig_Error_Loader $e) { +if (!$ignoreMissing) { +throw $e; +} +} +} +function twig_constant($constant, $object = null) +{ +if (null !== $object) { +$constant = get_class($object).'::'.$constant; +} +return constant($constant); +} +function twig_constant_is_defined($constant, $object = null) +{ +if (null !== $object) { +$constant = get_class($object).'::'.$constant; +} +return defined($constant); +} +function twig_array_batch($items, $size, $fill = null) +{ +if ($items instanceof Traversable) { +$items = iterator_to_array($items, false); +} +$size = ceil($size); +$result = array_chunk($items, $size, true); +if (null !== $fill && !empty($result)) { +$last = count($result) - 1; +if ($fillCount = $size - count($result[$last])) { +$result[$last] = array_merge( +$result[$last], +array_fill(0, $fillCount, $fill) +); +} +} +return $result; +} +} +namespace +{ +class Twig_Extension_Escaper extends Twig_Extension +{ +protected $defaultStrategy; +public function __construct($defaultStrategy ='html') +{ +$this->setDefaultStrategy($defaultStrategy); +} +public function getTokenParsers() +{ +return array(new Twig_TokenParser_AutoEscape()); +} +public function getNodeVisitors() +{ +return array(new Twig_NodeVisitor_Escaper()); +} +public function getFilters() +{ +return array( +new Twig_SimpleFilter('raw','twig_raw_filter', array('is_safe'=> array('all'))), +); +} +public function setDefaultStrategy($defaultStrategy) +{ +if (true === $defaultStrategy) { +@trigger_error('Using "true" as the default strategy is deprecated since version 1.21. Use "html" instead.', E_USER_DEPRECATED); +$defaultStrategy ='html'; +} +if ('filename'=== $defaultStrategy) { +@trigger_error('Using "filename" as the default strategy is deprecated since version 1.27. Use "name" instead.', E_USER_DEPRECATED); +$defaultStrategy ='name'; +} +if ('name'=== $defaultStrategy) { +$defaultStrategy = array('Twig_FileExtensionEscapingStrategy','guess'); +} +$this->defaultStrategy = $defaultStrategy; +} +public function getDefaultStrategy($name) +{ +if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) { +return call_user_func($this->defaultStrategy, $name); +} +return $this->defaultStrategy; +} +public function getName() +{ +return'escaper'; +} +} +function twig_raw_filter($string) +{ +return $string; +} +} +namespace +{ +class Twig_Extension_Optimizer extends Twig_Extension +{ +protected $optimizers; +public function __construct($optimizers = -1) +{ +$this->optimizers = $optimizers; +} +public function getNodeVisitors() +{ +return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); +} +public function getName() +{ +return'optimizer'; +} +} +} +namespace +{ +interface Twig_LoaderInterface +{ +public function getSource($name); +public function getCacheKey($name); +public function isFresh($name, $time); +} +} +namespace +{ +class Twig_Markup implements Countable +{ +protected $content; +protected $charset; +public function __construct($content, $charset) +{ +$this->content = (string) $content; +$this->charset = $charset; +} +public function __toString() +{ +return $this->content; +} +public function count() +{ +return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); +} +} +} +namespace +{ +interface Twig_TemplateInterface +{ +const ANY_CALL ='any'; +const ARRAY_CALL ='array'; +const METHOD_CALL ='method'; +public function render(array $context); +public function display(array $context, array $blocks = array()); +public function getEnvironment(); +} +} +namespace +{ +abstract class Twig_Template implements Twig_TemplateInterface +{ +protected static $cache = array(); +protected $parent; +protected $parents = array(); +protected $env; +protected $blocks = array(); +protected $traits = array(); +public function __construct(Twig_Environment $env) +{ +$this->env = $env; +} +public function __toString() +{ +return $this->getTemplateName(); +} +abstract public function getTemplateName(); +public function getDebugInfo() +{ +return array(); +} +public function getSource() +{ +@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); +return''; +} +public function getSourceContext() +{ +return new Twig_Source('', $this->getTemplateName()); +} +public function getEnvironment() +{ +@trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED); +return $this->env; +} +public function getParent(array $context) +{ +if (null !== $this->parent) { +return $this->parent; +} +try { +$parent = $this->doGetParent($context); +if (false === $parent) { +return false; +} +if ($parent instanceof self) { +return $this->parents[$parent->getTemplateName()] = $parent; +} +if (!isset($this->parents[$parent])) { +$this->parents[$parent] = $this->loadTemplate($parent); +} +} catch (Twig_Error_Loader $e) { +$e->setSourceContext(null); +$e->guess(); +throw $e; +} +return $this->parents[$parent]; +} +protected function doGetParent(array $context) +{ +return false; +} +public function isTraitable() +{ +return true; +} +public function displayParentBlock($name, array $context, array $blocks = array()) +{ +$name = (string) $name; +if (isset($this->traits[$name])) { +$this->traits[$name][0]->displayBlock($name, $context, $blocks, false); +} elseif (false !== $parent = $this->getParent($context)) { +$parent->displayBlock($name, $context, $blocks, false); +} else { +throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext()); +} +} +public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true) +{ +$name = (string) $name; +if ($useBlocks && isset($blocks[$name])) { +$template = $blocks[$name][0]; +$block = $blocks[$name][1]; +} elseif (isset($this->blocks[$name])) { +$template = $this->blocks[$name][0]; +$block = $this->blocks[$name][1]; +} else { +$template = null; +$block = null; +} +if (null !== $template && !$template instanceof self) { +throw new LogicException('A block must be a method on a Twig_Template instance.'); +} +if (null !== $template) { +try { +$template->$block($context, $blocks); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($template->getSourceContext()); +} +if (false === $e->getTemplateLine()) { +$e->setTemplateLine(-1); +$e->guess(); +} +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); +} +} elseif (false !== $parent = $this->getParent($context)) { +$parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); +} else { +@trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED); +} +} +public function renderParentBlock($name, array $context, array $blocks = array()) +{ +ob_start(); +$this->displayParentBlock($name, $context, $blocks); +return ob_get_clean(); +} +public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true) +{ +ob_start(); +$this->displayBlock($name, $context, $blocks, $useBlocks); +return ob_get_clean(); +} +public function hasBlock($name, array $context = null, array $blocks = array()) +{ +if (null === $context) { +@trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); +return isset($this->blocks[(string) $name]); +} +if (isset($blocks[$name])) { +return $blocks[$name][0] instanceof self; +} +if (isset($this->blocks[$name])) { +return true; +} +if (false !== $parent = $this->getParent($context)) { +return $parent->hasBlock($name, $context); +} +return false; +} +public function getBlockNames(array $context = null, array $blocks = array()) +{ +if (null === $context) { +@trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); +return array_keys($this->blocks); +} +$names = array_merge(array_keys($blocks), array_keys($this->blocks)); +if (false !== $parent = $this->getParent($context)) { +$names = array_merge($names, $parent->getBlockNames($context)); +} +return array_unique($names); +} +protected function loadTemplate($template, $templateName = null, $line = null, $index = null) +{ +try { +if (is_array($template)) { +return $this->env->resolveTemplate($template); +} +if ($template instanceof self) { +return $template; +} +if ($template instanceof Twig_TemplateWrapper) { +return $template; +} +return $this->env->loadTemplate($template, $index); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($templateName ? new Twig_Source('', $templateName) : $this->getSourceContext()); +} +if ($e->getTemplateLine()) { +throw $e; +} +if (!$line) { +$e->guess(); +} else { +$e->setTemplateLine($line); +} +throw $e; +} +} +public function getBlocks() +{ +return $this->blocks; +} +public function display(array $context, array $blocks = array()) +{ +$this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); +} +public function render(array $context) +{ +$level = ob_get_level(); +ob_start(); +try { +$this->display($context); +} catch (Exception $e) { +while (ob_get_level() > $level) { +ob_end_clean(); +} +throw $e; +} catch (Throwable $e) { +while (ob_get_level() > $level) { +ob_end_clean(); +} +throw $e; +} +return ob_get_clean(); +} +protected function displayWithErrorHandling(array $context, array $blocks = array()) +{ +try { +$this->doDisplay($context, $blocks); +} catch (Twig_Error $e) { +if (!$e->getSourceContext()) { +$e->setSourceContext($this->getSourceContext()); +} +if (false === $e->getTemplateLine()) { +$e->setTemplateLine(-1); +$e->guess(); +} +throw $e; +} catch (Exception $e) { +throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); +} +} +abstract protected function doDisplay(array $context, array $blocks = array()); +final protected function getContext($context, $item, $ignoreStrictCheck = false) +{ +if (!array_key_exists($item, $context)) { +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext()); +} +return $context[$item]; +} +protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) +{ +if (self::METHOD_CALL !== $type) { +$arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; +if ((is_array($object) && (isset($object[$arrayItem]) || array_key_exists($arrayItem, $object))) +|| ($object instanceof ArrayAccess && isset($object[$arrayItem])) +) { +if ($isDefinedTest) { +return true; +} +return $object[$arrayItem]; +} +if (self::ARRAY_CALL === $type || !is_object($object)) { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +if ($object instanceof ArrayAccess) { +$message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist.', $arrayItem, get_class($object)); +} elseif (is_object($object)) { +$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, get_class($object)); +} elseif (is_array($object)) { +if (empty($object)) { +$message = sprintf('Key "%s" does not exist as the array is empty.', $arrayItem); +} else { +$message = sprintf('Key "%s" for array with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); +} +} elseif (self::ARRAY_CALL === $type) { +if (null === $object) { +$message = sprintf('Impossible to access a key ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +} elseif (null === $object) { +$message = sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); +} +} +if (!is_object($object)) { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +if (null === $object) { +$message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); +} else { +$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, gettype($object), $object); +} +throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); +} +if (self::METHOD_CALL !== $type && !$object instanceof self) { if (isset($object->$item) || array_key_exists((string) $item, $object)) { +if ($isDefinedTest) { +return true; +} +if ($this->env->hasExtension('Twig_Extension_Sandbox')) { +$this->env->getExtension('Twig_Extension_Sandbox')->checkPropertyAllowed($object, $item); +} +return $object->$item; +} +} +$class = get_class($object); +if (!isset(self::$cache[$class])) { +if ($object instanceof self) { +$ref = new ReflectionClass($class); +$methods = array(); +foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { +if ('getenvironment'!== strtolower($refMethod->name)) { +$methods[] = $refMethod->name; +} +} +} else { +$methods = get_class_methods($object); +} +sort($methods); +$cache = array(); +foreach ($methods as $method) { +$cache[$method] = $method; +$cache[$lcName = strtolower($method)] = $method; +if ('g'=== $lcName[0] && 0 === strpos($lcName,'get')) { +$name = substr($method, 3); +$lcName = substr($lcName, 3); +} elseif ('i'=== $lcName[0] && 0 === strpos($lcName,'is')) { +$name = substr($method, 2); +$lcName = substr($lcName, 2); +} else { +continue; +} +if (!isset($cache[$name])) { +$cache[$name] = $method; +} +if (!isset($cache[$lcName])) { +$cache[$lcName] = $method; +} +} +self::$cache[$class] = $cache; +} +$call = false; +if (isset(self::$cache[$class][$item])) { +$method = self::$cache[$class][$item]; +} elseif (isset(self::$cache[$class][$lcItem = strtolower($item)])) { +$method = self::$cache[$class][$lcItem]; +} elseif (isset(self::$cache[$class]['__call'])) { +$method = $item; +$call = true; +} else { +if ($isDefinedTest) { +return false; +} +if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { +return; +} +throw new Twig_Error_Runtime(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext()); +} +if ($isDefinedTest) { +return true; +} +if ($this->env->hasExtension('Twig_Extension_Sandbox')) { +$this->env->getExtension('Twig_Extension_Sandbox')->checkMethodAllowed($object, $method); +} +try { +if (!$arguments) { +$ret = $object->$method(); +} else { +$ret = call_user_func_array(array($object, $method), $arguments); +} +} catch (BadMethodCallException $e) { +if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { +return; +} +throw $e; +} +if ($object instanceof Twig_TemplateInterface) { +$self = $object->getTemplateName() === $this->getTemplateName(); +$message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); +if ('renderBlock'=== $method ||'displayBlock'=== $method) { +$message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ?'':', template'); +} elseif ('hasBlock'=== $method) { +$message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ?'':', template'); +} elseif ('render'=== $method ||'display'=== $method) { +$message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); +} +@trigger_error($message, E_USER_DEPRECATED); +return $ret ===''?'': new Twig_Markup($ret, $this->env->getCharset()); +} +return $ret; +} +} +} +namespace Monolog\Formatter +{ +interface FormatterInterface +{ +public function format(array $record); +public function formatBatch(array $records); +} +} +namespace Monolog\Formatter +{ +use Exception; +class NormalizerFormatter implements FormatterInterface +{ +const SIMPLE_DATE ="Y-m-d H:i:s"; +protected $dateFormat; +public function __construct($dateFormat = null) +{ +$this->dateFormat = $dateFormat ?: static::SIMPLE_DATE; +if (!function_exists('json_encode')) { +throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); +} +} +public function format(array $record) +{ +return $this->normalize($record); +} +public function formatBatch(array $records) +{ +foreach ($records as $key => $record) { +$records[$key] = $this->format($record); +} +return $records; +} +protected function normalize($data) +{ +if (null === $data || is_scalar($data)) { +if (is_float($data)) { +if (is_infinite($data)) { +return ($data > 0 ?'':'-') .'INF'; +} +if (is_nan($data)) { +return'NaN'; +} +} +return $data; +} +if (is_array($data)) { +$normalized = array(); +$count = 1; +foreach ($data as $key => $value) { +if ($count++ >= 1000) { +$normalized['...'] ='Over 1000 items ('.count($data).' total), aborting normalization'; +break; +} +$normalized[$key] = $this->normalize($value); +} +return $normalized; +} +if ($data instanceof \DateTime) { +return $data->format($this->dateFormat); +} +if (is_object($data)) { +if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) { +return $this->normalizeException($data); +} +if (method_exists($data,'__toString') && !$data instanceof \JsonSerializable) { +$value = $data->__toString(); +} else { +$value = $this->toJson($data, true); +} +return sprintf("[object] (%s: %s)", get_class($data), $value); +} +if (is_resource($data)) { +return sprintf('[resource] (%s)', get_resource_type($data)); +} +return'[unknown('.gettype($data).')]'; +} +protected function normalizeException($e) +{ +if (!$e instanceof Exception && !$e instanceof \Throwable) { +throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e)); +} +$data = array('class'=> get_class($e),'message'=> $e->getMessage(),'code'=> $e->getCode(),'file'=> $e->getFile().':'.$e->getLine(), +); +if ($e instanceof \SoapFault) { +if (isset($e->faultcode)) { +$data['faultcode'] = $e->faultcode; +} +if (isset($e->faultactor)) { +$data['faultactor'] = $e->faultactor; +} +if (isset($e->detail)) { +$data['detail'] = $e->detail; +} +} +$trace = $e->getTrace(); +foreach ($trace as $frame) { +if (isset($frame['file'])) { +$data['trace'][] = $frame['file'].':'.$frame['line']; +} elseif (isset($frame['function']) && $frame['function'] ==='{closure}') { +$data['trace'][] = $frame['function']; +} else { +$data['trace'][] = $this->toJson($this->normalize($frame), true); +} +} +if ($previous = $e->getPrevious()) { +$data['previous'] = $this->normalizeException($previous); +} +return $data; +} +protected function toJson($data, $ignoreErrors = false) +{ +if ($ignoreErrors) { +return @$this->jsonEncode($data); +} +$json = $this->jsonEncode($data); +if ($json === false) { +$json = $this->handleJsonError(json_last_error(), $data); +} +return $json; +} +private function jsonEncode($data) +{ +if (version_compare(PHP_VERSION,'5.4.0','>=')) { +return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); +} +return json_encode($data); +} +private function handleJsonError($code, $data) +{ +if ($code !== JSON_ERROR_UTF8) { +$this->throwEncodeError($code, $data); +} +if (is_string($data)) { +$this->detectAndCleanUtf8($data); +} elseif (is_array($data)) { +array_walk_recursive($data, array($this,'detectAndCleanUtf8')); +} else { +$this->throwEncodeError($code, $data); +} +$json = $this->jsonEncode($data); +if ($json === false) { +$this->throwEncodeError(json_last_error(), $data); +} +return $json; +} +private function throwEncodeError($code, $data) +{ +switch ($code) { +case JSON_ERROR_DEPTH: +$msg ='Maximum stack depth exceeded'; +break; +case JSON_ERROR_STATE_MISMATCH: +$msg ='Underflow or the modes mismatch'; +break; +case JSON_ERROR_CTRL_CHAR: +$msg ='Unexpected control character found'; +break; +case JSON_ERROR_UTF8: +$msg ='Malformed UTF-8 characters, possibly incorrectly encoded'; +break; +default: +$msg ='Unknown error'; +} +throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true)); +} +public function detectAndCleanUtf8(&$data) +{ +if (is_string($data) && !preg_match('//u', $data)) { +$data = preg_replace_callback('/[\x80-\xFF]+/', +function ($m) { return utf8_encode($m[0]); }, +$data +); +$data = str_replace( +array('¤','¦','¨','´','¸','¼','½','¾'), +array('€','Š','š','Ž','ž','Œ','œ','Ÿ'), +$data +); +} +} +} +} +namespace Monolog\Formatter +{ +class LineFormatter extends NormalizerFormatter +{ +const SIMPLE_FORMAT ="[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; +protected $format; +protected $allowInlineLineBreaks; +protected $ignoreEmptyContextAndExtra; +protected $includeStacktraces; +public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false) +{ +$this->format = $format ?: static::SIMPLE_FORMAT; +$this->allowInlineLineBreaks = $allowInlineLineBreaks; +$this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; +parent::__construct($dateFormat); +} +public function includeStacktraces($include = true) +{ +$this->includeStacktraces = $include; +if ($this->includeStacktraces) { +$this->allowInlineLineBreaks = true; +} +} +public function allowInlineLineBreaks($allow = true) +{ +$this->allowInlineLineBreaks = $allow; +} +public function ignoreEmptyContextAndExtra($ignore = true) +{ +$this->ignoreEmptyContextAndExtra = $ignore; +} +public function format(array $record) +{ +$vars = parent::format($record); +$output = $this->format; +foreach ($vars['extra'] as $var => $val) { +if (false !== strpos($output,'%extra.'.$var.'%')) { +$output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output); +unset($vars['extra'][$var]); +} +} +foreach ($vars['context'] as $var => $val) { +if (false !== strpos($output,'%context.'.$var.'%')) { +$output = str_replace('%context.'.$var.'%', $this->stringify($val), $output); +unset($vars['context'][$var]); +} +} +if ($this->ignoreEmptyContextAndExtra) { +if (empty($vars['context'])) { +unset($vars['context']); +$output = str_replace('%context%','', $output); +} +if (empty($vars['extra'])) { +unset($vars['extra']); +$output = str_replace('%extra%','', $output); +} +} +foreach ($vars as $var => $val) { +if (false !== strpos($output,'%'.$var.'%')) { +$output = str_replace('%'.$var.'%', $this->stringify($val), $output); +} +} +if (false !== strpos($output,'%')) { +$output = preg_replace('/%(?:extra|context)\..+?%/','', $output); +} +return $output; +} +public function formatBatch(array $records) +{ +$message =''; +foreach ($records as $record) { +$message .= $this->format($record); +} +return $message; +} +public function stringify($value) +{ +return $this->replaceNewlines($this->convertToString($value)); +} +protected function normalizeException($e) +{ +if (!$e instanceof \Exception && !$e instanceof \Throwable) { +throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e)); +} +$previousText =''; +if ($previous = $e->getPrevious()) { +do { +$previousText .=', '.get_class($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine(); +} while ($previous = $previous->getPrevious()); +} +$str ='[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')'; +if ($this->includeStacktraces) { +$str .="\n[stacktrace]\n".$e->getTraceAsString(); +} +return $str; +} +protected function convertToString($data) +{ +if (null === $data || is_bool($data)) { +return var_export($data, true); +} +if (is_scalar($data)) { +return (string) $data; +} +if (version_compare(PHP_VERSION,'5.4.0','>=')) { +return $this->toJson($data, true); +} +return str_replace('\\/','/', @json_encode($data)); +} +protected function replaceNewlines($str) +{ +if ($this->allowInlineLineBreaks) { +return $str; +} +return str_replace(array("\r\n","\r","\n"),' ', $str); +} +} +} +namespace Monolog\Handler +{ +use Monolog\Formatter\FormatterInterface; +interface HandlerInterface +{ +public function isHandling(array $record); +public function handle(array $record); +public function handleBatch(array $records); +public function pushProcessor($callback); +public function popProcessor(); +public function setFormatter(FormatterInterface $formatter); +public function getFormatter(); +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +use Monolog\Formatter\FormatterInterface; +use Monolog\Formatter\LineFormatter; +abstract class AbstractHandler implements HandlerInterface +{ +protected $level = Logger::DEBUG; +protected $bubble = true; +protected $formatter; +protected $processors = array(); +public function __construct($level = Logger::DEBUG, $bubble = true) +{ +$this->setLevel($level); +$this->bubble = $bubble; +} +public function isHandling(array $record) +{ +return $record['level'] >= $this->level; +} +public function handleBatch(array $records) +{ +foreach ($records as $record) { +$this->handle($record); +} +} +public function close() +{ +} +public function pushProcessor($callback) +{ +if (!is_callable($callback)) { +throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); +} +array_unshift($this->processors, $callback); +return $this; +} +public function popProcessor() +{ +if (!$this->processors) { +throw new \LogicException('You tried to pop from an empty processor stack.'); +} +return array_shift($this->processors); +} +public function setFormatter(FormatterInterface $formatter) +{ +$this->formatter = $formatter; +return $this; +} +public function getFormatter() +{ +if (!$this->formatter) { +$this->formatter = $this->getDefaultFormatter(); +} +return $this->formatter; +} +public function setLevel($level) +{ +$this->level = Logger::toMonologLevel($level); +return $this; +} +public function getLevel() +{ +return $this->level; +} +public function setBubble($bubble) +{ +$this->bubble = $bubble; +return $this; +} +public function getBubble() +{ +return $this->bubble; +} +public function __destruct() +{ +try { +$this->close(); +} catch (\Exception $e) { +} catch (\Throwable $e) { +} +} +protected function getDefaultFormatter() +{ +return new LineFormatter(); +} +} +} +namespace Monolog\Handler +{ +abstract class AbstractProcessingHandler extends AbstractHandler +{ +public function handle(array $record) +{ +if (!$this->isHandling($record)) { +return false; +} +$record = $this->processRecord($record); +$record['formatted'] = $this->getFormatter()->format($record); +$this->write($record); +return false === $this->bubble; +} +abstract protected function write(array $record); +protected function processRecord(array $record) +{ +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +return $record; +} +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +class StreamHandler extends AbstractProcessingHandler +{ +protected $stream; +protected $url; +private $errorMessage; +protected $filePermission; +protected $useLocking; +private $dirCreated; +public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false) +{ +parent::__construct($level, $bubble); +if (is_resource($stream)) { +$this->stream = $stream; +} elseif (is_string($stream)) { +$this->url = $stream; +} else { +throw new \InvalidArgumentException('A stream must either be a resource or a string.'); +} +$this->filePermission = $filePermission; +$this->useLocking = $useLocking; +} +public function close() +{ +if ($this->url && is_resource($this->stream)) { +fclose($this->stream); +} +$this->stream = null; +} +public function getStream() +{ +return $this->stream; +} +public function getUrl() +{ +return $this->url; +} +protected function write(array $record) +{ +if (!is_resource($this->stream)) { +if (null === $this->url ||''=== $this->url) { +throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); +} +$this->createDir(); +$this->errorMessage = null; +set_error_handler(array($this,'customErrorHandler')); +$this->stream = fopen($this->url,'a'); +if ($this->filePermission !== null) { +@chmod($this->url, $this->filePermission); +} +restore_error_handler(); +if (!is_resource($this->stream)) { +$this->stream = null; +throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url)); +} +} +if ($this->useLocking) { +flock($this->stream, LOCK_EX); +} +$this->streamWrite($this->stream, $record); +if ($this->useLocking) { +flock($this->stream, LOCK_UN); +} +} +protected function streamWrite($stream, array $record) +{ +fwrite($stream, (string) $record['formatted']); +} +private function customErrorHandler($code, $msg) +{ +$this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }','', $msg); +} +private function getDirFromStream($stream) +{ +$pos = strpos($stream,'://'); +if ($pos === false) { +return dirname($stream); +} +if ('file://'=== substr($stream, 0, 7)) { +return dirname(substr($stream, 7)); +} +return; +} +private function createDir() +{ +if ($this->dirCreated) { +return; +} +$dir = $this->getDirFromStream($this->url); +if (null !== $dir && !is_dir($dir)) { +$this->errorMessage = null; +set_error_handler(array($this,'customErrorHandler')); +$status = mkdir($dir, 0777, true); +restore_error_handler(); +if (false === $status) { +throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir)); +} +} +$this->dirCreated = true; +} +} +} +namespace Monolog\Handler +{ +use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; +use Monolog\Handler\FingersCrossed\ActivationStrategyInterface; +use Monolog\Logger; +class FingersCrossedHandler extends AbstractHandler +{ +protected $handler; +protected $activationStrategy; +protected $buffering = true; +protected $bufferSize; +protected $buffer = array(); +protected $stopBuffering; +protected $passthruLevel; +public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null) +{ +if (null === $activationStrategy) { +$activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING); +} +if (!$activationStrategy instanceof ActivationStrategyInterface) { +$activationStrategy = new ErrorLevelActivationStrategy($activationStrategy); +} +$this->handler = $handler; +$this->activationStrategy = $activationStrategy; +$this->bufferSize = $bufferSize; +$this->bubble = $bubble; +$this->stopBuffering = $stopBuffering; +if ($passthruLevel !== null) { +$this->passthruLevel = Logger::toMonologLevel($passthruLevel); +} +if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { +throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); +} +} +public function isHandling(array $record) +{ +return true; +} +public function activate() +{ +if ($this->stopBuffering) { +$this->buffering = false; +} +if (!$this->handler instanceof HandlerInterface) { +$record = end($this->buffer) ?: null; +$this->handler = call_user_func($this->handler, $record, $this); +if (!$this->handler instanceof HandlerInterface) { +throw new \RuntimeException("The factory callable should return a HandlerInterface"); +} +} +$this->handler->handleBatch($this->buffer); +$this->buffer = array(); +} +public function handle(array $record) +{ +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +if ($this->buffering) { +$this->buffer[] = $record; +if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) { +array_shift($this->buffer); +} +if ($this->activationStrategy->isHandlerActivated($record)) { +$this->activate(); +} +} else { +$this->handler->handle($record); +} +return false === $this->bubble; +} +public function close() +{ +if (null !== $this->passthruLevel) { +$level = $this->passthruLevel; +$this->buffer = array_filter($this->buffer, function ($record) use ($level) { +return $record['level'] >= $level; +}); +if (count($this->buffer) > 0) { +$this->handler->handleBatch($this->buffer); +$this->buffer = array(); +} +} +} +public function reset() +{ +$this->buffering = true; +} +public function clear() +{ +$this->buffer = array(); +$this->reset(); +} +} +} +namespace Monolog\Handler +{ +use Monolog\Logger; +class FilterHandler extends AbstractHandler +{ +protected $handler; +protected $acceptedLevels; +protected $bubble; +public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true) +{ +$this->handler = $handler; +$this->bubble = $bubble; +$this->setAcceptedLevels($minLevelOrList, $maxLevel); +if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) { +throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object"); +} +} +public function getAcceptedLevels() +{ +return array_flip($this->acceptedLevels); +} +public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY) +{ +if (is_array($minLevelOrList)) { +$acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList); +} else { +$minLevelOrList = Logger::toMonologLevel($minLevelOrList); +$maxLevel = Logger::toMonologLevel($maxLevel); +$acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) { +return $level >= $minLevelOrList && $level <= $maxLevel; +})); +} +$this->acceptedLevels = array_flip($acceptedLevels); +} +public function isHandling(array $record) +{ +return isset($this->acceptedLevels[$record['level']]); +} +public function handle(array $record) +{ +if (!$this->isHandling($record)) { +return false; +} +if (!$this->handler instanceof HandlerInterface) { +$this->handler = call_user_func($this->handler, $record, $this); +if (!$this->handler instanceof HandlerInterface) { +throw new \RuntimeException("The factory callable should return a HandlerInterface"); +} +} +if ($this->processors) { +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +} +$this->handler->handle($record); +return false === $this->bubble; +} +public function handleBatch(array $records) +{ +$filtered = array(); +foreach ($records as $record) { +if ($this->isHandling($record)) { +$filtered[] = $record; +} +} +$this->handler->handleBatch($filtered); +} +} +} +namespace Monolog\Handler +{ +class TestHandler extends AbstractProcessingHandler +{ +protected $records = array(); +protected $recordsByLevel = array(); +public function getRecords() +{ +return $this->records; +} +public function clear() +{ +$this->records = array(); +$this->recordsByLevel = array(); +} +public function hasRecords($level) +{ +return isset($this->recordsByLevel[$level]); +} +public function hasRecord($record, $level) +{ +if (is_array($record)) { +$record = $record['message']; +} +return $this->hasRecordThatPasses(function ($rec) use ($record) { +return $rec['message'] === $record; +}, $level); +} +public function hasRecordThatContains($message, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($message) { +return strpos($rec['message'], $message) !== false; +}, $level); +} +public function hasRecordThatMatches($regex, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($regex) { +return preg_match($regex, $rec['message']) > 0; +}, $level); +} +public function hasRecordThatPasses($predicate, $level) +{ +if (!is_callable($predicate)) { +throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds"); +} +if (!isset($this->recordsByLevel[$level])) { +return false; +} +foreach ($this->recordsByLevel[$level] as $i => $rec) { +if (call_user_func($predicate, $rec, $i)) { +return true; +} +} +return false; +} +protected function write(array $record) +{ +$this->recordsByLevel[$record['level']][] = $record; +$this->records[] = $record; +} +public function __call($method, $args) +{ +if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { +$genericMethod = $matches[1] . ('Records'!== $matches[3] ?'Record':'') . $matches[3]; +$level = constant('Monolog\Logger::'. strtoupper($matches[2])); +if (method_exists($this, $genericMethod)) { +$args[] = $level; +return call_user_func_array(array($this, $genericMethod), $args); +} +} +throw new \BadMethodCallException('Call to undefined method '. get_class($this) .'::'. $method .'()'); +} +} +} +namespace Monolog +{ +use Monolog\Handler\HandlerInterface; +use Monolog\Handler\StreamHandler; +use Psr\Log\LoggerInterface; +use Psr\Log\InvalidArgumentException; +class Logger implements LoggerInterface +{ +const DEBUG = 100; +const INFO = 200; +const NOTICE = 250; +const WARNING = 300; +const ERROR = 400; +const CRITICAL = 500; +const ALERT = 550; +const EMERGENCY = 600; +const API = 1; +protected static $levels = array( +self::DEBUG =>'DEBUG', +self::INFO =>'INFO', +self::NOTICE =>'NOTICE', +self::WARNING =>'WARNING', +self::ERROR =>'ERROR', +self::CRITICAL =>'CRITICAL', +self::ALERT =>'ALERT', +self::EMERGENCY =>'EMERGENCY', +); +protected static $timezone; +protected $name; +protected $handlers; +protected $processors; +protected $microsecondTimestamps = true; +public function __construct($name, array $handlers = array(), array $processors = array()) +{ +$this->name = $name; +$this->handlers = $handlers; +$this->processors = $processors; +} +public function getName() +{ +return $this->name; +} +public function withName($name) +{ +$new = clone $this; +$new->name = $name; +return $new; +} +public function pushHandler(HandlerInterface $handler) +{ +array_unshift($this->handlers, $handler); +return $this; +} +public function popHandler() +{ +if (!$this->handlers) { +throw new \LogicException('You tried to pop from an empty handler stack.'); +} +return array_shift($this->handlers); +} +public function setHandlers(array $handlers) +{ +$this->handlers = array(); +foreach (array_reverse($handlers) as $handler) { +$this->pushHandler($handler); +} +return $this; +} +public function getHandlers() +{ +return $this->handlers; +} +public function pushProcessor($callback) +{ +if (!is_callable($callback)) { +throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given'); +} +array_unshift($this->processors, $callback); +return $this; +} +public function popProcessor() +{ +if (!$this->processors) { +throw new \LogicException('You tried to pop from an empty processor stack.'); +} +return array_shift($this->processors); +} +public function getProcessors() +{ +return $this->processors; +} +public function useMicrosecondTimestamps($micro) +{ +$this->microsecondTimestamps = (bool) $micro; +} +public function addRecord($level, $message, array $context = array()) +{ +if (!$this->handlers) { +$this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); +} +$levelName = static::getLevelName($level); +$handlerKey = null; +reset($this->handlers); +while ($handler = current($this->handlers)) { +if ($handler->isHandling(array('level'=> $level))) { +$handlerKey = key($this->handlers); +break; +} +next($this->handlers); +} +if (null === $handlerKey) { +return false; +} +if (!static::$timezone) { +static::$timezone = new \DateTimeZone(date_default_timezone_get() ?:'UTC'); +} +if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) { +$ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone); +} else { +$ts = new \DateTime(null, static::$timezone); +} +$ts->setTimezone(static::$timezone); +$record = array('message'=> (string) $message,'context'=> $context,'level'=> $level,'level_name'=> $levelName,'channel'=> $this->name,'datetime'=> $ts,'extra'=> array(), +); +foreach ($this->processors as $processor) { +$record = call_user_func($processor, $record); +} +while ($handler = current($this->handlers)) { +if (true === $handler->handle($record)) { +break; +} +next($this->handlers); +} +return true; +} +public function addDebug($message, array $context = array()) +{ +return $this->addRecord(static::DEBUG, $message, $context); +} +public function addInfo($message, array $context = array()) +{ +return $this->addRecord(static::INFO, $message, $context); +} +public function addNotice($message, array $context = array()) +{ +return $this->addRecord(static::NOTICE, $message, $context); +} +public function addWarning($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function addError($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function addCritical($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function addAlert($message, array $context = array()) +{ +return $this->addRecord(static::ALERT, $message, $context); +} +public function addEmergency($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public static function getLevels() +{ +return array_flip(static::$levels); +} +public static function getLevelName($level) +{ +if (!isset(static::$levels[$level])) { +throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels))); +} +return static::$levels[$level]; +} +public static function toMonologLevel($level) +{ +if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) { +return constant(__CLASS__.'::'.strtoupper($level)); +} +return $level; +} +public function isHandling($level) +{ +$record = array('level'=> $level, +); +foreach ($this->handlers as $handler) { +if ($handler->isHandling($record)) { +return true; +} +} +return false; +} +public function log($level, $message, array $context = array()) +{ +$level = static::toMonologLevel($level); +return $this->addRecord($level, $message, $context); +} +public function debug($message, array $context = array()) +{ +return $this->addRecord(static::DEBUG, $message, $context); +} +public function info($message, array $context = array()) +{ +return $this->addRecord(static::INFO, $message, $context); +} +public function notice($message, array $context = array()) +{ +return $this->addRecord(static::NOTICE, $message, $context); +} +public function warn($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function warning($message, array $context = array()) +{ +return $this->addRecord(static::WARNING, $message, $context); +} +public function err($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function error($message, array $context = array()) +{ +return $this->addRecord(static::ERROR, $message, $context); +} +public function crit($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function critical($message, array $context = array()) +{ +return $this->addRecord(static::CRITICAL, $message, $context); +} +public function alert($message, array $context = array()) +{ +return $this->addRecord(static::ALERT, $message, $context); +} +public function emerg($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public function emergency($message, array $context = array()) +{ +return $this->addRecord(static::EMERGENCY, $message, $context); +} +public static function setTimezone(\DateTimeZone $tz) +{ +self::$timezone = $tz; +} +} +} +namespace Symfony\Component\HttpKernel\Log +{ +interface DebugLoggerInterface +{ +public function getLogs(); +public function countErrors(); +} +} +namespace Symfony\Bridge\Monolog +{ +use Monolog\Logger as BaseLogger; +use Symfony\Component\HttpKernel\Log\DebugLoggerInterface; +class Logger extends BaseLogger implements DebugLoggerInterface +{ +public function getLogs() +{ +if ($logger = $this->getDebugLogger()) { +return $logger->getLogs(); +} +return array(); +} +public function countErrors() +{ +if ($logger = $this->getDebugLogger()) { +return $logger->countErrors(); +} +return 0; +} +private function getDebugLogger() +{ +foreach ($this->processors as $processor) { +if ($processor instanceof DebugLoggerInterface) { +return $processor; +} +} +foreach ($this->handlers as $handler) { +if ($handler instanceof DebugLoggerInterface) { +return $handler; +} +} +} +} +} +namespace Monolog\Handler\FingersCrossed +{ +interface ActivationStrategyInterface +{ +public function isHandlerActivated(array $record); +} +} +namespace Monolog\Handler\FingersCrossed +{ +use Monolog\Logger; +class ErrorLevelActivationStrategy implements ActivationStrategyInterface +{ +private $actionLevel; +public function __construct($actionLevel) +{ +$this->actionLevel = Logger::toMonologLevel($actionLevel); +} +public function isHandlerActivated(array $record) +{ +return $record['level'] >= $this->actionLevel; +} +} +} +namespace Doctrine\Common\Lexer +{ +abstract class AbstractLexer +{ +private $input; +private $tokens = array(); +private $position = 0; +private $peek = 0; +public $lookahead; +public $token; +public function setInput($input) +{ +$this->input = $input; +$this->tokens = array(); +$this->reset(); +$this->scan($input); +} +public function reset() +{ +$this->lookahead = null; +$this->token = null; +$this->peek = 0; +$this->position = 0; +} +public function resetPeek() +{ +$this->peek = 0; +} +public function resetPosition($position = 0) +{ +$this->position = $position; +} +public function getInputUntilPosition($position) +{ +return substr($this->input, 0, $position); +} +public function isNextToken($token) +{ +return null !== $this->lookahead && $this->lookahead['type'] === $token; +} +public function isNextTokenAny(array $tokens) +{ +return null !== $this->lookahead && in_array($this->lookahead['type'], $tokens, true); +} +public function moveNext() +{ +$this->peek = 0; +$this->token = $this->lookahead; +$this->lookahead = (isset($this->tokens[$this->position])) +? $this->tokens[$this->position++] : null; +return $this->lookahead !== null; +} +public function skipUntil($type) +{ +while ($this->lookahead !== null && $this->lookahead['type'] !== $type) { +$this->moveNext(); +} +} +public function isA($value, $token) +{ +return $this->getType($value) === $token; +} +public function peek() +{ +if (isset($this->tokens[$this->position + $this->peek])) { +return $this->tokens[$this->position + $this->peek++]; +} else { +return null; +} +} +public function glimpse() +{ +$peek = $this->peek(); +$this->peek = 0; +return $peek; +} +protected function scan($input) +{ +static $regex; +if ( ! isset($regex)) { +$regex = sprintf('/(%s)|%s/%s', +implode(')|(', $this->getCatchablePatterns()), +implode('|', $this->getNonCatchablePatterns()), +$this->getModifiers() +); +} +$flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE; +$matches = preg_split($regex, $input, -1, $flags); +foreach ($matches as $match) { +$type = $this->getType($match[0]); +$this->tokens[] = array('value'=> $match[0],'type'=> $type,'position'=> $match[1], +); +} +} +public function getLiteral($token) +{ +$className = get_class($this); +$reflClass = new \ReflectionClass($className); +$constants = $reflClass->getConstants(); +foreach ($constants as $name => $value) { +if ($value === $token) { +return $className .'::'. $name; +} +} +return $token; +} +protected function getModifiers() +{ +return'i'; +} +abstract protected function getCatchablePatterns(); +abstract protected function getNonCatchablePatterns(); +abstract protected function getType(&$value); +} +} +namespace Doctrine\Common\Annotations +{ +use Doctrine\Common\Lexer\AbstractLexer; +final class DocLexer extends AbstractLexer +{ +const T_NONE = 1; +const T_INTEGER = 2; +const T_STRING = 3; +const T_FLOAT = 4; +const T_IDENTIFIER = 100; +const T_AT = 101; +const T_CLOSE_CURLY_BRACES = 102; +const T_CLOSE_PARENTHESIS = 103; +const T_COMMA = 104; +const T_EQUALS = 105; +const T_FALSE = 106; +const T_NAMESPACE_SEPARATOR = 107; +const T_OPEN_CURLY_BRACES = 108; +const T_OPEN_PARENTHESIS = 109; +const T_TRUE = 110; +const T_NULL = 111; +const T_COLON = 112; +protected $noCase = array('@'=> self::T_AT,','=> self::T_COMMA,'('=> self::T_OPEN_PARENTHESIS,')'=> self::T_CLOSE_PARENTHESIS,'{'=> self::T_OPEN_CURLY_BRACES,'}'=> self::T_CLOSE_CURLY_BRACES,'='=> self::T_EQUALS,':'=> self::T_COLON,'\\'=> self::T_NAMESPACE_SEPARATOR +); +protected $withCase = array('true'=> self::T_TRUE,'false'=> self::T_FALSE,'null'=> self::T_NULL +); +protected function getCatchablePatterns() +{ +return array('[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*','(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?','"(?:""|[^"])*+"', +); +} +protected function getNonCatchablePatterns() +{ +return array('\s+','\*+','(.)'); +} +protected function getType(&$value) +{ +$type = self::T_NONE; +if ($value[0] ==='"') { +$value = str_replace('""','"', substr($value, 1, strlen($value) - 2)); +return self::T_STRING; +} +if (isset($this->noCase[$value])) { +return $this->noCase[$value]; +} +if ($value[0] ==='_'|| $value[0] ==='\\'|| ctype_alpha($value[0])) { +return self::T_IDENTIFIER; +} +$lowerValue = strtolower($value); +if (isset($this->withCase[$lowerValue])) { +return $this->withCase[$lowerValue]; +} +if (is_numeric($value)) { +return (strpos($value,'.') !== false || stripos($value,'e') !== false) +? self::T_FLOAT : self::T_INTEGER; +} +return $type; +} +} +} +namespace Doctrine\Common\Annotations +{ +interface Reader +{ +function getClassAnnotations(\ReflectionClass $class); +function getClassAnnotation(\ReflectionClass $class, $annotationName); +function getMethodAnnotations(\ReflectionMethod $method); +function getMethodAnnotation(\ReflectionMethod $method, $annotationName); +function getPropertyAnnotations(\ReflectionProperty $property); +function getPropertyAnnotation(\ReflectionProperty $property, $annotationName); +} +} +namespace Doctrine\Common\Annotations +{ +class FileCacheReader implements Reader +{ +private $reader; +private $dir; +private $debug; +private $loadedAnnotations = array(); +private $classNameHashes = array(); +private $umask; +public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002) +{ +if ( ! is_int($umask)) { +throw new \InvalidArgumentException(sprintf('The parameter umask must be an integer, was: %s', +gettype($umask) +)); +} +$this->reader = $reader; +$this->umask = $umask; +if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) { +throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir)); +} +$this->dir = rtrim($cacheDir,'\\/'); +$this->debug = $debug; +} +public function getClassAnnotations(\ReflectionClass $class) +{ +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name]; +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getClassAnnotations($class); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getClassAnnotations($class); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +public function getPropertyAnnotations(\ReflectionProperty $property) +{ +$class = $property->getDeclaringClass(); +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name].'$'.$property->getName(); +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getPropertyAnnotations($property); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getPropertyAnnotations($property); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +public function getMethodAnnotations(\ReflectionMethod $method) +{ +$class = $method->getDeclaringClass(); +if ( ! isset($this->classNameHashes[$class->name])) { +$this->classNameHashes[$class->name] = sha1($class->name); +} +$key = $this->classNameHashes[$class->name].'#'.$method->getName(); +if (isset($this->loadedAnnotations[$key])) { +return $this->loadedAnnotations[$key]; +} +$path = $this->dir.'/'.strtr($key,'\\','-').'.cache.php'; +if (!is_file($path)) { +$annot = $this->reader->getMethodAnnotations($method); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +if ($this->debug +&& (false !== $filename = $class->getFilename()) +&& filemtime($path) < filemtime($filename)) { +@unlink($path); +$annot = $this->reader->getMethodAnnotations($method); +$this->saveCacheFile($path, $annot); +return $this->loadedAnnotations[$key] = $annot; +} +return $this->loadedAnnotations[$key] = include $path; +} +private function saveCacheFile($path, $data) +{ +if (!is_writable($this->dir)) { +throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir)); +} +$tempfile = tempnam($this->dir, uniqid('', true)); +if (false === $tempfile) { +throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir)); +} +$written = file_put_contents($tempfile,'umask)); +if (false === rename($tempfile, $path)) { +@unlink($tempfile); +throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path)); +} +} +public function getClassAnnotation(\ReflectionClass $class, $annotationName) +{ +$annotations = $this->getClassAnnotations($class); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function getMethodAnnotation(\ReflectionMethod $method, $annotationName) +{ +$annotations = $this->getMethodAnnotations($method); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName) +{ +$annotations = $this->getPropertyAnnotations($property); +foreach ($annotations as $annotation) { +if ($annotation instanceof $annotationName) { +return $annotation; +} +} +return null; +} +public function clearLoadedAnnotations() +{ +$this->loadedAnnotations = array(); +} +} +} +namespace Doctrine\Common\Annotations +{ +use SplFileObject; +final class PhpParser +{ +public function parseClass(\ReflectionClass $class) +{ +if (method_exists($class,'getUseStatements')) { +return $class->getUseStatements(); +} +if (false === $filename = $class->getFilename()) { +return array(); +} +$content = $this->getFileContent($filename, $class->getStartLine()); +if (null === $content) { +return array(); +} +$namespace = preg_quote($class->getNamespaceName()); +$content = preg_replace('/^.*?(\bnamespace\s+'. $namespace .'\s*[;{].*)$/s','\\1', $content); +$tokenizer = new TokenParser('parseUseStatements($class->getNamespaceName()); +return $statements; +} +private function getFileContent($filename, $lineNumber) +{ +if ( ! is_file($filename)) { +return null; +} +$content =''; +$lineCnt = 0; +$file = new SplFileObject($filename); +while (!$file->eof()) { +if ($lineCnt++ == $lineNumber) { +break; +} +$content .= $file->fgets(); +} +return $content; +} +} +} +namespace Doctrine\Common +{ +use Doctrine\Common\Lexer\AbstractLexer; +abstract class Lexer extends AbstractLexer +{ +} +} +namespace Doctrine\Common\Persistence +{ +interface ConnectionRegistry +{ +public function getDefaultConnectionName(); +public function getConnection($name = null); +public function getConnections(); +public function getConnectionNames(); +} +} +namespace Doctrine\Common\Persistence +{ +interface Proxy +{ +const MARKER ='__CG__'; +const MARKER_LENGTH = 6; +public function __load(); +public function __isInitialized(); +} +} +namespace Doctrine\Common\Util +{ +use Doctrine\Common\Persistence\Proxy; +class ClassUtils +{ +public static function getRealClass($class) +{ +if (false === $pos = strrpos($class,'\\'.Proxy::MARKER.'\\')) { +return $class; +} +return substr($class, $pos + Proxy::MARKER_LENGTH + 2); +} +public static function getClass($object) +{ +return self::getRealClass(get_class($object)); +} +public static function getParentClass($className) +{ +return get_parent_class( self::getRealClass( $className ) ); +} +public static function newReflectionClass($class) +{ +return new \ReflectionClass( self::getRealClass( $class ) ); +} +public static function newReflectionObject($object) +{ +return self::newReflectionClass( self::getClass( $object ) ); +} +public static function generateProxyClassName($className, $proxyNamespace) +{ +return rtrim($proxyNamespace,'\\') .'\\'.Proxy::MARKER.'\\'. ltrim($className,'\\'); +} +} +} +namespace Doctrine\Common\Persistence +{ +interface ManagerRegistry extends ConnectionRegistry +{ +public function getDefaultManagerName(); +public function getManager($name = null); +public function getManagers(); +public function resetManager($name = null); +public function getAliasNamespace($alias); +public function getManagerNames(); +public function getRepository($persistentObject, $persistentManagerName = null); +public function getManagerForClass($class); +} +} +namespace Symfony\Bridge\Doctrine +{ +use Doctrine\Common\Persistence\ManagerRegistry as ManagerRegistryInterface; +use Doctrine\ORM\EntityManager; +interface RegistryInterface extends ManagerRegistryInterface +{ +public function getDefaultEntityManagerName(); +public function getEntityManager($name = null); +public function getEntityManagers(); +public function resetEntityManager($name = null); +public function getEntityNamespace($alias); +public function getEntityManagerNames(); +public function getEntityManagerForClass($class); +} +} +namespace Doctrine\Common\Persistence +{ +abstract class AbstractManagerRegistry implements ManagerRegistry +{ +private $name; +private $connections; +private $managers; +private $defaultConnection; +private $defaultManager; +private $proxyInterfaceName; +public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName) +{ +$this->name = $name; +$this->connections = $connections; +$this->managers = $managers; +$this->defaultConnection = $defaultConnection; +$this->defaultManager = $defaultManager; +$this->proxyInterfaceName = $proxyInterfaceName; +} +abstract protected function getService($name); +abstract protected function resetService($name); +public function getName() +{ +return $this->name; +} +public function getConnection($name = null) +{ +if (null === $name) { +$name = $this->defaultConnection; +} +if (!isset($this->connections[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Connection named "%s" does not exist.', $this->name, $name)); +} +return $this->getService($this->connections[$name]); +} +public function getConnectionNames() +{ +return $this->connections; +} +public function getConnections() +{ +$connections = []; +foreach ($this->connections as $name => $id) { +$connections[$name] = $this->getService($id); +} +return $connections; +} +public function getDefaultConnectionName() +{ +return $this->defaultConnection; +} +public function getDefaultManagerName() +{ +return $this->defaultManager; +} +public function getManager($name = null) +{ +if (null === $name) { +$name = $this->defaultManager; +} +if (!isset($this->managers[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); +} +return $this->getService($this->managers[$name]); +} +public function getManagerForClass($class) +{ +if (strpos($class,':') !== false) { +list($namespaceAlias, $simpleClassName) = explode(':', $class, 2); +$class = $this->getAliasNamespace($namespaceAlias) .'\\'. $simpleClassName; +} +$proxyClass = new \ReflectionClass($class); +if ($proxyClass->implementsInterface($this->proxyInterfaceName)) { +if (! $parentClass = $proxyClass->getParentClass()) { +return null; +} +$class = $parentClass->getName(); +} +foreach ($this->managers as $id) { +$manager = $this->getService($id); +if (!$manager->getMetadataFactory()->isTransient($class)) { +return $manager; +} +} +} +public function getManagerNames() +{ +return $this->managers; +} +public function getManagers() +{ +$dms = []; +foreach ($this->managers as $name => $id) { +$dms[$name] = $this->getService($id); +} +return $dms; +} +public function getRepository($persistentObjectName, $persistentManagerName = null) +{ +return $this->getManager($persistentManagerName)->getRepository($persistentObjectName); +} +public function resetManager($name = null) +{ +if (null === $name) { +$name = $this->defaultManager; +} +if (!isset($this->managers[$name])) { +throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name)); +} +$this->resetService($this->managers[$name]); +return $this->getManager($name); +} +} +} +namespace Symfony\Bridge\Doctrine +{ +use ProxyManager\Proxy\LazyLoadingInterface; +use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerAwareTrait; +use Doctrine\Common\Persistence\AbstractManagerRegistry; +abstract class ManagerRegistry extends AbstractManagerRegistry implements ContainerAwareInterface +{ +use ContainerAwareTrait; +protected function getService($name) +{ +return $this->container->get($name); +} +protected function resetService($name) +{ +if (!$this->container->initialized($name)) { +return; +} +$manager = $this->container->get($name); +if (!$manager instanceof LazyLoadingInterface) { +@trigger_error(sprintf('Resetting a non-lazy manager service is deprecated since Symfony 3.2 and will throw an exception in version 4.0. Set the "%s" service as lazy and require "symfony/proxy-manager-bridge" in your composer.json file instead.', $name), E_USER_DEPRECATED); +$this->container->set($name, null); +return; +} +$manager->setProxyInitializer(\Closure::bind( +function (&$wrappedInstance, LazyLoadingInterface $manager) use ($name) { +if (isset($this->aliases[$name = strtolower($name)])) { +$name = $this->aliases[$name]; +} +$method = !isset($this->methodMap[$name]) ?'get'.strtr($name, $this->underscoreMap).'Service': $this->methodMap[$name]; +$wrappedInstance = $this->{$method}(false); +$manager->setProxyInitializer(null); +return true; +}, +$this->container, +Container::class +)); +} +} +} +namespace Doctrine\Bundle\DoctrineBundle +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Bridge\Doctrine\RegistryInterface; +use Symfony\Bridge\Doctrine\ManagerRegistry; +use Doctrine\ORM\ORMException; +use Doctrine\ORM\EntityManager; +class Registry extends ManagerRegistry implements RegistryInterface +{ +public function __construct(ContainerInterface $container, array $connections, array $entityManagers, $defaultConnection, $defaultEntityManager) +{ +$this->setContainer($container); +parent::__construct('ORM', $connections, $entityManagers, $defaultConnection, $defaultEntityManager,'Doctrine\ORM\Proxy\Proxy'); +} +public function getDefaultEntityManagerName() +{ +@trigger_error('getDefaultEntityManagerName is deprecated since Symfony 2.1. Use getDefaultManagerName instead', E_USER_DEPRECATED); +return $this->getDefaultManagerName(); +} +public function getEntityManager($name = null) +{ +@trigger_error('getEntityManager is deprecated since Symfony 2.1. Use getManager instead', E_USER_DEPRECATED); +return $this->getManager($name); +} +public function getEntityManagers() +{ +@trigger_error('getEntityManagers is deprecated since Symfony 2.1. Use getManagers instead', E_USER_DEPRECATED); +return $this->getManagers(); +} +public function resetEntityManager($name = null) +{ +@trigger_error('resetEntityManager is deprecated since Symfony 2.1. Use resetManager instead', E_USER_DEPRECATED); +$this->resetManager($name); +} +public function getEntityNamespace($alias) +{ +@trigger_error('getEntityNamespace is deprecated since Symfony 2.1. Use getAliasNamespace instead', E_USER_DEPRECATED); +return $this->getAliasNamespace($alias); +} +public function getAliasNamespace($alias) +{ +foreach (array_keys($this->getManagers()) as $name) { +try { +return $this->getManager($name)->getConfiguration()->getEntityNamespace($alias); +} catch (ORMException $e) { +} +} +throw ORMException::unknownEntityNamespace($alias); +} +public function getEntityManagerNames() +{ +@trigger_error('getEntityManagerNames is deprecated since Symfony 2.1. Use getManagerNames instead', E_USER_DEPRECATED); +return $this->getManagerNames(); +} +public function getEntityManagerForClass($class) +{ +@trigger_error('getEntityManagerForClass is deprecated since Symfony 2.1. Use getManagerForClass instead', E_USER_DEPRECATED); +return $this->getManagerForClass($class); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Doctrine\Common\Annotations\Reader; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; +use Doctrine\Common\Util\ClassUtils; +class ControllerListener implements EventSubscriberInterface +{ +protected $reader; +public function __construct(Reader $reader) +{ +$this->reader = $reader; +} +public function onKernelController(FilterControllerEvent $event) +{ +$controller = $event->getController(); +if (!is_array($controller) && method_exists($controller,'__invoke')) { +$controller = array($controller,'__invoke'); +} +if (!is_array($controller)) { +return; +} +$className = class_exists('Doctrine\Common\Util\ClassUtils') ? ClassUtils::getClass($controller[0]) : get_class($controller[0]); +$object = new \ReflectionClass($className); +$method = $object->getMethod($controller[1]); +$classConfigurations = $this->getConfigurations($this->reader->getClassAnnotations($object)); +$methodConfigurations = $this->getConfigurations($this->reader->getMethodAnnotations($method)); +$configurations = array(); +foreach (array_merge(array_keys($classConfigurations), array_keys($methodConfigurations)) as $key) { +if (!array_key_exists($key, $classConfigurations)) { +$configurations[$key] = $methodConfigurations[$key]; +} elseif (!array_key_exists($key, $methodConfigurations)) { +$configurations[$key] = $classConfigurations[$key]; +} else { +if (is_array($classConfigurations[$key])) { +if (!is_array($methodConfigurations[$key])) { +throw new \UnexpectedValueException('Configurations should both be an array or both not be an array'); +} +$configurations[$key] = array_merge($classConfigurations[$key], $methodConfigurations[$key]); +} else { +$configurations[$key] = $methodConfigurations[$key]; +} +} +} +$request = $event->getRequest(); +foreach ($configurations as $key => $attributes) { +$request->attributes->set($key, $attributes); +} +} +protected function getConfigurations(array $annotations) +{ +$configurations = array(); +foreach ($annotations as $configuration) { +if ($configuration instanceof ConfigurationInterface) { +if ($configuration->allowArray()) { +$configurations['_'.$configuration->getAliasName()][] = $configuration; +} elseif (!isset($configurations['_'.$configuration->getAliasName()])) { +$configurations['_'.$configuration->getAliasName()] = $configuration; +} else { +throw new \LogicException(sprintf('Multiple "%s" annotations are not allowed.', $configuration->getAliasName())); +} +} +} +return $configurations; +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +class ParamConverterListener implements EventSubscriberInterface +{ +protected $manager; +protected $autoConvert; +private $isParameterTypeSupported; +public function __construct(ParamConverterManager $manager, $autoConvert = true) +{ +$this->manager = $manager; +$this->autoConvert = $autoConvert; +$this->isParameterTypeSupported = method_exists('ReflectionParameter','getType'); +} +public function onKernelController(FilterControllerEvent $event) +{ +$controller = $event->getController(); +$request = $event->getRequest(); +$configurations = array(); +if ($configuration = $request->attributes->get('_converters')) { +foreach (is_array($configuration) ? $configuration : array($configuration) as $configuration) { +$configurations[$configuration->getName()] = $configuration; +} +} +if (is_array($controller)) { +$r = new \ReflectionMethod($controller[0], $controller[1]); +} elseif (is_object($controller) && is_callable($controller,'__invoke')) { +$r = new \ReflectionMethod($controller,'__invoke'); +} else { +$r = new \ReflectionFunction($controller); +} +if ($this->autoConvert) { +$configurations = $this->autoConfigure($r, $request, $configurations); +} +$this->manager->apply($request, $configurations); +} +private function autoConfigure(\ReflectionFunctionAbstract $r, Request $request, $configurations) +{ +foreach ($r->getParameters() as $param) { +if ($param->getClass() && $param->getClass()->isInstance($request)) { +continue; +} +$name = $param->getName(); +$class = $param->getClass(); +$hasType = $this->isParameterTypeSupported && $param->hasType(); +if ($class || $hasType) { +if (!isset($configurations[$name])) { +$configuration = new ParamConverter(array()); +$configuration->setName($name); +$configurations[$name] = $configuration; +} +if ($class && null === $configurations[$name]->getClass()) { +$configurations[$name]->setClass($class->getName()); +} +} +if (isset($configurations[$name])) { +$configurations[$name]->setIsOptional($param->isOptional() || $param->isDefaultValueAvailable() || $hasType && $param->getType()->allowsNull()); +} +} +return $configurations; +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpFoundation\Request; +interface ParamConverterInterface +{ +public function apply(Request $request, ParamConverter $configuration); +public function supports(ParamConverter $configuration); +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use DateTime; +class DateTimeParamConverter implements ParamConverterInterface +{ +public function apply(Request $request, ParamConverter $configuration) +{ +$param = $configuration->getName(); +if (!$request->attributes->has($param)) { +return false; +} +$options = $configuration->getOptions(); +$value = $request->attributes->get($param); +if (!$value && $configuration->isOptional()) { +return false; +} +if (isset($options['format'])) { +$date = DateTime::createFromFormat($options['format'], $value); +if (!$date) { +throw new NotFoundHttpException(sprintf('Invalid date given for parameter "%s".', $param)); +} +} else { +if (false === strtotime($value)) { +throw new NotFoundHttpException(sprintf('Invalid date given for parameter "%s".', $param)); +} +$date = new DateTime($value); +} +$request->attributes->set($param, $date); +return true; +} +public function supports(ParamConverter $configuration) +{ +if (null === $configuration->getClass()) { +return false; +} +return'DateTime'=== $configuration->getClass(); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\HttpFoundation\Request; +use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\ORM\NoResultException; +class DoctrineParamConverter implements ParamConverterInterface +{ +protected $registry; +public function __construct(ManagerRegistry $registry = null) +{ +$this->registry = $registry; +} +public function apply(Request $request, ParamConverter $configuration) +{ +$name = $configuration->getName(); +$class = $configuration->getClass(); +$options = $this->getOptions($configuration); +if (null === $request->attributes->get($name, false)) { +$configuration->setIsOptional(true); +} +if (false === $object = $this->find($class, $request, $options, $name)) { +if (false === $object = $this->findOneBy($class, $request, $options)) { +if ($configuration->isOptional()) { +$object = null; +} else { +throw new \LogicException(sprintf('Unable to guess how to get a Doctrine instance from the request information for parameter "%s".', $name)); +} +} +} +if (null === $object && false === $configuration->isOptional()) { +throw new NotFoundHttpException(sprintf('%s object not found.', $class)); +} +$request->attributes->set($name, $object); +return true; +} +protected function find($class, Request $request, $options, $name) +{ +if ($options['mapping'] || $options['exclude']) { +return false; +} +$id = $this->getIdentifier($request, $options, $name); +if (false === $id || null === $id) { +return false; +} +if (isset($options['repository_method'])) { +$method = $options['repository_method']; +} else { +$method ='find'; +} +try { +return $this->getManager($options['entity_manager'], $class)->getRepository($class)->$method($id); +} catch (NoResultException $e) { +return; +} +} +protected function getIdentifier(Request $request, $options, $name) +{ +if (isset($options['id'])) { +if (!is_array($options['id'])) { +$name = $options['id']; +} elseif (is_array($options['id'])) { +$id = array(); +foreach ($options['id'] as $field) { +$id[$field] = $request->attributes->get($field); +} +return $id; +} +} +if ($request->attributes->has($name)) { +return $request->attributes->get($name); +} +if ($request->attributes->has('id') && !isset($options['id'])) { +return $request->attributes->get('id'); +} +return false; +} +protected function findOneBy($class, Request $request, $options) +{ +if (!$options['mapping']) { +$keys = $request->attributes->keys(); +$options['mapping'] = $keys ? array_combine($keys, $keys) : array(); +} +foreach ($options['exclude'] as $exclude) { +unset($options['mapping'][$exclude]); +} +if (!$options['mapping']) { +return false; +} +if (isset($options['id']) && null === $request->attributes->get($options['id'])) { +return false; +} +$criteria = array(); +$em = $this->getManager($options['entity_manager'], $class); +$metadata = $em->getClassMetadata($class); +$mapMethodSignature = isset($options['repository_method']) +&& isset($options['map_method_signature']) +&& $options['map_method_signature'] === true; +foreach ($options['mapping'] as $attribute => $field) { +if ($metadata->hasField($field) +|| ($metadata->hasAssociation($field) && $metadata->isSingleValuedAssociation($field)) +|| $mapMethodSignature) { +$criteria[$field] = $request->attributes->get($attribute); +} +} +if ($options['strip_null']) { +$criteria = array_filter($criteria, function ($value) { return !is_null($value); }); +} +if (!$criteria) { +return false; +} +if (isset($options['repository_method'])) { +$repositoryMethod = $options['repository_method']; +} else { +$repositoryMethod ='findOneBy'; +} +try { +if ($mapMethodSignature) { +return $this->findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria); +} +return $em->getRepository($class)->$repositoryMethod($criteria); +} catch (NoResultException $e) { +return; +} +} +private function findDataByMapMethodSignature($em, $class, $repositoryMethod, $criteria) +{ +$arguments = array(); +$repository = $em->getRepository($class); +$ref = new \ReflectionMethod($repository, $repositoryMethod); +foreach ($ref->getParameters() as $parameter) { +if (array_key_exists($parameter->name, $criteria)) { +$arguments[] = $criteria[$parameter->name]; +} elseif ($parameter->isDefaultValueAvailable()) { +$arguments[] = $parameter->getDefaultValue(); +} else { +throw new \InvalidArgumentException(sprintf('Repository method "%s::%s" requires that you provide a value for the "$%s" argument.', get_class($repository), $repositoryMethod, $parameter->name)); +} +} +return $ref->invokeArgs($repository, $arguments); +} +public function supports(ParamConverter $configuration) +{ +if (null === $this->registry || !count($this->registry->getManagers())) { +return false; +} +if (null === $configuration->getClass()) { +return false; +} +$options = $this->getOptions($configuration); +$em = $this->getManager($options['entity_manager'], $configuration->getClass()); +if (null === $em) { +return false; +} +return !$em->getMetadataFactory()->isTransient($configuration->getClass()); +} +protected function getOptions(ParamConverter $configuration) +{ +return array_replace(array('entity_manager'=> null,'exclude'=> array(),'mapping'=> array(),'strip_null'=> false, +), $configuration->getOptions()); +} +private function getManager($name, $class) +{ +if (null === $name) { +return $this->registry->getManagerForClass($class); +} +return $this->registry->getManager($name); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter +{ +use Symfony\Component\HttpFoundation\Request; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; +class ParamConverterManager +{ +protected $converters = array(); +protected $namedConverters = array(); +public function apply(Request $request, $configurations) +{ +if (is_object($configurations)) { +$configurations = array($configurations); +} +foreach ($configurations as $configuration) { +$this->applyConverter($request, $configuration); +} +} +protected function applyConverter(Request $request, ConfigurationInterface $configuration) +{ +$value = $request->attributes->get($configuration->getName()); +$className = $configuration->getClass(); +if (is_object($value) && $value instanceof $className) { +return; +} +if ($converterName = $configuration->getConverter()) { +if (!isset($this->namedConverters[$converterName])) { +throw new \RuntimeException(sprintf("No converter named '%s' found for conversion of parameter '%s'.", +$converterName, $configuration->getName() +)); +} +$converter = $this->namedConverters[$converterName]; +if (!$converter->supports($configuration)) { +throw new \RuntimeException(sprintf("Converter '%s' does not support conversion of parameter '%s'.", +$converterName, $configuration->getName() +)); +} +$converter->apply($request, $configuration); +return; +} +foreach ($this->all() as $converter) { +if ($converter->supports($configuration)) { +if ($converter->apply($request, $configuration)) { +return; +} +} +} +} +public function add(ParamConverterInterface $converter, $priority = 0, $name = null) +{ +if ($priority !== null) { +if (!isset($this->converters[$priority])) { +$this->converters[$priority] = array(); +} +$this->converters[$priority][] = $converter; +} +if (null !== $name) { +$this->namedConverters[$name] = $converter; +} +} +public function all() +{ +krsort($this->converters); +$converters = array(); +foreach ($this->converters as $all) { +$converters = array_merge($converters, $all); +} +return $converters; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\StreamedResponse; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; +class TemplateListener implements EventSubscriberInterface +{ +protected $container; +public function __construct(ContainerInterface $container) +{ +$this->container = $container; +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +$template = $request->attributes->get('_template'); +if (null === $template) { +return; +} +if (!$template instanceof Template) { +return; +} +$template->setOwner($controller = $event->getController()); +if (null === $template->getTemplate()) { +$guesser = $this->container->get('sensio_framework_extra.view.guesser'); +$template->setTemplate($guesser->guessTemplateName($controller, $request, $template->getEngine())); +} +} +public function onKernelView(GetResponseForControllerResultEvent $event) +{ +$request = $event->getRequest(); +$template = $request->attributes->get('_template'); +if (null === $template) { +return; +} +$parameters = $event->getControllerResult(); +$owner = $template->getOwner(); +list($controller, $action) = $owner; +if (null === $parameters) { +$parameters = $this->resolveDefaultParameters($request, $template, $controller, $action); +} +$templating = $this->container->get('templating'); +if ($template->isStreamable()) { +$callback = function () use ($templating, $template, $parameters) { +return $templating->stream($template->getTemplate(), $parameters); +}; +$event->setResponse(new StreamedResponse($callback)); +} +$template->setOwner(array()); +$event->setResponse($templating->renderResponse($template->getTemplate(), $parameters)); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER => array('onKernelController', -128), +KernelEvents::VIEW =>'onKernelView', +); +} +private function resolveDefaultParameters(Request $request, Template $template, $controller, $action) +{ +$parameters = array(); +$arguments = $template->getVars(); +if (0 === count($arguments)) { +$r = new \ReflectionObject($controller); +$arguments = array(); +foreach ($r->getMethod($action)->getParameters() as $param) { +$arguments[] = $param; +} +} +foreach ($arguments as $argument) { +if ($argument instanceof \ReflectionParameter) { +$parameters[$name = $argument->getName()] = !$request->attributes->has($name) && $argument->isDefaultValueAvailable() ? $argument->getDefaultValue() : $request->attributes->get($name); +} else { +$parameters[$argument] = $request->attributes->get($argument); +} +} +return $parameters; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\Event\FilterResponseEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\ExpressionLanguage\ExpressionLanguage; +class HttpCacheListener implements EventSubscriberInterface +{ +private $lastModifiedDates; +private $etags; +private $expressionLanguage; +public function __construct() +{ +$this->lastModifiedDates = new \SplObjectStorage(); +$this->etags = new \SplObjectStorage(); +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_cache')) { +return; +} +$response = new Response(); +$lastModifiedDate =''; +if ($configuration->getLastModified()) { +$lastModifiedDate = $this->getExpressionLanguage()->evaluate($configuration->getLastModified(), $request->attributes->all()); +$response->setLastModified($lastModifiedDate); +} +$etag =''; +if ($configuration->getETag()) { +$etag = hash('sha256', $this->getExpressionLanguage()->evaluate($configuration->getETag(), $request->attributes->all())); +$response->setETag($etag); +} +if ($response->isNotModified($request)) { +$event->setController(function () use ($response) { +return $response; +}); +$event->stopPropagation(); +} else { +if ($etag) { +$this->etags[$request] = $etag; +} +if ($lastModifiedDate) { +$this->lastModifiedDates[$request] = $lastModifiedDate; +} +} +} +public function onKernelResponse(FilterResponseEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_cache')) { +return; +} +$response = $event->getResponse(); +if (!in_array($response->getStatusCode(), array(200, 203, 300, 301, 302, 304, 404, 410))) { +return; +} +if (null !== $age = $configuration->getSMaxAge()) { +if (!is_numeric($age)) { +$now = microtime(true); +$age = ceil(strtotime($configuration->getSMaxAge(), $now) - $now); +} +$response->setSharedMaxAge($age); +} +if (null !== $age = $configuration->getMaxAge()) { +if (!is_numeric($age)) { +$now = microtime(true); +$age = ceil(strtotime($configuration->getMaxAge(), $now) - $now); +} +$response->setMaxAge($age); +} +if (null !== $configuration->getExpires()) { +$date = \DateTime::createFromFormat('U', strtotime($configuration->getExpires()), new \DateTimeZone('UTC')); +$response->setExpires($date); +} +if (null !== $configuration->getVary()) { +$response->setVary($configuration->getVary()); +} +if ($configuration->isPublic()) { +$response->setPublic(); +} +if ($configuration->isPrivate()) { +$response->setPrivate(); +} +if (isset($this->lastModifiedDates[$request])) { +$response->setLastModified($this->lastModifiedDates[$request]); +unset($this->lastModifiedDates[$request]); +} +if (isset($this->etags[$request])) { +$response->setETag($this->etags[$request]); +unset($this->etags[$request]); +} +$event->setResponse($response); +} +public static function getSubscribedEvents() +{ +return array( +KernelEvents::CONTROLLER =>'onKernelController', +KernelEvents::RESPONSE =>'onKernelResponse', +); +} +private function getExpressionLanguage() +{ +if (null === $this->expressionLanguage) { +if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { +throw new \RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); +} +$this->expressionLanguage = new ExpressionLanguage(); +} +return $this->expressionLanguage; +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\EventListener +{ +use Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage; +use Symfony\Component\HttpKernel\Event\FilterControllerEvent; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; +use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Exception\AccessDeniedException; +use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; +class SecurityListener implements EventSubscriberInterface +{ +private $tokenStorage; +private $authChecker; +private $language; +private $trustResolver; +private $roleHierarchy; +public function __construct(SecurityContextInterface $securityContext = null, ExpressionLanguage $language = null, AuthenticationTrustResolverInterface $trustResolver = null, RoleHierarchyInterface $roleHierarchy = null, TokenStorageInterface $tokenStorage = null, AuthorizationCheckerInterface $authChecker = null) +{ +$this->tokenStorage = $tokenStorage ?: $securityContext; +$this->authChecker = $authChecker ?: $securityContext; +$this->language = $language; +$this->trustResolver = $trustResolver; +$this->roleHierarchy = $roleHierarchy; +} +public function onKernelController(FilterControllerEvent $event) +{ +$request = $event->getRequest(); +if (!$configuration = $request->attributes->get('_security')) { +return; +} +if (null === $this->tokenStorage || null === $this->trustResolver) { +throw new \LogicException('To use the @Security tag, you need to install the Symfony Security bundle.'); +} +if (null === $this->tokenStorage->getToken()) { +throw new \LogicException('To use the @Security tag, your controller needs to be behind a firewall.'); +} +if (null === $this->language) { +throw new \LogicException('To use the @Security tag, you need to use the Security component 2.4 or newer and install the ExpressionLanguage component.'); +} +if (!$this->language->evaluate($configuration->getExpression(), $this->getVariables($request))) { +throw new AccessDeniedException(sprintf('Expression "%s" denied access.', $configuration->getExpression())); +} +} +private function getVariables(Request $request) +{ +$token = $this->tokenStorage->getToken(); +if (null !== $this->roleHierarchy) { +$roles = $this->roleHierarchy->getReachableRoles($token->getRoles()); +} else { +$roles = $token->getRoles(); +} +$variables = array('token'=> $token,'user'=> $token->getUser(),'object'=> $request,'request'=> $request,'roles'=> array_map(function ($role) { return $role->getRole(); }, $roles),'trust_resolver'=> $this->trustResolver,'auth_checker'=> $this->authChecker, +); +return array_merge($request->attributes->all(), $variables); +} +public static function getSubscribedEvents() +{ +return array(KernelEvents::CONTROLLER =>'onKernelController'); +} +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Configuration +{ +interface ConfigurationInterface +{ +public function getAliasName(); +public function allowArray(); +} +} +namespace Sensio\Bundle\FrameworkExtraBundle\Configuration +{ +abstract class ConfigurationAnnotation implements ConfigurationInterface +{ +public function __construct(array $values) +{ +foreach ($values as $k => $v) { +if (!method_exists($this, $name ='set'.$k)) { +throw new \RuntimeException(sprintf('Unknown key "%s" for annotation "@%s".', $k, get_class($this))); +} +$this->$name($v); +} +} +} +} \ No newline at end of file diff --git a/var/cache/dev/classes.php.meta b/var/cache/dev/classes.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..bc62a257f2cce13fb7c3bd5269f320ef08642fd7 --- /dev/null +++ b/var/cache/dev/classes.php.meta @@ -0,0 +1 @@ +a:2:{i:0;a:156:{i:0;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventSubscriberInterface.php";i:1;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/SessionListener.php";i:2;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/EventListener/SessionListener.php";i:3;s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/SessionStorageInterface.php";i:4;s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php";i:5;s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/PhpBridgeSessionStorage.php";i:6;s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeSessionHandler.php";i:7;s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/NativeFileSessionHandler.php";i:8;s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/AbstractProxy.php";i:9;s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php";i:10;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/SessionInterface.php";i:11;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Session.php";i:12;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/GlobalVariables.php";i:13;s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReferenceInterface.php";i:14;s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateReference.php";i:15;s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php";i:16;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParserInterface.php";i:17;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Templating/TemplateNameParser.php";i:18;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateNameParser.php";i:19;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocatorInterface.php";i:20;s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/Loader/TemplateLocator.php";i:21;s:74:"/home/c2i/git/Symphony_S_A/vendor/psr/log/Psr/Log/LoggerAwareInterface.php";i:22;s:74:"/home/c2i/git/Symphony_S_A/vendor/psr/cache/src/CacheItemPoolInterface.php";i:23;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/AdapterInterface.php";i:24;s:70:"/home/c2i/git/Symphony_S_A/vendor/psr/log/Psr/Log/LoggerAwareTrait.php";i:25;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/AbstractAdapter.php";i:26;s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php";i:27;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/FilesystemAdapterTrait.php";i:28;s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/FilesystemAdapter.php";i:29;s:70:"/home/c2i/git/Symphony_S_A/vendor/psr/cache/src/CacheItemInterface.php";i:30;s:91:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php";i:31;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContextAwareInterface.php";i:32;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php";i:33;s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/ConfigurableRequirementsInterface.php";i:34;s:106:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Generator/UrlGenerator.php";i:35;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RequestContext.php";i:36;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcherInterface.php";i:37;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/RouterInterface.php";i:38;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RequestMatcherInterface.php";i:39;s:90:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Router.php";i:40;s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcherInterface.php";i:41;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/UrlMatcher.php";i:42;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Routing/Matcher/RedirectableUrlMatcher.php";i:43;s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/RedirectableUrlMatcher.php";i:44;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/WarmableInterface.php";i:45;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Routing/Router.php";i:46;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/Adapter/PhpArrayAdapter.php";i:47;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php";i:48;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php";i:49;s:93:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php";i:50;s:93:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php";i:51;s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php";i:52;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php";i:53;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Cache/DoctrineProvider.php";i:54;s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ConfigCacheInterface.php";i:55;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ResourceCheckerConfigCache.php";i:56;s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/ConfigCache.php";i:57;s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Config/FileLocator.php";i:58;s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerAwareInterface.php";i:59;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerInterface.php";i:60;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ResettableContainerInterface.php";i:61;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Container.php";i:62;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/Event.php";i:63;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcherInterface.php";i:64;s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/EventDispatcher.php";i:65;s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php";i:66;s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/ResponseListener.php";i:67;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php";i:68;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php";i:69;s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/ContainerAwareTrait.php";i:70;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";i:71;s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ArgumentResolverInterface.php";i:72;s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php";i:73;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php";i:74;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Controller/ArgumentResolver.php";i:75;s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadata.php";i:76;s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php";i:77;s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/ControllerMetadata/ArgumentMetadataFactory.php";i:78;s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/KernelEvent.php";i:79;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterControllerEvent.php";i:80;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/FilterResponseEvent.php";i:81;s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseEvent.php";i:82;s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForControllerResultEvent.php";i:83;s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Event/GetResponseForExceptionEvent.php";i:84;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php";i:85;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/KernelEvents.php";i:86;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Config/FileLocator.php";i:87;s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerNameParser.php";i:88;s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php";i:89;s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall.php";i:90;s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/User/UserProviderInterface.php";i:91;s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationManagerInterface.php";i:92;s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/AuthenticationProviderManager.php";i:93;s:140:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorageInterface.php";i:94;s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/Storage/TokenStorage.php";i:95;s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManagerInterface.php";i:96;s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AccessDecisionManager.php";i:97;s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationCheckerInterface.php";i:98;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/AuthorizationChecker.php";i:99;s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authorization/Voter/VoterInterface.php";i:100;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallConfig.php";i:101;s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Security/Http/FirewallMapInterface.php";i:102;s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallMap.php";i:103;s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Security/FirewallContext.php";i:104;s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcherInterface.php";i:105;s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/RequestMatcher.php";i:106;s:68:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Environment.php";i:107;s:75:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/ExtensionInterface.php";i:108;s:66:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension.php";i:109;s:71:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Core.php";i:110;s:74:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Escaper.php";i:111;s:76:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Extension/Optimizer.php";i:112;s:72:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/LoaderInterface.php";i:113;s:63:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Markup.php";i:114;s:74:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/TemplateInterface.php";i:115;s:65:"/home/c2i/git/Symphony_S_A/vendor/twig/twig/lib/Twig/Template.php";i:116;s:94:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php";i:117;s:95:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php";i:118;s:89:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php";i:119;s:90:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php";i:120;s:89:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php";i:121;s:99:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php";i:122;s:87:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php";i:123;s:95:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php";i:124;s:87:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php";i:125;s:85:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php";i:126;s:72:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Logger.php";i:127;s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Log/DebugLoggerInterface.php";i:128;s:87:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Monolog/Logger.php";i:129;s:116:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php";i:130;s:117:"/home/c2i/git/Symphony_S_A/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php";i:131;s:92:"/home/c2i/git/Symphony_S_A/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php";i:132;s:99:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php";i:133;s:97:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php";i:134;s:106:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php";i:135;s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php";i:136;s:79:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php";i:137;s:104:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php";i:138;s:91:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php";i:139;s:89:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php";i:140;s:101:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php";i:141;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/RegistryInterface.php";i:142;s:109:"/home/c2i/git/Symphony_S_A/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php";i:143;s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php";i:144;s:71:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Registry.php";i:145;s:100:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/ControllerListener.php";i:146;s:104:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/ParamConverterListener.php";i:147;s:114:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterInterface.php";i:148;s:113:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DateTimeParamConverter.php";i:149;s:113:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/DoctrineParamConverter.php";i:150;s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Request/ParamConverter/ParamConverterManager.php";i:151;s:98:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/TemplateListener.php";i:152;s:99:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/HttpCacheListener.php";i:153;s:98:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/EventListener/SecurityListener.php";i:154;s:104:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationInterface.php";i:155;s:105:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Configuration/ConfigurationAnnotation.php";}i:1;a:97:{i:0;s:60:"Symfony\Bundle\FrameworkBundle\EventListener\SessionListener";i:1;s:69:"Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage";i:2;s:72:"Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage";i:3;s:81:"Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler";i:4;s:68:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\AbstractProxy";i:5;s:74:"Symfony\Component\HttpFoundation\Session\Storage\Proxy\SessionHandlerProxy";i:6;s:48:"Symfony\Component\HttpFoundation\Session\Session";i:8;s:57:"Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables";i:9;s:59:"Symfony\Bundle\FrameworkBundle\Templating\TemplateReference";i:10;s:60:"Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser";i:11;s:64:"Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator";i:12;s:43:"Symfony\Component\Cache\Adapter\ApcuAdapter";i:13;s:49:"Symfony\Component\Cache\Adapter\FilesystemAdapter";i:14;s:33:"Symfony\Component\Cache\CacheItem";i:15;s:48:"Symfony\Component\Routing\Generator\UrlGenerator";i:16;s:40:"Symfony\Component\Routing\RequestContext";i:17;s:32:"Symfony\Component\Routing\Router";i:18;s:61:"Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher";i:19;s:45:"Symfony\Bundle\FrameworkBundle\Routing\Router";i:20;s:47:"Symfony\Component\Cache\Adapter\PhpArrayAdapter";i:21;s:40:"Symfony\Component\Cache\DoctrineProvider";i:22;s:36:"Symfony\Component\Config\ConfigCache";i:23;s:36:"Symfony\Component\Config\FileLocator";i:24;s:36:"Symfony\Component\Debug\ErrorHandler";i:25;s:61:"Symfony\Component\DependencyInjection\ContainerAwareInterface";i:26;s:47:"Symfony\Component\DependencyInjection\Container";i:27;s:39:"Symfony\Component\EventDispatcher\Event";i:28;s:63:"Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher";i:29;s:59:"Symfony\Component\HttpKernel\EventListener\ResponseListener";i:30;s:57:"Symfony\Component\HttpKernel\EventListener\RouterListener";i:31;s:42:"Symfony\Component\HttpKernel\Bundle\Bundle";i:32;s:58:"Symfony\Component\HttpKernel\Controller\ControllerResolver";i:33;s:56:"Symfony\Component\HttpKernel\Controller\ArgumentResolver";i:34;s:64:"Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata";i:35;s:71:"Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory";i:36;s:46:"Symfony\Component\HttpKernel\Event\KernelEvent";i:37;s:56:"Symfony\Component\HttpKernel\Event\FilterControllerEvent";i:38;s:54:"Symfony\Component\HttpKernel\Event\FilterResponseEvent";i:39;s:51:"Symfony\Component\HttpKernel\Event\GetResponseEvent";i:40;s:70:"Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent";i:41;s:63:"Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent";i:42;s:39:"Symfony\Component\HttpKernel\HttpKernel";i:43;s:41:"Symfony\Component\HttpKernel\KernelEvents";i:44;s:47:"Symfony\Component\HttpKernel\Config\FileLocator";i:45;s:62:"Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser";i:46;s:60:"Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver";i:47;s:40:"Symfony\Component\Security\Http\Firewall";i:48;s:58:"Symfony\Component\Security\Core\User\UserProviderInterface";i:49;s:76:"Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager";i:50;s:73:"Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage";i:51;s:67:"Symfony\Component\Security\Core\Authorization\AccessDecisionManager";i:52;s:66:"Symfony\Component\Security\Core\Authorization\AuthorizationChecker";i:53;s:66:"Symfony\Component\Security\Core\Authorization\Voter\VoterInterface";i:54;s:53:"Symfony\Bundle\SecurityBundle\Security\FirewallConfig";i:55;s:50:"Symfony\Bundle\SecurityBundle\Security\FirewallMap";i:56;s:54:"Symfony\Bundle\SecurityBundle\Security\FirewallContext";i:57;s:47:"Symfony\Component\HttpFoundation\RequestMatcher";i:58;s:16:"Twig_Environment";i:59;s:14:"Twig_Extension";i:60;s:19:"Twig_Extension_Core";i:61;s:22:"Twig_Extension_Escaper";i:62;s:24:"Twig_Extension_Optimizer";i:63;s:20:"Twig_LoaderInterface";i:64;s:11:"Twig_Markup";i:65;s:13:"Twig_Template";i:66;s:36:"Monolog\Formatter\FormatterInterface";i:67;s:31:"Monolog\Formatter\LineFormatter";i:68;s:32:"Monolog\Handler\HandlerInterface";i:69;s:31:"Monolog\Handler\AbstractHandler";i:70;s:41:"Monolog\Handler\AbstractProcessingHandler";i:71;s:29:"Monolog\Handler\StreamHandler";i:72;s:37:"Monolog\Handler\FingersCrossedHandler";i:73;s:29:"Monolog\Handler\FilterHandler";i:74;s:27:"Monolog\Handler\TestHandler";i:75;s:14:"Monolog\Logger";i:76;s:29:"Symfony\Bridge\Monolog\Logger";i:77;s:58:"Monolog\Handler\FingersCrossed\ActivationStrategyInterface";i:78;s:59:"Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy";i:79;s:36:"Doctrine\Common\Annotations\DocLexer";i:80;s:43:"Doctrine\Common\Annotations\FileCacheReader";i:81;s:37:"Doctrine\Common\Annotations\PhpParser";i:82;s:34:"Doctrine\Common\Annotations\Reader";i:83;s:21:"Doctrine\Common\Lexer";i:84;s:46:"Doctrine\Common\Persistence\ConnectionRegistry";i:85;s:33:"Doctrine\Common\Persistence\Proxy";i:86;s:31:"Doctrine\Common\Util\ClassUtils";i:87;s:39:"Doctrine\Bundle\DoctrineBundle\Registry";i:88;s:67:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener";i:89;s:71:"Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener";i:90;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter";i:91;s:80:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter";i:92;s:81:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface";i:93;s:79:"Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager";i:94;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener";i:95;s:66:"Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener";i:96;s:65:"Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener";i:97;s:72:"Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationAnnotation";}} \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI b/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/2/6/CRI7S1AjyPr9MstQbuuI @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu b/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/2/W/raPtGWHWtaSEzFxm01Iu @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 b/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/3/1/M2m-0cV9jZG61T-4qO65 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- b/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- new file mode 100644 index 0000000000000000000000000000000000000000..57071cbc856f5d53f2ceab47994f98805ef95e0f --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/3/R/ElaY6n5Qf36XIwrb5WH- @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489323783, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h b/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/4/W/fNhKIhj1TKf1UGnI9R0h @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE b/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/6/7/qHAiStv0eZviu4Am-BQE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q b/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q new file mode 100644 index 0000000000000000000000000000000000000000..57071cbc856f5d53f2ceab47994f98805ef95e0f --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/7/3/XCeEp9ltKLuCz6bLd49q @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489323783, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A b/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/8/K/FAss4NgqR-Vbcd5a6y9A @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd b/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/8/Z/K4lCyRMH1Wqhb0QcbkTd @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI b/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/A/L/16CeewTeVnw1NJvvngOI @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ b/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/A/S/X65GKAJJLFZbqEzGBqi+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U b/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/+/DTjt6S0keIlNWmYpHj3U @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f b/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/C/GPSW4kcuLaOS5LZ7Pn9f @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt b/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/F/bgrMO+mLhQ5crEfC14mt @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 b/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/B/G/yAJUtiClYe3PgVdnCHs5 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr b/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/E/O/iwNe7qNQoFd4abAwLFmr @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm b/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/E/W/GGgYe2GX7Z9Se2D3Pnjm @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k b/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/3/eO7rn8-v2LHpyDVQeF4k @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R b/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/G/HXiZN7t62K9FlrXj290R @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV b/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/J/+Q+taUZB7Y1g87kUpNRV @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY b/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/N/kxtVrRtrlcOl0-i0KDdY @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF b/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/F/O/AQIj6CQoXHaBmuPB8zrF @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK b/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/G/Z/5aD0qS-iEuCdLgIW0+QK @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol b/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/H/D/NqBojvGVHnEnyEE07sol @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 b/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/J/M/0tQ1C1VRDG2VUn-4-qD2 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X b/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X new file mode 100644 index 0000000000000000000000000000000000000000..37b0bc6d752127cbaa134cb49c999131418cb03b --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/K/B/WhemDGPN5uB4W4lEQg5X @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:1:"/";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";s:8:"homepage";s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh b/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/K/L/XBB0geO2PKhpV9a78uuh @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX b/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/B/NpjyIzdIbCJHUTN5ZoYX @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 b/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/H/XU6P7wKskHlgaT7RrU73 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S b/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/L/R/r0UuURYyqcRn-7OfB58S @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX b/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/H/1Dj3H3J4bf42D7jNoeVX @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG b/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/L/G0qJtvpAj7ZcDf1JmCFG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj b/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/M/V/vGlvwRqZjblYab4340hj @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ b/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/P/miIOV8EZZN5FneRHZr1+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N b/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/Q/wiB8S3SuPm-bRYCAHF0N @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 b/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/O/U/eNTMjsffFt-O21iX0AV7 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe b/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/P/K/AvUUb04HN7VIWaz3KGpe @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD b/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/P/O/QmpHmY2nDArMMffZ1HTD @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU b/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Q/W/NKnhDgq9-yJm8R0NE9jU @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J b/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/E/hLmH4qEdPwliXz5nTs5J @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a b/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/G/TpDi3Bw1UkYNV3ra-p5a @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG b/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/R/J/c6R5Ak5h39NbxQ8NaAiG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy b/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/5/WQHvFVQCVQhLW8NP32Gy @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e b/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/G/+72qC3WRspDeTTuyQb0e @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 b/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/S/S/MaCSgf5x+ywuoVKrzfE4 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk b/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/+/3NAWAwhbPdFEYojHaTWk @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum b/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/2/GD+9hxlV-uV4+kkHyLum @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi b/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/T/G/4n-9LMYDd+a7+DTJAgTi @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE b/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/U/Y/2MIZ1Dt0jULYuy8elYeE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul b/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/V/R/FkiyOA9zBhvw63pEzMul @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA b/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/W/A/x2uzyGqBrXv3s9uN98IA @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC b/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/6/DSokaawqq3kfFglOIiDC @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 b/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/9/3LM9kqUW9zOl6M700mU9 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 b/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/F/tZtjdOLDrtIEyKyADkz7 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y b/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/X/S/nWR+aenYghS+byVMAZ3y @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E b/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Y/Q/2ngIdrnQUVgh8DIr4Z6E @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n b/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Y/Q/wo4E-cv91gMDJ7EdAN+n @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 b/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 new file mode 100644 index 0000000000000000000000000000000000000000..8e2ebfe2640372c5f846d0727b36628d2ee11b77 --- /dev/null +++ b/var/cache/dev/pools/natDFMbNIC/Z/C/hXtFH64TyKQYYXoOUsE0 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268606, +); \ No newline at end of file diff --git a/var/cache/dev/profiler/23/64/246423 b/var/cache/dev/profiler/23/64/246423 new file mode 100644 index 0000000000000000000000000000000000000000..53d557d550cc5f92e8326f81766d74e026c3ed39 Binary files /dev/null and b/var/cache/dev/profiler/23/64/246423 differ diff --git a/var/cache/dev/profiler/26/46/d94626 b/var/cache/dev/profiler/26/46/d94626 new file mode 100644 index 0000000000000000000000000000000000000000..86b0476e593968cea0adfd79410e7767f1435c14 Binary files /dev/null and b/var/cache/dev/profiler/26/46/d94626 differ diff --git a/var/cache/dev/profiler/d9/f4/dcf4d9 b/var/cache/dev/profiler/d9/f4/dcf4d9 new file mode 100644 index 0000000000000000000000000000000000000000..1b7f5d65df81da6ab528e407b1bf2b94bbc024aa Binary files /dev/null and b/var/cache/dev/profiler/d9/f4/dcf4d9 differ diff --git a/var/cache/dev/profiler/f4/97/e697f4 b/var/cache/dev/profiler/f4/97/e697f4 new file mode 100644 index 0000000000000000000000000000000000000000..dcf6d0304925fe374dd6c7424b69eef77c8738f0 Binary files /dev/null and b/var/cache/dev/profiler/f4/97/e697f4 differ diff --git a/var/cache/dev/profiler/index.csv b/var/cache/dev/profiler/index.csv new file mode 100644 index 0000000000000000000000000000000000000000..092c9b290f5d40f07a5efb183f537ec72d652b5e --- /dev/null +++ b/var/cache/dev/profiler/index.csv @@ -0,0 +1,4 @@ +e697f4,127.0.0.1,GET,http://127.0.0.1:8000/,1489268606,,200 +246423,127.0.0.1,GET,http://127.0.0.1:8000/,1489323748,,200 +d94626,127.0.0.1,GET,http://127.0.0.1:8000/homepage,1489323784,dcf4d9,200 +dcf4d9,127.0.0.1,GET,http://127.0.0.1:8000/homepage,1489323784,,404 diff --git a/var/cache/dev/twig/04/04cb9d21f7772696cc6d4b1c38368ac88822579b2f135e7891c8da4aaded3f3b.php b/var/cache/dev/twig/04/04cb9d21f7772696cc6d4b1c38368ac88822579b2f135e7891c8da4aaded3f3b.php new file mode 100644 index 0000000000000000000000000000000000000000..4156fa6edfe24499acabe6d032338af40b448b39 --- /dev/null +++ b/var/cache/dev/twig/04/04cb9d21f7772696cc6d4b1c38368ac88822579b2f135e7891c8da4aaded3f3b.php @@ -0,0 +1,80 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59->enter($__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/symfony.svg")); + + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249->enter($__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/symfony.svg")); + + // line 1 + echo " + + +"; + + $__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59->leave($__internal_20c8a289373ebbcaa98f17d026ff3c142ab49a8d56ea99b82679a6314f886f59_prof); + + + $__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249->leave($__internal_85088025d84d26d353996d4bfb9f01e30787b0a4353a5ffa75cec272e84c0249_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/symfony.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/symfony.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg"); + } +} diff --git a/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php b/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php new file mode 100644 index 0000000000000000000000000000000000000000..9a407d31ca1fd4be7570ec7ae26d2aa548f6543e --- /dev/null +++ b/var/cache/dev/twig/0a/0a10c6dfbeb0b26f6cb908758137db9aeb4eeb4182230564b784cce757a68fde.php @@ -0,0 +1,405 @@ +parent = $this->loadTemplate("@Twig/layout.html.twig", "@Twig/Exception/exception_full.html.twig", 1); + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'title' => array($this, 'block_title'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doGetParent(array $context) + { + return "@Twig/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44->enter($__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception_full.html.twig")); + + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e->enter($__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception_full.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44->leave($__internal_2a2abae0674a171ce82b448de5d7fb40f46f4d6fe7d840ce9e3ab7992c939b44_prof); + + + $__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e->leave($__internal_d842d3af82f0f950a993a0fcdd2975b72bcbd2507b631335d49fb0695dbc026e_prof); + + } + + // line 3 + public function block_head($context, array $blocks = array()) + { + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1->enter($__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e->enter($__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 4 + echo " +"; + + $__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e->leave($__internal_f78c8cb92bb0811994a268aa33905f740ad144b6dfa787b2f62b53c82076852e_prof); + + + $__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1->leave($__internal_90a98a9f163f765267598615246fb5c69d0551b78ddff01053b4ef853fd721b1_prof); + + } + + // line 136 + public function block_title($context, array $blocks = array()) + { + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7->enter($__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01->enter($__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + // line 137 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true); + echo " ("; + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); + echo ") +"; + + $__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01->leave($__internal_8e905b0074b0dbd1e9a0a586cdd9d38d7eb2fdabe36fe8e17bdd437f74052b01_prof); + + + $__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7->leave($__internal_a0a799b2121a6b3dcc59a23956b41f5a5f860c7fba181485b1ba6a68469437c7_prof); + + } + + // line 140 + public function block_body($context, array $blocks = array()) + { + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e->enter($__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa->enter($__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 141 + echo " "; + $this->loadTemplate("@Twig/Exception/exception.html.twig", "@Twig/Exception/exception_full.html.twig", 141)->display($context); + + $__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa->leave($__internal_4a03b158948b5aa1137eb9e7fbf6b6d59fd6e868815071e0d2a917da0ffb61aa_prof); + + + $__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e->leave($__internal_5665bc241ee6835310b7e11c59a59b01b7cc11c24e824401d0d8635aba80e71e_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception_full.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 226 => 141, 217 => 140, 200 => 137, 191 => 136, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@Twig/layout.html.twig' %} + +{% block head %} + +{% endblock %} + +{% block title %} + {{ exception.message }} ({{ status_code }} {{ status_text }}) +{% endblock %} + +{% block body %} + {% include '@Twig/Exception/exception.html.twig' %} +{% endblock %} +", "@Twig/Exception/exception_full.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception_full.html.twig"); + } +} diff --git a/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php b/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php new file mode 100644 index 0000000000000000000000000000000000000000..cd4fd65501b7bb989a0f36005502c985cb33f3c8 --- /dev/null +++ b/var/cache/dev/twig/0e/0e8d0c7e369283ebc9feb3170be93255d471d5417750ca6332ab00bdf5d66417.php @@ -0,0 +1,1119 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9->enter($__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.css.twig")); + + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13->enter($__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.css.twig")); + + // line 2 + $context["colors"] = array("success" => "#4F805D", "warning" => "#A46A1F", "error" => "#B0413E"); + // line 3 + echo " +.sf-minitoolbar { + background-color: #222; + border-top-left-radius: 4px; + bottom: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + height: 36px; + padding: 6px; + position: fixed; + right: 0; + z-index: 99999; +} + +.sf-minitoolbar a { + display: block; +} +.sf-minitoolbar svg, +.sf-minitoolbar img { + max-height: 24px; + max-width: 24px; + display: inline; +} + +.sf-toolbar-clearer { + clear: both; + height: 36px; +} + +.sf-display-none { + display: none; +} + +.sf-toolbarreset * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + vertical-align: baseline; +} + +.sf-toolbarreset { + background-color: #222; + bottom: 0; + box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + color: #EEE; + font: 11px Arial, sans-serif; + left: 0; + margin: 0; + padding: 0 36px 0 0; + position: fixed; + right: 0; + text-align: left; + text-transform: none; + z-index: 99999; + + /* neutralize the aliasing defined by external CSS styles */ + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; +} +.sf-toolbarreset abbr { + border: dashed #777; + border-width: 0 0 1px; +} +.sf-toolbarreset svg, +.sf-toolbarreset img { + height: 20px; + display: inline-block; +} + +.sf-toolbarreset .hide-button { + background: #444; + display: block; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + cursor: pointer; + text-align: center; +} +.sf-toolbarreset .hide-button svg { + max-height: 18px; + margin-top: 10px; +} + +.sf-toolbar-block { + cursor: default; + display: block; + float: left; + height: 36px; + margin-right: 0; + white-space: nowrap; +} +.sf-toolbar-block > a, +.sf-toolbar-block > a:hover { + display: block; + text-decoration: none; +} + +.sf-toolbar-block span { + display: inline-block; +} +.sf-toolbar-block .sf-toolbar-value { + color: #F5F5F5; + font-size: 13px; + line-height: 36px; + padding: 0; +} +.sf-toolbar-block .sf-toolbar-label, +.sf-toolbar-block .sf-toolbar-class-separator { + color: #AAA; + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + border-collapse: collapse; + display: table; + z-index: 100000; +} +.sf-toolbar-block hr { + border-top: 1px solid #777; + margin: 4px 0; + padding-top: 4px; +} +.sf-toolbar-block .sf-toolbar-info-piece { + /* this 'border-bottom' trick is needed because 'margin-bottom' doesn't work for table rows */ + border-bottom: solid transparent 3px; + display: table-row; +} +.sf-toolbar-block .sf-toolbar-info-piece-additional, +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: none; +} +.sf-toolbar-block .sf-toolbar-info-group { + margin-bottom: 4px; + padding-bottom: 2px; + border-bottom: 1px solid #333333; +} +.sf-toolbar-block .sf-toolbar-info-group:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status { + padding: 2px 5px; + margin-bottom: 0; +} +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status + .sf-toolbar-status { + margin-left: 4px; +} + +.sf-toolbar-block .sf-toolbar-info-piece:last-child { + margin-bottom: 0; +} + +.sf-toolbar-block .sf-toolbar-info-piece a { + color: #99CDD8; + text-decoration: underline; +} +.sf-toolbar-block .sf-toolbar-info-piece a:hover { + text-decoration: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece b { + color: #AAA; + display: table-cell; + font-size: 11px; + padding: 4px 8px 4px 0; +} +.sf-toolbar-block:not(.sf-toolbar-block-dump) .sf-toolbar-info-piece span { + color: #F5F5F5; +} +.sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + background-color: #444; + bottom: 36px; + color: #F5F5F5; + display: none; + padding: 9px 0; + position: absolute; +} + +.sf-toolbar-block .sf-toolbar-info:empty { + visibility: hidden; +} + +.sf-toolbar-block .sf-toolbar-status { + display: inline-block; + color: #FFF; + background-color: #666; + padding: 3px 6px; + margin-bottom: 2px; + vertical-align: middle; + min-width: 15px; + min-height: 13px; + text-align: center; +} + +.sf-toolbar-block .sf-toolbar-status-green { + background-color: "; + // line 208 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "success", array()); + echo "; +} +.sf-toolbar-block .sf-toolbar-status-red { + background-color: "; + // line 211 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "error", array()); + echo "; +} +.sf-toolbar-block .sf-toolbar-status-yellow { + background-color: "; + // line 214 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "warning", array()); + echo "; +} + +.sf-toolbar-block.sf-toolbar-status-green { + background-color: "; + // line 218 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "success", array()); + echo "; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-red { + background-color: "; + // line 222 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "error", array()); + echo "; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-yellow { + background-color: "; + // line 226 + echo $this->getAttribute((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors")), "warning", array()); + echo "; + color: #FFF; +} + +.sf-toolbar-block-request .sf-toolbar-status { + color: #FFF; + display: inline-block; + font-size: 14px; + height: 36px; + line-height: 36px; + padding: 0 10px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a { + text-decoration: none; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a:hover { + text-decoration: underline; +} +.sf-toolbar-block-request .sf-toolbar-redirection-status { + font-weight: normal; + padding: 2px 4px; + line-height: 18px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece span.sf-toolbar-redirection-method { + font-size: 12px; + height: 17px; + line-height: 17px; +} + +.sf-toolbar-status-green .sf-toolbar-label, +.sf-toolbar-status-yellow .sf-toolbar-label, +.sf-toolbar-status-red .sf-toolbar-label { + color: #FFF; +} +.sf-toolbar-status-green svg path, +.sf-toolbar-status-red svg path, +.sf-toolbar-status-yellow svg path { + fill: #FFF; +} +.sf-toolbar-block-config svg path { + fill: #FFF; +} + +.sf-toolbar-block .sf-toolbar-icon { + display: block; + height: 36px; + padding: 0 7px; +} +.sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; +} + +.sf-toolbar-block .sf-toolbar-icon img, +.sf-toolbar-block .sf-toolbar-icon svg { + border-width: 0; + position: relative; + top: 8px; +} + +.sf-toolbar-block .sf-toolbar-icon img + span, +.sf-toolbar-block .sf-toolbar-icon svg + span { + margin-left: 4px; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-value { + margin-left: 4px; +} + +.sf-toolbar-block:hover { + position: relative; +} +.sf-toolbar-block:hover .sf-toolbar-icon { + background-color: #444; + position: relative; + z-index: 10002; +} +.sf-toolbar-block:hover .sf-toolbar-info { + display: block; + padding: 10px; + max-width: 480px; + max-height: 480px; + word-wrap: break-word; + overflow: hidden; + overflow-y: auto; +} +.sf-toolbar-info-piece b.sf-toolbar-ajax-info { + color: #F5F5F5; +} +.sf-toolbar-ajax-requests { + table-layout: auto; + width: 100%; +} +.sf-toolbar-ajax-requests td { + background-color: #444; + border-bottom: 1px solid #777; + color: #F5F5F5; + font-size: 12px; + padding: 4px; +} +.sf-toolbar-ajax-requests tr:last-child td { + border-bottom: 0; +} +.sf-toolbar-ajax-requests th { + background-color: #222; + border-bottom: 0; + color: #AAA; + font-size: 11px; + padding: 4px; +} +.sf-ajax-request-url { + max-width: 250px; + line-height: 9px; + overflow: hidden; + text-overflow: ellipsis; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a { + text-decoration: none; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a:hover { + text-decoration: underline; +} +.sf-ajax-request-duration { + text-align: right; +} +.sf-ajax-request-loading { + -webkit-animation: sf-blink .5s ease-in-out infinite; + -o-animation: sf-blink .5s ease-in-out infinite; + -moz-animation: sf-blink .5s ease-in-out infinite; + animation: sf-blink .5s ease-in-out infinite; +} +@-webkit-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@-moz-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} + +.sf-toolbar-block-dump pre.sf-dump { + background-color: #222; + border-color: #777; + border-radius: 0; + margin: 6px 0 12px 0; +} +.sf-toolbar-block-dump pre.sf-dump:last-child { + margin-bottom: 0; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece { + display: block; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece .sf-toolbar-file-line { + color: #AAA; + margin-left: 4px; +} +.sf-toolbar-block-dump .sf-toolbar-info img { + display: none; +} + +/* Override the setting when the toolbar is on the top */ +"; + // line 393 + if (((isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")) == "top")) { + // line 394 + echo " .sf-minitoolbar { + border-bottom-left-radius: 4px; + border-top-left-radius: 0; + bottom: auto; + right: 0; + top: 0; + } + + .sf-toolbarreset { + bottom: auto; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); + top: 0; + } + + .sf-toolbar-block .sf-toolbar-info { + bottom: auto; + top: 36px; + } +"; + } + // line 413 + echo " +"; + // line 414 + if ( !(isset($context["floatable"]) ? $context["floatable"] : $this->getContext($context, "floatable"))) { + // line 415 + echo " .sf-toolbarreset { + position: static; + } +"; + } + // line 419 + echo " +/* Responsive Design */ +.sf-toolbar-icon .sf-toolbar-label, +.sf-toolbar-icon .sf-toolbar-value { + display: none; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-label { + display: inline-block; +} + +/* Legacy Design - these styles are maintained to make old panels look + a bit better on the new toolbar */ +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + color: #AAA; + font-size: 12px; +} +.sf-toolbar-status-green .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-yellow .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-red .sf-toolbar-info-piece-additional-detail { + color: #FFF; +} + +@media (min-width: 768px) { + + .sf-toolbar-icon .sf-toolbar-label, + .sf-toolbar-icon .sf-toolbar-value { + display: inline; + } + + .sf-toolbar-block .sf-toolbar-icon img, + .sf-toolbar-block .sf-toolbar-icon svg { + top: 6px; + } + .sf-toolbar-block-time .sf-toolbar-icon svg, + .sf-toolbar-block-memory .sf-toolbar-icon svg { + display: none; + } + .sf-toolbar-block-time .sf-toolbar-icon svg + span, + .sf-toolbar-block-memory .sf-toolbar-icon svg + span { + margin-left: 0; + } + + .sf-toolbar-block .sf-toolbar-icon { + padding: 0 10px; + } + .sf-toolbar-block-time .sf-toolbar-icon { + padding-right: 5px; + } + .sf-toolbar-block-memory .sf-toolbar-icon { + padding-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; + } + .sf-toolbar-block-request .sf-toolbar-label { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-status + svg { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon svg + .sf-toolbar-label { + margin-left: 0; + } + .sf-toolbar-block-request .sf-toolbar-label + .sf-toolbar-value { + margin-right: 10px; + } + + .sf-toolbar-block-request:hover .sf-toolbar-info { + max-width: none; + } + + .sf-toolbar-block .sf-toolbar-info-piece b { + font-size: 12px; + } + .sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 13px; + } + + .sf-toolbar-block-right { + float: right; + margin-left: 0; + margin-right: 0; + } +} + +@media (min-width: 1024px) { + .sf-toolbar-block .sf-toolbar-info-piece-additional, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: inline-block; + } + + .sf-toolbar-block .sf-toolbar-info-piece-additional:empty, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail:empty { + display: none; + } +} +"; + + $__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9->leave($__internal_1d38a1f339b9bba0651629d92ff1e53d32c803826b922aea965614de82f04ac9_prof); + + + $__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13->leave($__internal_47cd8ae1d8edbecb25e9a4b41102a8c21deea6bb6c57753346d1015d2eb5ce13_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar.css.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 471 => 419, 465 => 415, 463 => 414, 460 => 413, 439 => 394, 437 => 393, 267 => 226, 260 => 222, 253 => 218, 246 => 214, 240 => 211, 234 => 208, 27 => 3, 25 => 2,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{# when updating any of these colors, do the same in profiler.css.twig #} +{% set colors = { 'success': '#4F805D', 'warning': '#A46A1F', 'error': '#B0413E' } %} + +.sf-minitoolbar { + background-color: #222; + border-top-left-radius: 4px; + bottom: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + display: none; + height: 36px; + padding: 6px; + position: fixed; + right: 0; + z-index: 99999; +} + +.sf-minitoolbar a { + display: block; +} +.sf-minitoolbar svg, +.sf-minitoolbar img { + max-height: 24px; + max-width: 24px; + display: inline; +} + +.sf-toolbar-clearer { + clear: both; + height: 36px; +} + +.sf-display-none { + display: none; +} + +.sf-toolbarreset * { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + vertical-align: baseline; +} + +.sf-toolbarreset { + background-color: #222; + bottom: 0; + box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + color: #EEE; + font: 11px Arial, sans-serif; + left: 0; + margin: 0; + padding: 0 36px 0 0; + position: fixed; + right: 0; + text-align: left; + text-transform: none; + z-index: 99999; + + /* neutralize the aliasing defined by external CSS styles */ + -webkit-font-smoothing: subpixel-antialiased; + -moz-osx-font-smoothing: auto; +} +.sf-toolbarreset abbr { + border: dashed #777; + border-width: 0 0 1px; +} +.sf-toolbarreset svg, +.sf-toolbarreset img { + height: 20px; + display: inline-block; +} + +.sf-toolbarreset .hide-button { + background: #444; + display: block; + position: absolute; + top: 0; + right: 0; + width: 36px; + height: 36px; + cursor: pointer; + text-align: center; +} +.sf-toolbarreset .hide-button svg { + max-height: 18px; + margin-top: 10px; +} + +.sf-toolbar-block { + cursor: default; + display: block; + float: left; + height: 36px; + margin-right: 0; + white-space: nowrap; +} +.sf-toolbar-block > a, +.sf-toolbar-block > a:hover { + display: block; + text-decoration: none; +} + +.sf-toolbar-block span { + display: inline-block; +} +.sf-toolbar-block .sf-toolbar-value { + color: #F5F5F5; + font-size: 13px; + line-height: 36px; + padding: 0; +} +.sf-toolbar-block .sf-toolbar-label, +.sf-toolbar-block .sf-toolbar-class-separator { + color: #AAA; + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + border-collapse: collapse; + display: table; + z-index: 100000; +} +.sf-toolbar-block hr { + border-top: 1px solid #777; + margin: 4px 0; + padding-top: 4px; +} +.sf-toolbar-block .sf-toolbar-info-piece { + /* this 'border-bottom' trick is needed because 'margin-bottom' doesn't work for table rows */ + border-bottom: solid transparent 3px; + display: table-row; +} +.sf-toolbar-block .sf-toolbar-info-piece-additional, +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: none; +} +.sf-toolbar-block .sf-toolbar-info-group { + margin-bottom: 4px; + padding-bottom: 2px; + border-bottom: 1px solid #333333; +} +.sf-toolbar-block .sf-toolbar-info-group:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status { + padding: 2px 5px; + margin-bottom: 0; +} +.sf-toolbar-block .sf-toolbar-info-piece .sf-toolbar-status + .sf-toolbar-status { + margin-left: 4px; +} + +.sf-toolbar-block .sf-toolbar-info-piece:last-child { + margin-bottom: 0; +} + +.sf-toolbar-block .sf-toolbar-info-piece a { + color: #99CDD8; + text-decoration: underline; +} +.sf-toolbar-block .sf-toolbar-info-piece a:hover { + text-decoration: none; +} + +.sf-toolbar-block .sf-toolbar-info-piece b { + color: #AAA; + display: table-cell; + font-size: 11px; + padding: 4px 8px 4px 0; +} +.sf-toolbar-block:not(.sf-toolbar-block-dump) .sf-toolbar-info-piece span { + color: #F5F5F5; +} +.sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 12px; +} + +.sf-toolbar-block .sf-toolbar-info { + background-color: #444; + bottom: 36px; + color: #F5F5F5; + display: none; + padding: 9px 0; + position: absolute; +} + +.sf-toolbar-block .sf-toolbar-info:empty { + visibility: hidden; +} + +.sf-toolbar-block .sf-toolbar-status { + display: inline-block; + color: #FFF; + background-color: #666; + padding: 3px 6px; + margin-bottom: 2px; + vertical-align: middle; + min-width: 15px; + min-height: 13px; + text-align: center; +} + +.sf-toolbar-block .sf-toolbar-status-green { + background-color: {{ colors.success|raw }}; +} +.sf-toolbar-block .sf-toolbar-status-red { + background-color: {{ colors.error|raw }}; +} +.sf-toolbar-block .sf-toolbar-status-yellow { + background-color: {{ colors.warning|raw }}; +} + +.sf-toolbar-block.sf-toolbar-status-green { + background-color: {{ colors.success|raw }}; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-red { + background-color: {{ colors.error|raw }}; + color: #FFF; +} +.sf-toolbar-block.sf-toolbar-status-yellow { + background-color: {{ colors.warning|raw }}; + color: #FFF; +} + +.sf-toolbar-block-request .sf-toolbar-status { + color: #FFF; + display: inline-block; + font-size: 14px; + height: 36px; + line-height: 36px; + padding: 0 10px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a { + text-decoration: none; +} +.sf-toolbar-block-request .sf-toolbar-info-piece a:hover { + text-decoration: underline; +} +.sf-toolbar-block-request .sf-toolbar-redirection-status { + font-weight: normal; + padding: 2px 4px; + line-height: 18px; +} +.sf-toolbar-block-request .sf-toolbar-info-piece span.sf-toolbar-redirection-method { + font-size: 12px; + height: 17px; + line-height: 17px; +} + +.sf-toolbar-status-green .sf-toolbar-label, +.sf-toolbar-status-yellow .sf-toolbar-label, +.sf-toolbar-status-red .sf-toolbar-label { + color: #FFF; +} +.sf-toolbar-status-green svg path, +.sf-toolbar-status-red svg path, +.sf-toolbar-status-yellow svg path { + fill: #FFF; +} +.sf-toolbar-block-config svg path { + fill: #FFF; +} + +.sf-toolbar-block .sf-toolbar-icon { + display: block; + height: 36px; + padding: 0 7px; +} +.sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; +} + +.sf-toolbar-block .sf-toolbar-icon img, +.sf-toolbar-block .sf-toolbar-icon svg { + border-width: 0; + position: relative; + top: 8px; +} + +.sf-toolbar-block .sf-toolbar-icon img + span, +.sf-toolbar-block .sf-toolbar-icon svg + span { + margin-left: 4px; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-value { + margin-left: 4px; +} + +.sf-toolbar-block:hover { + position: relative; +} +.sf-toolbar-block:hover .sf-toolbar-icon { + background-color: #444; + position: relative; + z-index: 10002; +} +.sf-toolbar-block:hover .sf-toolbar-info { + display: block; + padding: 10px; + max-width: 480px; + max-height: 480px; + word-wrap: break-word; + overflow: hidden; + overflow-y: auto; +} +.sf-toolbar-info-piece b.sf-toolbar-ajax-info { + color: #F5F5F5; +} +.sf-toolbar-ajax-requests { + table-layout: auto; + width: 100%; +} +.sf-toolbar-ajax-requests td { + background-color: #444; + border-bottom: 1px solid #777; + color: #F5F5F5; + font-size: 12px; + padding: 4px; +} +.sf-toolbar-ajax-requests tr:last-child td { + border-bottom: 0; +} +.sf-toolbar-ajax-requests th { + background-color: #222; + border-bottom: 0; + color: #AAA; + font-size: 11px; + padding: 4px; +} +.sf-ajax-request-url { + max-width: 250px; + line-height: 9px; + overflow: hidden; + text-overflow: ellipsis; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a { + text-decoration: none; +} +.sf-toolbar-ajax-requests .sf-ajax-request-url a:hover { + text-decoration: underline; +} +.sf-ajax-request-duration { + text-align: right; +} +.sf-ajax-request-loading { + -webkit-animation: sf-blink .5s ease-in-out infinite; + -o-animation: sf-blink .5s ease-in-out infinite; + -moz-animation: sf-blink .5s ease-in-out infinite; + animation: sf-blink .5s ease-in-out infinite; +} +@-webkit-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@-moz-keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} +@keyframes sf-blink { + 0% { background: #222; } + 50% { background: #444; } + 100% { background: #222; } +} + +.sf-toolbar-block-dump pre.sf-dump { + background-color: #222; + border-color: #777; + border-radius: 0; + margin: 6px 0 12px 0; +} +.sf-toolbar-block-dump pre.sf-dump:last-child { + margin-bottom: 0; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece { + display: block; +} +.sf-toolbar-block-dump .sf-toolbar-info-piece .sf-toolbar-file-line { + color: #AAA; + margin-left: 4px; +} +.sf-toolbar-block-dump .sf-toolbar-info img { + display: none; +} + +/* Override the setting when the toolbar is on the top */ +{% if position == 'top' %} + .sf-minitoolbar { + border-bottom-left-radius: 4px; + border-top-left-radius: 0; + bottom: auto; + right: 0; + top: 0; + } + + .sf-toolbarreset { + bottom: auto; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2); + top: 0; + } + + .sf-toolbar-block .sf-toolbar-info { + bottom: auto; + top: 36px; + } +{% endif %} + +{% if not floatable %} + .sf-toolbarreset { + position: static; + } +{% endif %} + +/* Responsive Design */ +.sf-toolbar-icon .sf-toolbar-label, +.sf-toolbar-icon .sf-toolbar-value { + display: none; +} +.sf-toolbar-block-config .sf-toolbar-icon .sf-toolbar-label { + display: inline-block; +} + +/* Legacy Design - these styles are maintained to make old panels look + a bit better on the new toolbar */ +.sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + color: #AAA; + font-size: 12px; +} +.sf-toolbar-status-green .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-yellow .sf-toolbar-info-piece-additional-detail, +.sf-toolbar-status-red .sf-toolbar-info-piece-additional-detail { + color: #FFF; +} + +@media (min-width: 768px) { + + .sf-toolbar-icon .sf-toolbar-label, + .sf-toolbar-icon .sf-toolbar-value { + display: inline; + } + + .sf-toolbar-block .sf-toolbar-icon img, + .sf-toolbar-block .sf-toolbar-icon svg { + top: 6px; + } + .sf-toolbar-block-time .sf-toolbar-icon svg, + .sf-toolbar-block-memory .sf-toolbar-icon svg { + display: none; + } + .sf-toolbar-block-time .sf-toolbar-icon svg + span, + .sf-toolbar-block-memory .sf-toolbar-icon svg + span { + margin-left: 0; + } + + .sf-toolbar-block .sf-toolbar-icon { + padding: 0 10px; + } + .sf-toolbar-block-time .sf-toolbar-icon { + padding-right: 5px; + } + .sf-toolbar-block-memory .sf-toolbar-icon { + padding-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon { + padding-left: 0; + padding-right: 0; + } + .sf-toolbar-block-request .sf-toolbar-label { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-status + svg { + margin-left: 5px; + } + .sf-toolbar-block-request .sf-toolbar-icon svg + .sf-toolbar-label { + margin-left: 0; + } + .sf-toolbar-block-request .sf-toolbar-label + .sf-toolbar-value { + margin-right: 10px; + } + + .sf-toolbar-block-request:hover .sf-toolbar-info { + max-width: none; + } + + .sf-toolbar-block .sf-toolbar-info-piece b { + font-size: 12px; + } + .sf-toolbar-block .sf-toolbar-info-piece span { + font-size: 13px; + } + + .sf-toolbar-block-right { + float: right; + margin-left: 0; + margin-right: 0; + } +} + +@media (min-width: 1024px) { + .sf-toolbar-block .sf-toolbar-info-piece-additional, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail { + display: inline-block; + } + + .sf-toolbar-block .sf-toolbar-info-piece-additional:empty, + .sf-toolbar-block .sf-toolbar-info-piece-additional-detail:empty { + display: none; + } +} +", "@WebProfiler/Profiler/toolbar.css.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.css.twig"); + } +} diff --git a/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php b/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php new file mode 100644 index 0000000000000000000000000000000000000000..b28dc79898345e999d8a0f5dfdb930de040374b7 --- /dev/null +++ b/var/cache/dev/twig/11/118ece9c8ceeac85f5e7588c1d6ccab384dd56252a83a75f1a45a5c9cbfc6bc7.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e->enter($__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/twig.svg")); + + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3->enter($__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/twig.svg")); + + // line 1 + echo " + + +"; + + $__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e->leave($__internal_1d44e45fae7763da056605f05ce8870ccc001fb421758e6f41900d049b19210e_prof); + + + $__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3->leave($__internal_16234f85d4bae529b5b9be5c2c0fcf55e15469315db87bacb61f5fabdc4830f3_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/twig.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/twig.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/twig.svg"); + } +} diff --git a/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php b/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php new file mode 100644 index 0000000000000000000000000000000000000000..bc34578b8ee9e95849447d383e0ff04b66dbcc47 --- /dev/null +++ b/var/cache/dev/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php @@ -0,0 +1,173 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'stylesheets' => array($this, 'block_stylesheets'), + 'body' => array($this, 'block_body'), + 'javascripts' => array($this, 'block_javascripts'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962->enter($__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115->enter($__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + // line 1 + echo " + + + + "; + // line 5 + $this->displayBlock('title', $context, $blocks); + echo " + "; + // line 6 + $this->displayBlock('stylesheets', $context, $blocks); + // line 7 + echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension')->getAssetUrl("favicon.ico"), "html", null, true); + echo "\" /> + + + "; + // line 10 + $this->displayBlock('body', $context, $blocks); + // line 11 + echo " "; + $this->displayBlock('javascripts', $context, $blocks); + // line 12 + echo " + +"; + + $__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962->leave($__internal_70a6723067dca0b95990a543041dac655bd42f41dff740bbebd2e95396e4c962_prof); + + + $__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115->leave($__internal_d2650f338e12e82d4b9045e2a1713afb9a74bc5e3f58d334773d2efc5d70d115_prof); + + } + + // line 5 + public function block_title($context, array $blocks = array()) + { + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340->enter($__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab->enter($__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + echo "Welcome!"; + + $__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab->leave($__internal_b0824ebefe15326f15ae2568dd4b87fde16d8b87bcef14241533029811febeab_prof); + + + $__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340->leave($__internal_6467fb75f4b71039fbc125560828272185b86b309814ee198ddc8c7ef86a6340_prof); + + } + + // line 6 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167->enter($__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908->enter($__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + + $__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908->leave($__internal_14da989b88b79b4d47862a4c78a21f0444ba88483d9c4ef8a1269719f9f72908_prof); + + + $__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167->leave($__internal_b3498b7b5d6f9c93cd42195bf97ed3878b60e740fa2557477eaed6ee15dc6167_prof); + + } + + // line 10 + public function block_body($context, array $blocks = array()) + { + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6->enter($__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6->enter($__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6->leave($__internal_cf7384128bdb079c9e9871180ea1c75bbb444a81385f6e456d01ed90625d74b6_prof); + + + $__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6->leave($__internal_48e6f2019c58a1eecdd1e662ecdfb90fb61ebad6c7c69d0ef6c916e70f48bcc6_prof); + + } + + // line 11 + public function block_javascripts($context, array $blocks = array()) + { + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed->enter($__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79->enter($__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + + $__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79->leave($__internal_e76efeda64fb421505b21154882f4737629407bd18342b6b7823ebf15e4b6c79_prof); + + + $__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed->leave($__internal_5d560cb488fe5cc5b6b9977fabd3d547d9a469eb514cc33624d020dafae79aed_prof); + + } + + public function getTemplateName() + { + return "base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 117 => 11, 100 => 10, 83 => 6, 65 => 5, 53 => 12, 50 => 11, 48 => 10, 41 => 7, 39 => 6, 35 => 5, 29 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + +", "base.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/base.html.twig"); + } +} diff --git a/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php b/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php new file mode 100644 index 0000000000000000000000000000000000000000..de5b6ecf3b506c58e36749adf1a8ab750ee66bd9 --- /dev/null +++ b/var/cache/dev/twig/20/20b96e949c8be5c335bb30c91afeb614df3f6329b6ec4f64ec01d9a470c26e88.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499->enter($__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/time.svg")); + + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950->enter($__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/time.svg")); + + // line 1 + echo " + + +"; + + $__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499->leave($__internal_a86caa567cc7232afc04abfcee01c56d9d25d0f31273ae82a0afd2dc475f2499_prof); + + + $__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950->leave($__internal_c9743492f2e8c80d8892c7d4f3fba70bda6a1b9b9274bcb922c5c2fb86f7d950_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/time.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/time.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/time.svg"); + } +} diff --git a/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php b/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php new file mode 100644 index 0000000000000000000000000000000000000000..839a99d2ec5a3363b00088b2845e627d9ddac4b3 --- /dev/null +++ b/var/cache/dev/twig/26/261743bc7cccd6a5503b3a9bd309404817157e76a380160acb92a167fefaedbc.php @@ -0,0 +1,386 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/twig.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5->enter($__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/twig.html.twig")); + + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863->enter($__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/twig.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5->leave($__internal_2750d64d4fd99d24d09eee2133cbcfb69902e06b9c12fd9a66c11741a7e5cbb5_prof); + + + $__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863->leave($__internal_16650cf3c4555f47863b57b60db6e482e6b80dc9d31596f2fc9e790df0d6a863_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19->enter($__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50->enter($__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + $context["time"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array())) ? (sprintf("%0.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()))) : ("n/a")); + // line 5 + echo " "; + ob_start(); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/twig.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); + echo " + ms + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 10 + echo " + "; + // line 11 + ob_start(); + // line 12 + echo "
+ Render Time + "; + // line 14 + echo twig_escape_filter($this->env, (isset($context["time"]) ? $context["time"] : $this->getContext($context, "time")), "html", null, true); + echo " ms +
+
+ Template Calls + "; + // line 18 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); + echo " +
+
+ Block Calls + "; + // line 22 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true); + echo " +
+
+ Macro Calls + "; + // line 26 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true); + echo " +
+ "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " +"; + + $__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50->leave($__internal_d0bb326d14c9a4097f2005d26933819a2a88bf5a2efbe8b562724eaa29d54b50_prof); + + + $__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19->leave($__internal_aa2f84a16797825df4123445f619d9dda1f58a3afe1082f4ca6eaecc8760ca19_prof); + + } + + // line 33 + public function block_menu($context, array $blocks = array()) + { + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024->enter($__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1->enter($__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 34 + echo " + "; + // line 35 + echo twig_include($this->env, $context, "@WebProfiler/Icon/twig.svg"); + echo " + Twig + +"; + + $__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1->leave($__internal_14b6e0298a04efc76be5612ba487784de03cb6334b541745ec6b372e62432fa1_prof); + + + $__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024->leave($__internal_4fa9bde66ca15156f635863b72d17de344a796922854880a38f2d756b6d2b024_prof); + + } + + // line 40 + public function block_panel($context, array $blocks = array()) + { + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451->enter($__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f->enter($__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 41 + echo " "; + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()) == 0)) { + // line 42 + echo "

Twig

+ +
+

No Twig templates were rendered for this request.

+
+ "; + } else { + // line 48 + echo "

Twig Metrics

+ +
+
+ "; + // line 52 + echo twig_escape_filter($this->env, sprintf("%0.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array())), "html", null, true); + echo " ms + Render time +
+ +
+ "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templatecount", array()), "html", null, true); + echo " + Template calls +
+ +
+ "; + // line 62 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "blockcount", array()), "html", null, true); + echo " + Block calls +
+ +
+ "; + // line 67 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "macrocount", array()), "html", null, true); + echo " + Macro calls +
+
+ +

+ Render time includes sub-requests rendering time (if any). +

+ +

Rendered Templates

+ + + + + + + + + + "; + // line 86 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "templates", array())); + foreach ($context['_seq'] as $context["template"] => $context["count"]) { + // line 87 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['template'], $context['count'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 92 + echo " +
Template NameRender Count
"; + // line 88 + echo twig_escape_filter($this->env, $context["template"], "html", null, true); + echo ""; + // line 89 + echo twig_escape_filter($this->env, $context["count"], "html", null, true); + echo "
+ +

Rendering Call Graph

+ +
+ "; + // line 98 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "htmlcallgraph", array()), "html", null, true); + echo " +
+ "; + } + + $__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f->leave($__internal_d723b07ac2b8660fad1f49419fdb6fab76eb52845ca697268c0a9e607276ec3f_prof); + + + $__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451->leave($__internal_d1ac7a6ec9d7c1b72ba4329d97db85eed3456961d368a574732579773ccee451_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/twig.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 245 => 98, 237 => 92, 228 => 89, 224 => 88, 221 => 87, 217 => 86, 195 => 67, 187 => 62, 179 => 57, 171 => 52, 165 => 48, 157 => 42, 154 => 41, 145 => 40, 131 => 35, 128 => 34, 119 => 33, 107 => 30, 104 => 29, 98 => 26, 91 => 22, 84 => 18, 77 => 14, 73 => 12, 71 => 11, 68 => 10, 62 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set time = collector.templatecount ? '%0.0f'|format(collector.time) : 'n/a' %} + {% set icon %} + {{ include('@WebProfiler/Icon/twig.svg') }} + {{ time }} + ms + {% endset %} + + {% set text %} +
+ Render Time + {{ time }} ms +
+
+ Template Calls + {{ collector.templatecount }} +
+
+ Block Calls + {{ collector.blockcount }} +
+
+ Macro Calls + {{ collector.macrocount }} +
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/twig.svg') }} + Twig + +{% endblock %} + +{% block panel %} + {% if collector.templatecount == 0 %} +

Twig

+ +
+

No Twig templates were rendered for this request.

+
+ {% else %} +

Twig Metrics

+ +
+
+ {{ '%0.0f'|format(collector.time) }} ms + Render time +
+ +
+ {{ collector.templatecount }} + Template calls +
+ +
+ {{ collector.blockcount }} + Block calls +
+ +
+ {{ collector.macrocount }} + Macro calls +
+
+ +

+ Render time includes sub-requests rendering time (if any). +

+ +

Rendered Templates

+ + + + + + + + + + {% for template, count in collector.templates %} + + + + + {% endfor %} + +
Template NameRender Count
{{ template }}{{ count }}
+ +

Rendering Call Graph

+ +
+ {{ collector.htmlcallgraph }} +
+ {% endif %} +{% endblock %} +", "@WebProfiler/Collector/twig.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/twig.html.twig"); + } +} diff --git a/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php b/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php new file mode 100644 index 0000000000000000000000000000000000000000..66065d2329c46c39f5aa9f6ba54afb1082386eee --- /dev/null +++ b/var/cache/dev/twig/29/29e23f896476eac2b7a73677886399221d2608b309f21d8097400f8b4468f671.php @@ -0,0 +1,847 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/logger.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7->enter($__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/logger.html.twig")); + + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839->enter($__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/logger.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7->leave($__internal_10e6fb25a83954873c772232dbb095385695b298af8c893e49d41458d3e952a7_prof); + + + $__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839->leave($__internal_2db64f73d84f554f2238dfbcf2144f09815f425f0db60fbc877dbe54c524b839_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c->enter($__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44->enter($__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) { + // line 7 + echo " "; + ob_start(); + // line 8 + echo " "; + $context["status_color"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("red") : ("yellow")); + // line 9 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/logger.svg"); + echo " + "; + // line 10 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())))), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 12 + echo " + "; + // line 13 + ob_start(); + // line 14 + echo "
+ Errors + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "counterrors", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "counterrors", array()), 0)) : (0)), "html", null, true); + echo " +
+ +
+ Warnings + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())) ? ("yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countwarnings", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countwarnings", array()), 0)) : (0)), "html", null, true); + echo " +
+ +
+ Deprecations + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) ? ("yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array()), 0)) : (0)), "html", null, true); + echo " +
+ "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " + "; + } + + $__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44->leave($__internal_e18942906b9a93b0999782e7200f569238b5cfc6717f6ee7f10f1cf35124be44_prof); + + + $__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c->leave($__internal_40db6602f2a2e1d90d9ee3e9578d59302087cb415720bb954499b4a878d60b6c_prof); + + } + + // line 34 + public function block_menu($context, array $blocks = array()) + { + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef->enter($__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f->enter($__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 35 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("error") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) ? ("warning") : ("")))); + echo " "; + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 36 + echo twig_include($this->env, $context, "@WebProfiler/Icon/logger.svg"); + echo " + Logs + "; + // line 38 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array()) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) || $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array()))) { + // line 39 + echo " + "; + // line 40 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array()) + $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())))), "html", null, true); + echo " + + "; + } + // line 43 + echo " +"; + + $__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f->leave($__internal_6964f91ff54db33cac610ba3d92731aefe184520958342b382610c21b497687f_prof); + + + $__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef->leave($__internal_b83d417dfab71ff305b315ce93b2f8ffec79249163a1b2d658861dc9487674ef_prof); + + } + + // line 46 + public function block_panel($context, array $blocks = array()) + { + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a->enter($__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702->enter($__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 47 + echo "

Log Messages

+ + "; + // line 49 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array()))) { + // line 50 + echo "
+

No log messages available.

+
+ "; + } else { + // line 54 + echo " "; + // line 55 + echo " "; + list($context["deprecation_logs"], $context["debug_logs"], $context["info_and_error_logs"], $context["silenced_logs"]) = array(array(), array(), array(), array()); + // line 56 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logs", array())); + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 57 + echo " "; + if (($this->getAttribute($context["log"], "scream", array(), "any", true, true) && !$this->getAttribute($context["log"], "scream", array()))) { + // line 58 + echo " "; + $context["deprecation_logs"] = twig_array_merge((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")), array(0 => $context["log"])); + // line 59 + echo " "; + } elseif (($this->getAttribute($context["log"], "scream", array(), "any", true, true) && $this->getAttribute($context["log"], "scream", array()))) { + // line 60 + echo " "; + $context["silenced_logs"] = twig_array_merge((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")), array(0 => $context["log"])); + // line 61 + echo " "; + } elseif (($this->getAttribute($context["log"], "priorityName", array()) == "DEBUG")) { + // line 62 + echo " "; + $context["debug_logs"] = twig_array_merge((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")), array(0 => $context["log"])); + // line 63 + echo " "; + } else { + // line 64 + echo " "; + $context["info_and_error_logs"] = twig_array_merge((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")), array(0 => $context["log"])); + // line 65 + echo " "; + } + // line 66 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 67 + echo " +
+
+

Info. & Errors getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ("error") : ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countwarnings", array())) ? ("warning") : ("")))); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "counterrors", array())) : (twig_length_filter($this->env, (isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs"))))), "html", null, true); + echo "

+ +
+ "; + // line 73 + if (twig_test_empty((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")))) { + // line 74 + echo "
+

There are no log messages of this level.

+
+ "; + } else { + // line 78 + echo " "; + echo $context["helper"]->getrender_table((isset($context["info_and_error_logs"]) ? $context["info_and_error_logs"] : $this->getContext($context, "info_and_error_logs")), "info", true); + echo " + "; + } + // line 80 + echo "
+
+ +
+ "; + // line 86 + echo "

Deprecations getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "countdeprecations", array())) ? ("warning") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countdeprecations", array()), 0)) : (0)), "html", null, true); + echo "

+ +
+ "; + // line 89 + if (twig_test_empty((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")))) { + // line 90 + echo "
+

There are no log messages about deprecated features.

+
+ "; + } else { + // line 94 + echo " "; + echo $context["helper"]->getrender_table((isset($context["deprecation_logs"]) ? $context["deprecation_logs"] : $this->getContext($context, "deprecation_logs")), "deprecation", false, true); + echo " + "; + } + // line 96 + echo "
+
+ +
+

Debug "; + // line 100 + echo twig_escape_filter($this->env, twig_length_filter($this->env, (isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs"))), "html", null, true); + echo "

+ +
+ "; + // line 103 + if (twig_test_empty((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")))) { + // line 104 + echo "
+

There are no log messages of this level.

+
+ "; + } else { + // line 108 + echo " "; + echo $context["helper"]->getrender_table((isset($context["debug_logs"]) ? $context["debug_logs"] : $this->getContext($context, "debug_logs")), "debug"); + echo " + "; + } + // line 110 + echo "
+
+ +
+

Silenced PHP Notices"; + // line 114 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countscreams", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "countscreams", array()), 0)) : (0)), "html", null, true); + echo "

+ +
+ "; + // line 117 + if (twig_test_empty((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")))) { + // line 118 + echo "
+

There are no log messages of this level.

+
+ "; + } else { + // line 122 + echo " "; + echo $context["helper"]->getrender_table((isset($context["silenced_logs"]) ? $context["silenced_logs"] : $this->getContext($context, "silenced_logs")), "silenced"); + echo " + "; + } + // line 124 + echo "
+
+ +
+ "; + } + + $__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702->leave($__internal_ff11fea51575504679f5398a9e47ba5e05e33d60d6569223d4bc02ca65e88702_prof); + + + $__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a->leave($__internal_6a41422767719a23020f94d79ee94f2bdc3c293baa03e079d3498fa6fadd059a_prof); + + } + + // line 131 + public function getrender_table($__logs__ = null, $__category__ = "", $__show_level__ = false, $__is_deprecation__ = false, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "logs" => $__logs__, + "category" => $__category__, + "show_level" => $__show_level__, + "is_deprecation" => $__is_deprecation__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff->enter($__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f->enter($__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + // line 132 + echo " "; + $context["helper"] = $this; + // line 133 + echo " "; + $context["channel_is_defined"] = $this->getAttribute(twig_first($this->env, (isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))), "channel", array(), "any", true, true); + // line 134 + echo " + + + + + "; + // line 139 + if ((isset($context["channel_is_defined"]) ? $context["channel_is_defined"] : $this->getContext($context, "channel_is_defined"))) { + echo ""; + } + // line 140 + echo " + + + + + "; + // line 145 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 146 + echo " "; + $context["css_class"] = (((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) ? ("") : (((twig_in_filter($this->getAttribute( // line 147 +$context["log"], "priorityName", array()), array(0 => "CRITICAL", 1 => "ERROR", 2 => "ALERT", 3 => "EMERGENCY"))) ? ("status-error") : (((($this->getAttribute( // line 148 +$context["log"], "priorityName", array()) == "WARNING")) ? ("status-warning") : ("")))))); + // line 150 + echo " env, (isset($context["css_class"]) ? $context["css_class"] : $this->getContext($context, "css_class")), "html", null, true); + echo "\"> + + + "; + // line 158 + if ((isset($context["channel_is_defined"]) ? $context["channel_is_defined"] : $this->getContext($context, "channel_is_defined"))) { + // line 159 + echo " + + "; + } + // line 167 + echo " + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 171 + echo " +
"; + // line 138 + echo (((isset($context["show_level"]) ? $context["show_level"] : $this->getContext($context, "show_level"))) ? ("Level") : ("Time")); + echo "ChannelMessage
+ "; + // line 152 + if ((isset($context["show_level"]) ? $context["show_level"] : $this->getContext($context, "show_level"))) { + // line 153 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "priorityName", array()), "html", null, true); + echo " + "; + } + // line 155 + echo " "; + echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute($context["log"], "timestamp", array()), "H:i:s"), "html", null, true); + echo " + + "; + // line 160 + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "channel", array()), "html", null, true); + echo " + "; + // line 161 + if (($this->getAttribute($context["log"], "errorCount", array(), "any", true, true) && ($this->getAttribute($context["log"], "errorCount", array()) > 1))) { + // line 162 + echo " ("; + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "errorCount", array()), "html", null, true); + echo " times) + "; + } + // line 164 + echo " "; + // line 168 + echo $context["helper"]->getrender_log_message((isset($context["category"]) ? $context["category"] : $this->getContext($context, "category")), $this->getAttribute($context["loop"], "index", array()), $context["log"], (isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))); + echo "
+"; + + $__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f->leave($__internal_03cad0e3e44c1c7b6691cefec13ff78d154b93719f922708243df59e092f802f_prof); + + + $__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff->leave($__internal_3efccf577389c606f9be27410153fb6ca54ac1af9aa8dc57b9ece82e3ef094ff_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 175 + public function getrender_log_message($__category__ = null, $__log_index__ = null, $__log__ = null, $__is_deprecation__ = false, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "category" => $__category__, + "log_index" => $__log_index__, + "log" => $__log__, + "is_deprecation" => $__is_deprecation__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4->enter($__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_log_message")); + + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e->enter($__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_log_message")); + + // line 176 + echo " "; + if ((isset($context["is_deprecation"]) ? $context["is_deprecation"] : $this->getContext($context, "is_deprecation"))) { + // line 177 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), "html", null, true); + echo " + + "; + // line 179 + $context["context_id"] = ((("context-" . (isset($context["category"]) ? $context["category"] : $this->getContext($context, "category"))) . "-") . (isset($context["log_index"]) ? $context["log_index"] : $this->getContext($context, "log_index"))); + // line 180 + echo " + + env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide trace\">Show trace + +
env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" class=\"context sf-toggle-content sf-toggle-hidden\"> + "; + // line 185 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), "seek", array(0 => "exception"), "method"), "seek", array(0 => "\000Exception\000trace"), "method"), 2)); + echo " +
+
+ "; + } elseif (($this->getAttribute( // line 188 +(isset($context["log"]) ? $context["log"] : null), "context", array(), "any", true, true) && !twig_test_empty($this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array())))) { + // line 189 + echo " "; + echo $this->env->getExtension('Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension')->dumpLog($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array())); + echo " + + "; + // line 191 + $context["context_id"] = ((("context-" . (isset($context["category"]) ? $context["category"] : $this->getContext($context, "category"))) . "-") . (isset($context["log_index"]) ? $context["log_index"] : $this->getContext($context, "log_index"))); + // line 192 + echo " + + env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide context\">Show context + +
env, (isset($context["context_id"]) ? $context["context_id"] : $this->getContext($context, "context_id")), "html", null, true); + echo "\" class=\"context sf-toggle-content sf-toggle-hidden\"> + "; + // line 197 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "context", array()), 1)); + echo " +
+
+ "; + } else { + // line 201 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["log"]) ? $context["log"] : $this->getContext($context, "log")), "message", array()), "html", null, true); + echo " + "; + } + + $__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e->leave($__internal_d79d3dccc16f5f550fd30b24aec2091b2feb9a6221197bf760997b03afab1c2e_prof); + + + $__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4->leave($__internal_9b71387d37cfe80b6ddcc703e785a3c745b1fd6f2659ee0cc3165416e019a9a4_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/logger.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 593 => 201, 586 => 197, 582 => 196, 577 => 194, 573 => 192, 571 => 191, 565 => 189, 563 => 188, 557 => 185, 553 => 184, 548 => 182, 544 => 180, 542 => 179, 536 => 177, 533 => 176, 512 => 175, 489 => 171, 472 => 168, 469 => 167, 464 => 164, 458 => 162, 456 => 161, 452 => 160, 449 => 159, 447 => 158, 440 => 155, 434 => 153, 432 => 152, 426 => 150, 424 => 148, 423 => 147, 421 => 146, 404 => 145, 397 => 140, 393 => 139, 389 => 138, 383 => 134, 380 => 133, 377 => 132, 356 => 131, 341 => 124, 335 => 122, 329 => 118, 327 => 117, 321 => 114, 315 => 110, 309 => 108, 303 => 104, 301 => 103, 295 => 100, 289 => 96, 283 => 94, 277 => 90, 275 => 89, 266 => 86, 260 => 80, 254 => 78, 248 => 74, 246 => 73, 238 => 70, 233 => 67, 227 => 66, 224 => 65, 221 => 64, 218 => 63, 215 => 62, 212 => 61, 209 => 60, 206 => 59, 203 => 58, 200 => 57, 195 => 56, 192 => 55, 190 => 54, 184 => 50, 182 => 49, 178 => 47, 169 => 46, 158 => 43, 152 => 40, 149 => 39, 147 => 38, 142 => 36, 135 => 35, 126 => 34, 113 => 30, 110 => 29, 102 => 26, 92 => 21, 82 => 16, 78 => 14, 76 => 13, 73 => 12, 68 => 10, 63 => 9, 60 => 8, 57 => 7, 54 => 6, 45 => 5, 35 => 1, 33 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% block toolbar %} + {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %} + {% set icon %} + {% set status_color = collector.counterrors ? 'red' : 'yellow' %} + {{ include('@WebProfiler/Icon/logger.svg') }} + {{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }} + {% endset %} + + {% set text %} +
+ Errors + {{ collector.counterrors|default(0) }} +
+ +
+ Warnings + {{ collector.countwarnings|default(0) }} +
+ +
+ Deprecations + {{ collector.countdeprecations|default(0) }} +
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/logger.svg') }} + Logs + {% if collector.counterrors or collector.countdeprecations or collector.countwarnings %} + + {{ collector.counterrors ?: (collector.countdeprecations + collector.countwarnings) }} + + {% endif %} + +{% endblock %} + +{% block panel %} +

Log Messages

+ + {% if collector.logs is empty %} +
+

No log messages available.

+
+ {% else %} + {# sort collected logs in groups #} + {% set deprecation_logs, debug_logs, info_and_error_logs, silenced_logs = [], [], [], [] %} + {% for log in collector.logs %} + {% if log.scream is defined and not log.scream %} + {% set deprecation_logs = deprecation_logs|merge([log]) %} + {% elseif log.scream is defined and log.scream %} + {% set silenced_logs = silenced_logs|merge([log]) %} + {% elseif log.priorityName == 'DEBUG' %} + {% set debug_logs = debug_logs|merge([log]) %} + {% else %} + {% set info_and_error_logs = info_and_error_logs|merge([log]) %} + {% endif %} + {% endfor %} + +
+
+

Info. & Errors {{ collector.counterrors ?: info_and_error_logs|length }}

+ +
+ {% if info_and_error_logs is empty %} +
+

There are no log messages of this level.

+
+ {% else %} + {{ helper.render_table(info_and_error_logs, 'info', true) }} + {% endif %} +
+
+ +
+ {# 'deprecation_logs|length' is not used because deprecations are + now grouped and the group count doesn't match the message count #} +

Deprecations {{ collector.countdeprecations|default(0) }}

+ +
+ {% if deprecation_logs is empty %} +
+

There are no log messages about deprecated features.

+
+ {% else %} + {{ helper.render_table(deprecation_logs, 'deprecation', false, true) }} + {% endif %} +
+
+ +
+

Debug {{ debug_logs|length }}

+ +
+ {% if debug_logs is empty %} +
+

There are no log messages of this level.

+
+ {% else %} + {{ helper.render_table(debug_logs, 'debug') }} + {% endif %} +
+
+ +
+

Silenced PHP Notices{{ collector.countscreams|default(0) }}

+ +
+ {% if silenced_logs is empty %} +
+

There are no log messages of this level.

+
+ {% else %} + {{ helper.render_table(silenced_logs, 'silenced') }} + {% endif %} +
+
+ +
+ {% endif %} +{% endblock %} + +{% macro render_table(logs, category = '', show_level = false, is_deprecation = false) %} + {% import _self as helper %} + {% set channel_is_defined = (logs|first).channel is defined %} + + + + + + {% if channel_is_defined %}{% endif %} + + + + + + {% for log in logs %} + {% set css_class = is_deprecation ? '' + : log.priorityName in ['CRITICAL', 'ERROR', 'ALERT', 'EMERGENCY'] ? 'status-error' + : log.priorityName == 'WARNING' ? 'status-warning' + %} + + + + {% if channel_is_defined %} + + + {% endif %} + + + + {% endfor %} + +
{{ show_level ? 'Level' : 'Time' }}ChannelMessage
+ {% if show_level %} + {{ log.priorityName }} + {% endif %} + {{ log.timestamp|date('H:i:s') }} + + {{ log.channel }} + {% if log.errorCount is defined and log.errorCount > 1 %} + ({{ log.errorCount }} times) + {% endif %} + {{ helper.render_log_message(category, loop.index, log, is_deprecation) }}
+{% endmacro %} + +{% macro render_log_message(category, log_index, log, is_deprecation = false) %} + {% if is_deprecation %} + {{ log.message }} + + {% set context_id = 'context-' ~ category ~ '-' ~ log_index %} + + + Show trace + +
+ {{ profiler_dump(log.context.seek('exception').seek('\\0Exception\\0trace'), maxDepth=2) }} +
+
+ {% elseif log.context is defined and log.context is not empty %} + {{ profiler_dump_log(log.message, log.context) }} + + {% set context_id = 'context-' ~ category ~ '-' ~ log_index %} + + + Show context + +
+ {{ profiler_dump(log.context, maxDepth=1) }} +
+
+ {% else %} + {{ log.message }} + {% endif %} +{% endmacro %} +", "@WebProfiler/Collector/logger.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/logger.html.twig"); + } +} diff --git a/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php b/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php new file mode 100644 index 0000000000000000000000000000000000000000..c09d085379926aafce8b0d6eae765dc0fcb4387d --- /dev/null +++ b/var/cache/dev/twig/2b/2b31f495638be5b85d5bd6b99cad7a69e7859952d590d26fa09b0dbaa98aef15.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0->enter($__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/close.svg")); + + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055->enter($__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/close.svg")); + + // line 1 + echo " + + +"; + + $__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0->leave($__internal_9f92e3040ae2978920a177494e548d0b23cfa6c2177b33578537d10fae523db0_prof); + + + $__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055->leave($__internal_801a21902afa403b2c07ed98f3102357c1d049933189286bd590ccfc32002055_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/close.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/close.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/close.svg"); + } +} diff --git a/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php b/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php new file mode 100644 index 0000000000000000000000000000000000000000..0dd6b99049e44feddce89adeab4b4bbf92a77c7e --- /dev/null +++ b/var/cache/dev/twig/34/34d83023563696fd75329143a84a7b7b5bc10ef92ef04b94e1297ad823f70caa.php @@ -0,0 +1,154 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/memory.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615->enter($__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/memory.html.twig")); + + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515->enter($__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/memory.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615->leave($__internal_e50d96896edaf28c94e8ccaad2f55d781a429d071bd31b08e329306d2b457615_prof); + + + $__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515->leave($__internal_819611bd73328462968a099b742b3daa0694bb77939ceef984ec3721c9aa5515_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b->enter($__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0->enter($__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + $context["status_color"] = ((((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024) > 50)) ? ("yellow") : ("")); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/memory.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " + MB + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 10 + echo " + "; + // line 11 + ob_start(); + // line 12 + echo "
+ Peak memory usage + "; + // line 14 + echo twig_escape_filter($this->env, sprintf("%.1f", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " MB +
+ +
+ PHP memory limit + "; + // line 19 + echo twig_escape_filter($this->env, ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) == -1)) ? ("Unlimited") : (sprintf("%.0f MB", (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "memoryLimit", array()) / 1024) / 1024)))), "html", null, true); + echo " +
+ "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 22 + echo " + "; + // line 23 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "name" => "time", "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " +"; + + $__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0->leave($__internal_5741c835c39a0c37c75e2aaaa36af6617ac09ba6993bcef97569885a47efe1d0_prof); + + + $__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b->leave($__internal_6cf1f5dfcbb21895481aafe8ff0e41b227e2bbc77b3a66d468b969fb8528854b_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/memory.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 92 => 23, 89 => 22, 83 => 19, 75 => 14, 71 => 12, 69 => 11, 66 => 10, 60 => 7, 55 => 6, 52 => 5, 49 => 4, 40 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + {% set status_color = (collector.memory / 1024 / 1024) > 50 ? 'yellow' : '' %} + {{ include('@WebProfiler/Icon/memory.svg') }} + {{ '%.1f'|format(collector.memory / 1024 / 1024) }} + MB + {% endset %} + + {% set text %} +
+ Peak memory usage + {{ '%.1f'|format(collector.memory / 1024 / 1024) }} MB +
+ +
+ PHP memory limit + {{ collector.memoryLimit == -1 ? 'Unlimited' : '%.0f MB'|format(collector.memoryLimit / 1024 / 1024) }} +
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, name: 'time', status: status_color }) }} +{% endblock %} +", "@WebProfiler/Collector/memory.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/memory.html.twig"); + } +} diff --git a/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php b/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php new file mode 100644 index 0000000000000000000000000000000000000000..e68665e50ac3550f3069963527db5d6ab190258e --- /dev/null +++ b/var/cache/dev/twig/3d/3d155138d0140166289d6e14c31b80442f39980bfa5b58d0160b5ddc4681abfd.php @@ -0,0 +1,219 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f->enter($__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.html.twig")); + + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2->enter($__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar.html.twig")); + + // line 1 + echo " +"; + // line 2 + if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { + // line 3 + echo "
env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-minitoolbar\" data-no-turbolink> + env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" accesskey=\"D\"> + "; + // line 5 + echo twig_include($this->env, $context, "@WebProfiler/Icon/symfony.svg"); + echo " + +
+ getContext($context, "csp_style_nonce"))) { + echo " nonce=\""; + echo twig_escape_filter($this->env, (isset($context["csp_style_nonce"]) ? $context["csp_style_nonce"] : $this->getContext($context, "csp_style_nonce")), "html", null, true); + echo "\""; + } + echo "> + "; + // line 9 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar.css.twig", array("position" => (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "floatable" => true)); + echo " + +
env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbar-clearer\">
+"; + } + // line 13 + echo " +
env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbarreset clear-fix\" data-no-turbolink> + "; + // line 15 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["templates"]) ? $context["templates"] : $this->getContext($context, "templates"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["template"]) { + // line 16 + echo " "; + if ( $this->loadTemplate($context["template"], "@WebProfiler/Profiler/toolbar.html.twig", 16)->hasBlock("toolbar", $context)) { + // line 17 + echo " "; + $__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e = array("collector" => $this->getAttribute( // line 18 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => $context["name"]), "method"), "profiler_url" => // line 19 +(isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "token" => $this->getAttribute( // line 20 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "token", array()), "name" => // line 21 +$context["name"], "profiler_markup_version" => // line 22 +(isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), "csp_script_nonce" => // line 23 +(isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "csp_style_nonce" => // line 24 +(isset($context["csp_style_nonce"]) ? $context["csp_style_nonce"] : $this->getContext($context, "csp_style_nonce"))); + if (!is_array($__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e)) { + throw new Twig_Error_Runtime('Variables passed to the "with" tag must be a hash.'); + } + $context['_parent'] = $context; + $context = array_merge($context, $__internal_5b604d56220bc0d6353c1b14327d35bc9fd3ab85a1db1b55d7f76e5d62ad7a3e); + // line 26 + echo " "; + $this->loadTemplate($context["template"], "@WebProfiler/Profiler/toolbar.html.twig", 26)->displayBlock("toolbar", $context); + echo " + "; + $context = $context['_parent']; + // line 28 + echo " "; + } + // line 29 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['template'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 30 + echo " + "; + // line 31 + if (("normal" != (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")))) { + // line 32 + echo " env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" title=\"Close Toolbar\" tabindex=\"-1\" accesskey=\"D\"> + "; + // line 33 + echo twig_include($this->env, $context, "@WebProfiler/Icon/close.svg"); + echo " + + "; + } + // line 36 + echo "
+ +"; + + $__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f->leave($__internal_1df107d02934decbd50b9e65cd678206be422cc619f15a56f5ab19746f0d0c9f_prof); + + + $__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2->leave($__internal_72b7ff42165d4e94d7840a8dd3177664c621a7a71c19bad88e042d58383b88b2_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 144 => 36, 138 => 33, 133 => 32, 131 => 31, 128 => 30, 114 => 29, 111 => 28, 105 => 26, 98 => 24, 97 => 23, 96 => 22, 95 => 21, 94 => 20, 93 => 19, 92 => 18, 90 => 17, 87 => 16, 70 => 15, 66 => 14, 63 => 13, 58 => 11, 53 => 9, 45 => 8, 39 => 5, 35 => 4, 30 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" +{% if 'normal' != position %} + + + {{ include('@WebProfiler/Profiler/toolbar.css.twig', { 'position': position, 'floatable': true }) }} + +
+{% endif %} + +
+ {% for name, template in templates %} + {% if block('toolbar', template) is defined %} + {% with { + collector: profile.getcollector(name), + profiler_url: profiler_url, + token: profile.token, + name: name, + profiler_markup_version: profiler_markup_version, + csp_script_nonce: csp_script_nonce, + csp_style_nonce: csp_style_nonce + } %} + {{ block('toolbar', template) }} + {% endwith %} + {% endif %} + {% endfor %} + + {% if 'normal' != position %} + + {{ include('@WebProfiler/Icon/close.svg') }} + + {% endif %} +
+ +", "@WebProfiler/Profiler/toolbar.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.html.twig"); + } +} diff --git a/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php b/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php new file mode 100644 index 0000000000000000000000000000000000000000..8058317db20b2d4a4b77ecac22b60d73a9a12a69 --- /dev/null +++ b/var/cache/dev/twig/3f/3f8fb4614a37777a4bd64443bb7f605b8becc3ea53d5c619102340a8ab549a0f.php @@ -0,0 +1,1019 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/request.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c->enter($__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/request.html.twig")); + + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2->enter($__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/request.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c->leave($__internal_ffbe9a52a7ab6a9cb09a2a7f994b693e6053c9044bc620838155e38367881e1c_prof); + + + $__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2->leave($__internal_83193accacc444b34e8cc84b58d56e4c213ac661701848cb231cbf06423784b2_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c->enter($__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5->enter($__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + $context["helper"] = $this; + // line 6 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array())); + echo " + "; + $context["request_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 8 + echo " + "; + // line 9 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array())) { + // line 10 + echo " "; + ob_start(); + // line 11 + echo " "; + $context["helper"] = $this; + // line 12 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "controller", array()), $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "route", array()), ((("GET" != $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "method", array()))) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "method", array())) : (""))); + echo " + "; + $context["redirect_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 14 + echo " "; + } + // line 15 + echo " + "; + // line 16 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array()), false)) : (false))) { + // line 17 + echo " "; + ob_start(); + // line 18 + echo " "; + $context["helper"] = $this; + // line 19 + echo " "; + echo $context["helper"]->getset_handler($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "forward", array()), "controller", array())); + echo " + "; + $context["forward_handler"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 21 + echo " "; + } + // line 22 + echo " + "; + // line 23 + $context["request_status_code_color"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()) >= 400)) ? ("red") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()) >= 300)) ? ("yellow") : ("green")))); + // line 24 + echo " + "; + // line 25 + ob_start(); + // line 26 + echo " env, (isset($context["request_status_code_color"]) ? $context["request_status_code_color"] : $this->getContext($context, "request_status_code_color")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); + echo " + "; + // line 27 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array())) { + // line 28 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array())) { + echo twig_include($this->env, $context, "@WebProfiler/Icon/redirect.svg"); + } + // line 29 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "forward", array()), false)) : (false))) { + echo twig_include($this->env, $context, "@WebProfiler/Icon/forward.svg"); + } + // line 30 + echo " "; + echo twig_escape_filter($this->env, ((("GET" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()))) ? ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array())) : ("")), "html", null, true); + echo " @ + "; + // line 31 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "route", array()), "html", null, true); + echo " + "; + } + // line 33 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 34 + echo " + "; + // line 35 + ob_start(); + // line 36 + echo "
+
+ HTTP status + "; + // line 39 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statuscode", array()), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "statustext", array()), "html", null, true); + echo " +
+ + "; + // line 42 + if (("GET" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()))) { + // line 43 + echo "
+ Method + "; + // line 45 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "method", array()), "html", null, true); + echo " +
"; + } + // line 48 + echo " +
+ Controller + "; + // line 51 + echo twig_escape_filter($this->env, (isset($context["request_handler"]) ? $context["request_handler"] : $this->getContext($context, "request_handler")), "html", null, true); + echo " +
+ + "; + // line 54 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "controller", array(), "any", false, true), "class", array(), "any", true, true)) { + // line 55 + echo "
+ Controller class + "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "controller", array()), "class", array()), "html", null, true); + echo " +
"; + } + // line 60 + echo " +
+ Route name + "; + // line 63 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "route", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "route", array()), "NONE")) : ("NONE")), "html", null, true); + echo " +
+ +
+ Has session + "; + // line 68 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { + echo "yes"; + } else { + echo "no"; + } + echo " +
+
+ + "; + // line 72 + if (array_key_exists("redirect_handler", $context)) { + // line 73 + echo "
+
+ + "; + // line 76 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "status_code", array()), "html", null, true); + echo " + Redirect from + + + "; + // line 80 + echo twig_escape_filter($this->env, (isset($context["redirect_handler"]) ? $context["redirect_handler"] : $this->getContext($context, "redirect_handler")), "html", null, true); + echo " + (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "token", array()))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "redirect", array()), "token", array()), "html", null, true); + echo ") + +
+
+ "; + } + // line 86 + echo " + "; + // line 87 + if (array_key_exists("forward_handler", $context)) { + // line 88 + echo " + "; + } + // line 98 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 99 + echo " + "; + // line 100 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " +"; + + $__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5->leave($__internal_abb7910e386f64de2bc68fe5143a21b5be65a63e1f02a62543dfaad948262be5_prof); + + + $__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c->leave($__internal_f27ad0f7b9e2b2b99a6bf79fc55df34530a070e524ddd4e31c1482a65ca37a6c_prof); + + } + + // line 103 + public function block_menu($context, array $blocks = array()) + { + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2->enter($__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc->enter($__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 104 + echo " + "; + // line 105 + echo twig_include($this->env, $context, "@WebProfiler/Icon/request.svg"); + echo " + Request / Response + +"; + + $__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc->leave($__internal_ca304fdc4631c870002fba71066fd0268c0c60c6be5c8e07c4880bcf5d51f8cc_prof); + + + $__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2->leave($__internal_26a9e39ba1cdfe5f87c5392891fc627bb800398515b961e8bb180681706413a2_prof); + + } + + // line 110 + public function block_panel($context, array $blocks = array()) + { + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905->enter($__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6->enter($__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 111 + echo "
+
+

Request

+ +
+

GET Parameters

+ + "; + // line 118 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()), "all", array()))) { + // line 119 + echo "
+

No GET parameters

+
+ "; + } else { + // line 123 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestquery", array()), "maxDepth" => 1), false); + echo " + "; + } + // line 125 + echo " +

POST Parameters

+ + "; + // line 128 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()), "all", array()))) { + // line 129 + echo "
+

No POST parameters

+
+ "; + } else { + // line 133 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestrequest", array()), "maxDepth" => 1), false); + echo " + "; + } + // line 135 + echo " +

Request Attributes

+ + "; + // line 138 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array()), "all", array()))) { + // line 139 + echo "
+

No attributes

+
+ "; + } else { + // line 143 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestattributes", array())), false); + echo " + "; + } + // line 145 + echo " +

Cookies

+ + "; + // line 148 + if (twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array()), "all", array()))) { + // line 149 + echo "
+

No cookies

+
+ "; + } else { + // line 153 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestcookies", array())), false); + echo " + "; + } + // line 155 + echo " +

Request Headers

+ "; + // line 157 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestheaders", array()), "labels" => array(0 => "Header", 1 => "Value"), "maxDepth" => 1), false); + echo " + +

Request Content

+ + "; + // line 161 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()) == false)) { + // line 162 + echo "
+

Request content not available (it was retrieved as a resource).

+
+ "; + } elseif ($this->getAttribute( // line 165 +(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array())) { + // line 166 + echo "
+
";
+            // line 167
+            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "content", array()), "html", null, true);
+            echo "
+
+ "; + } else { + // line 170 + echo "
+

No content

+
+ "; + } + // line 174 + echo " +

Server Parameters

+ "; + // line 176 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "requestserver", array())), false); + echo " +
+
+ +
+

Response

+ +
+

Response Headers

+ + "; + // line 186 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "responseheaders", array()), "labels" => array(0 => "Header", 1 => "Value"), "maxDepth" => 1), false); + echo " +
+
+ +
getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) ? ("disabled") : ("")); + echo "\"> +

Session

+ +
+

Session Metadata

+ + "; + // line 196 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array()))) { + // line 197 + echo "
+

No session metadata

+
+ "; + } else { + // line 201 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionmetadata", array())), false); + echo " + "; + } + // line 203 + echo " +

Session Attributes

+ + "; + // line 206 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()))) { + // line 207 + echo "
+

No session attributes

+
+ "; + } else { + // line 211 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sessionattributes", array()), "labels" => array(0 => "Attribute", 1 => "Value")), false); + echo " + "; + } + // line 213 + echo "
+
+ +
getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))) ? ("disabled") : ("")); + echo "\"> +

Flashes

+ +
+

Flashes

+ + "; + // line 222 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array()))) { + // line 223 + echo "
+

No flash messages were created.

+
+ "; + } else { + // line 227 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "flashes", array())), false); + echo " + "; + } + // line 229 + echo "
+
+ + "; + // line 232 + if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { + // line 233 + echo "
+

Parent Request

+ +
+

+ env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()))), "html", null, true); + echo "\">Return to parent request + (token = "; + // line 239 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "html", null, true); + echo ") +

+ + "; + // line 242 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "getcollector", array(0 => "request"), "method"), "requestattributes", array())), false); + echo " +
+
+ "; + } + // line 246 + echo " + "; + // line 247 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { + // line 248 + echo "
+

Sub Requests "; + // line 249 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo "

+ +
+ "; + // line 252 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 253 + echo "

+ env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()))), "html", null, true); + echo "\">"; + // line 255 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "identifier", array()), "html", null, true); + // line 256 + echo " + (token = "; + // line 257 + echo twig_escape_filter($this->env, $this->getAttribute($context["child"], "token", array()), "html", null, true); + echo ") +

+ + "; + // line 260 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/bag.html.twig", array("bag" => $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "requestattributes", array())), false); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 262 + echo "
+
+ "; + } + // line 265 + echo "
+"; + + $__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6->leave($__internal_468e4ae346256aaf1c9b77157eb93d2628cd86d0a56338ef0ead5bbdf90908c6_prof); + + + $__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905->leave($__internal_85b7b3cab9e2aafba799ee9e5799fa8bfcb25f35bff0b842ec350b4c424ee905_prof); + + } + + // line 268 + public function getset_handler($__controller__ = null, $__route__ = null, $__method__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "controller" => $__controller__, + "route" => $__route__, + "method" => $__method__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916->enter($__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "set_handler")); + + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d->enter($__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "set_handler")); + + // line 269 + echo " "; + if ($this->getAttribute((isset($context["controller"]) ? $context["controller"] : null), "class", array(), "any", true, true)) { + // line 270 + if (((array_key_exists("method", $context)) ? (_twig_default_filter((isset($context["method"]) ? $context["method"] : $this->getContext($context, "method")), false)) : (false))) { + echo ""; + echo twig_escape_filter($this->env, (isset($context["method"]) ? $context["method"] : $this->getContext($context, "method")), "html", null, true); + echo ""; + } + // line 271 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 272 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } else { + echo ""; + } + // line 274 + if (((array_key_exists("route", $context)) ? (_twig_default_filter((isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), false)) : (false))) { + // line 275 + echo "@"; + echo twig_escape_filter($this->env, (isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), "html", null, true); + } else { + // line 277 + echo twig_escape_filter($this->env, strip_tags($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "class", array()))), "html", null, true); + // line 278 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array())) ? ((" :: " . $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array()))) : ("")), "html", null, true); + } + // line 281 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } else { + echo ""; + } + } else { + // line 283 + echo ""; + echo twig_escape_filter($this->env, ((array_key_exists("route", $context)) ? (_twig_default_filter((isset($context["route"]) ? $context["route"] : $this->getContext($context, "route")), (isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")))) : ((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")))), "html", null, true); + echo ""; + } + + $__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d->leave($__internal_d7549f9f893be81f6a51133a6e9df6c2e4bbe8fd853303d142ee0920dd939e9d_prof); + + + $__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916->leave($__internal_0b0c38180688400c9e1e4dce8369a7c995d65fdf932b9d89051007e42e20b916_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/request.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 684 => 283, 677 => 281, 674 => 278, 672 => 277, 668 => 275, 666 => 274, 656 => 272, 654 => 271, 648 => 270, 645 => 269, 625 => 268, 614 => 265, 609 => 262, 601 => 260, 595 => 257, 592 => 256, 590 => 255, 587 => 254, 584 => 253, 580 => 252, 574 => 249, 571 => 248, 569 => 247, 566 => 246, 559 => 242, 553 => 239, 549 => 238, 542 => 233, 540 => 232, 535 => 229, 529 => 227, 523 => 223, 521 => 222, 512 => 216, 507 => 213, 501 => 211, 495 => 207, 493 => 206, 488 => 203, 482 => 201, 476 => 197, 474 => 196, 465 => 190, 458 => 186, 445 => 176, 441 => 174, 435 => 170, 429 => 167, 426 => 166, 424 => 165, 419 => 162, 417 => 161, 410 => 157, 406 => 155, 400 => 153, 394 => 149, 392 => 148, 387 => 145, 381 => 143, 375 => 139, 373 => 138, 368 => 135, 362 => 133, 356 => 129, 354 => 128, 349 => 125, 343 => 123, 337 => 119, 335 => 118, 326 => 111, 317 => 110, 303 => 105, 300 => 104, 291 => 103, 279 => 100, 276 => 99, 273 => 98, 263 => 93, 259 => 92, 253 => 88, 251 => 87, 248 => 86, 238 => 81, 234 => 80, 227 => 76, 222 => 73, 220 => 72, 209 => 68, 201 => 63, 196 => 60, 191 => 57, 187 => 55, 185 => 54, 179 => 51, 174 => 48, 169 => 45, 165 => 43, 163 => 42, 155 => 39, 150 => 36, 148 => 35, 145 => 34, 142 => 33, 137 => 31, 132 => 30, 127 => 29, 122 => 28, 120 => 27, 113 => 26, 111 => 25, 108 => 24, 106 => 23, 103 => 22, 100 => 21, 94 => 19, 91 => 18, 88 => 17, 86 => 16, 83 => 15, 80 => 14, 74 => 12, 71 => 11, 68 => 10, 66 => 9, 63 => 8, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set request_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.controller) }} + {% endset %} + + {% if collector.redirect %} + {% set redirect_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.redirect.controller, collector.redirect.route, 'GET' != collector.redirect.method ? collector.redirect.method) }} + {% endset %} + {% endif %} + + {% if collector.forward|default(false) %} + {% set forward_handler %} + {% import _self as helper %} + {{ helper.set_handler(collector.forward.controller) }} + {% endset %} + {% endif %} + + {% set request_status_code_color = (collector.statuscode >= 400) ? 'red' : (collector.statuscode >= 300) ? 'yellow' : 'green' %} + + {% set icon %} + {{ collector.statuscode }} + {% if collector.route %} + {% if collector.redirect %}{{ include('@WebProfiler/Icon/redirect.svg') }}{% endif %} + {% if collector.forward|default(false) %}{{ include('@WebProfiler/Icon/forward.svg') }}{% endif %} + {{ 'GET' != collector.method ? collector.method }} @ + {{ collector.route }} + {% endif %} + {% endset %} + + {% set text %} +
+
+ HTTP status + {{ collector.statuscode }} {{ collector.statustext }} +
+ + {% if 'GET' != collector.method -%} +
+ Method + {{ collector.method }} +
+ {%- endif %} + +
+ Controller + {{ request_handler }} +
+ + {% if collector.controller.class is defined -%} +
+ Controller class + {{ collector.controller.class }} +
+ {%- endif %} + +
+ Route name + {{ collector.route|default('NONE') }} +
+ +
+ Has session + {% if collector.sessionmetadata|length %}yes{% else %}no{% endif %} +
+
+ + {% if redirect_handler is defined -%} +
+
+ + {{ collector.redirect.status_code }} + Redirect from + + + {{ redirect_handler }} + ({{ collector.redirect.token }}) + +
+
+ {% endif %} + + {% if forward_handler is defined %} +
+
+ Forwarded to + + {{ forward_handler }} + ({{ collector.forward.token }}) + +
+
+ {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/request.svg') }} + Request / Response + +{% endblock %} + +{% block panel %} +
+
+

Request

+ +
+

GET Parameters

+ + {% if collector.requestquery.all is empty %} +
+

No GET parameters

+
+ {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestquery, maxDepth: 1 }, with_context = false) }} + {% endif %} + +

POST Parameters

+ + {% if collector.requestrequest.all is empty %} +
+

No POST parameters

+
+ {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestrequest, maxDepth: 1 }, with_context = false) }} + {% endif %} + +

Request Attributes

+ + {% if collector.requestattributes.all is empty %} +
+

No attributes

+
+ {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestattributes }, with_context = false) }} + {% endif %} + +

Cookies

+ + {% if collector.requestcookies.all is empty %} +
+

No cookies

+
+ {% else %} + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestcookies }, with_context = false) }} + {% endif %} + +

Request Headers

+ {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestheaders, labels: ['Header', 'Value'], maxDepth: 1 }, with_context = false) }} + +

Request Content

+ + {% if collector.content == false %} +
+

Request content not available (it was retrieved as a resource).

+
+ {% elseif collector.content %} +
+
{{ collector.content }}
+
+ {% else %} +
+

No content

+
+ {% endif %} + +

Server Parameters

+ {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.requestserver }, with_context = false) }} +
+
+ +
+

Response

+ +
+

Response Headers

+ + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: collector.responseheaders, labels: ['Header', 'Value'], maxDepth: 1 }, with_context = false) }} +
+
+ +
+

Session

+ +
+

Session Metadata

+ + {% if collector.sessionmetadata is empty %} +
+

No session metadata

+
+ {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.sessionmetadata }, with_context = false) }} + {% endif %} + +

Session Attributes

+ + {% if collector.sessionattributes is empty %} +
+

No session attributes

+
+ {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.sessionattributes, labels: ['Attribute', 'Value'] }, with_context = false) }} + {% endif %} +
+
+ +
+

Flashes

+ +
+

Flashes

+ + {% if collector.flashes is empty %} +
+

No flash messages were created.

+
+ {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.flashes }, with_context = false) }} + {% endif %} +
+
+ + {% if profile.parent %} +
+

Parent Request

+ +
+

+ Return to parent request + (token = {{ profile.parent.token }}) +

+ + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: profile.parent.getcollector('request').requestattributes }, with_context = false) }} +
+
+ {% endif %} + + {% if profile.children|length %} +
+

Sub Requests {{ profile.children|length }}

+ +
+ {% for child in profile.children %} +

+ + {{- child.getcollector('request').identifier -}} + + (token = {{ child.token }}) +

+ + {{ include('@WebProfiler/Profiler/bag.html.twig', { bag: child.getcollector('request').requestattributes }, with_context = false) }} + {% endfor %} +
+
+ {% endif %} +
+{% endblock %} + +{% macro set_handler(controller, route, method) %} + {% if controller.class is defined -%} + {%- if method|default(false) %}{{ method }}{% endif -%} + {%- set link = controller.file|file_link(controller.line) %} + {%- if link %}{% else %}{% endif %} + + {%- if route|default(false) -%} + @{{ route }} + {%- else -%} + {{- controller.class|abbr_class|striptags -}} + {{- controller.method ? ' :: ' ~ controller.method -}} + {%- endif -%} + + {%- if link %}{% else %}{% endif %} + {%- else -%} + {{ route|default(controller) }} + {%- endif %} +{% endmacro %} +", "@WebProfiler/Collector/request.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig"); + } +} diff --git a/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php b/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php new file mode 100644 index 0000000000000000000000000000000000000000..779880a2545f726383d531f1272d82bcff46a033 --- /dev/null +++ b/var/cache/dev/twig/3f/3f9fad2193f9b4bb21d2a312915a5d4379088451697f2c223ca7c587e8797d42.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b->enter($__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/logger.svg")); + + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1->enter($__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/logger.svg")); + + // line 1 + echo " + + +"; + + $__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b->leave($__internal_a354004f660e51f8cea0d3b2d3cbb86e98b08e3fae3e304a990bb25bca0fb59b_prof); + + + $__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1->leave($__internal_82978fac2d42fe9f301d50b52fc5ce449485a160606cacd7dd5f0f03773eddf1_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/logger.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/logger.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/logger.svg"); + } +} diff --git a/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php b/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php new file mode 100644 index 0000000000000000000000000000000000000000..345d0fa02cf84347e458d49ba73e053fefcb84c5 --- /dev/null +++ b/var/cache/dev/twig/40/4042dc4a1f086b2ae0816fc41551c09e3b5a77ce10bb4186b8b524d49834960f.php @@ -0,0 +1,940 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Security/Collector/security.html.twig", 1); + $this->blocks = array( + 'page_title' => array($this, 'block_page_title'), + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129->enter($__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig")); + + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398->enter($__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129->leave($__internal_37ab8f12176fbe5f3b7da15f433b9879d18bd6816254fcd16e4e71daa5f04129_prof); + + + $__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398->leave($__internal_9ecd4bb27dbc6806656d5ae5b8afde81662e32082e39a87f162b7b982bdd3398_prof); + + } + + // line 3 + public function block_page_title($context, array $blocks = array()) + { + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd->enter($__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "page_title")); + + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271->enter($__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "page_title")); + + echo "Security"; + + $__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271->leave($__internal_ba18f47b9f3c526e7af7cfd91925b4a9a5fba54c0f735c17b7eaa34d5cee8271_prof); + + + $__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd->leave($__internal_356545d58282cd402b07fd857f150702adf5066341a2b4bfc5a1f1386cece0cd_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e->enter($__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37->enter($__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 7 + echo " "; + $context["is_authenticated"] = ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array())); + // line 8 + echo " "; + $context["color_code"] = (((isset($context["is_authenticated"]) ? $context["is_authenticated"] : $this->getContext($context, "is_authenticated"))) ? ("") : ("yellow")); + // line 9 + echo " "; + } else { + // line 10 + echo " "; + $context["color_code"] = (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) ? ("red") : ("")); + // line 11 + echo " "; + } + // line 12 + echo " + "; + // line 13 + ob_start(); + // line 14 + echo " "; + echo twig_include($this->env, $context, "@Security/Collector/icon.svg"); + echo " + "; + // line 15 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "user", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "user", array()), "n/a")) : ("n/a")), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 17 + echo " + "; + // line 18 + ob_start(); + // line 19 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 20 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 21 + echo "
+ Logged in as + "; + // line 23 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()), "html", null, true); + echo " +
+ +
+ Authenticated + getContext($context, "is_authenticated"))) ? ("green") : ("red")); + echo "\">"; + echo (((isset($context["is_authenticated"]) ? $context["is_authenticated"] : $this->getContext($context, "is_authenticated"))) ? ("Yes") : ("No")); + echo " +
+ +
+ Token class + "; + // line 33 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "tokenClass", array())); + echo " +
+ "; + } else { + // line 36 + echo "
+ Authenticated + No +
+ "; + } + // line 41 + echo " + "; + // line 42 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array())) { + // line 43 + echo "
+ Firewall name + "; + // line 45 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "name", array()), "html", null, true); + echo " +
+ "; + } + // line 48 + echo " + "; + // line 49 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()) && $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "logoutUrl", array()))) { + // line 50 + echo " + "; + } + // line 55 + echo " "; + } else { + // line 56 + echo "
+ The security is disabled. +
+ "; + } + // line 60 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 61 + echo " + "; + // line 62 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["color_code"]) ? $context["color_code"] : $this->getContext($context, "color_code")))); + echo " +"; + + $__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37->leave($__internal_0b0ea1b57cb2078ae280e13d60fc4c3c68cc9ffdd192b3ad9faf950acba02a37_prof); + + + $__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e->leave($__internal_84868074709aa896289ef0e43604cb3856442d90db06b8dc784b8afa09381b9e_prof); + + } + + // line 65 + public function block_menu($context, array $blocks = array()) + { + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b->enter($__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483->enter($__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 66 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array()) || !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 67 + echo twig_include($this->env, $context, "@Security/Collector/icon.svg"); + echo " + Security + +"; + + $__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483->leave($__internal_a4e2edf21e2211bec743a0409b5d2d9509542027b47231670474560bd753e483_prof); + + + $__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b->leave($__internal_95aa3a7b99a480cd0f10b4013f97dd2ed0f7aa86d8d2f806987a6982a7331f2b_prof); + + } + + // line 72 + public function block_panel($context, array $blocks = array()) + { + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a->enter($__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29->enter($__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 73 + echo "

Security Token

+ + "; + // line 75 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 76 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 77 + echo "
+
+ "; + // line 79 + echo twig_escape_filter($this->env, ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()) == "anon.")) ? ("Anonymous") : ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "user", array()))), "html", null, true); + echo " + Username +
+ +
+ "; + // line 84 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Authenticated +
+
+ + + + + + + + + + + + + + + "; + // line 108 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "supportsRoleHierarchy", array())) { + // line 109 + echo " + + + + "; + } + // line 114 + echo " + "; + // line 115 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array())) { + // line 116 + echo " + + + + "; + } + // line 121 + echo " +
PropertyValue
Roles + "; + // line 100 + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array()))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array()), 1)))); + echo " + + "; + // line 102 + if (( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "authenticated", array()) && twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "roles", array())))) { + // line 103 + echo "

User is not authenticated probably because they have no roles.

+ "; + } + // line 105 + echo "
Inherited Roles"; + // line 111 + echo ((twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inheritedRoles", array()))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inheritedRoles", array()), 1)))); + echo "
Token"; + // line 118 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()))); + echo "
+ "; + } elseif ($this->getAttribute( // line 123 +(isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 124 + echo "
+

There is no security token.

+
+ "; + } + // line 128 + echo " + +

Security Firewall

+ + "; + // line 132 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array())) { + // line 133 + echo "
+
+ "; + // line 135 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "name", array()), "html", null, true); + echo " + Name +
+
+ "; + // line 139 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "security_enabled", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Security enabled +
+
+ "; + // line 143 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "stateless", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Stateless +
+
+ "; + // line 147 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "allows_anonymous", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Allows anonymous +
+
+ + "; + // line 152 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "security_enabled", array())) { + // line 153 + echo " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValue
provider"; + // line 163 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "provider", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "provider", array())) : ("(none)")), "html", null, true); + echo "
context"; + // line 167 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "context", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "context", array())) : ("(none)")), "html", null, true); + echo "
entry_point"; + // line 171 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "entry_point", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "entry_point", array())) : ("(none)")), "html", null, true); + echo "
user_checker"; + // line 175 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "user_checker", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "user_checker", array())) : ("(none)")), "html", null, true); + echo "
access_denied_handler"; + // line 179 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_handler", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_handler", array())) : ("(none)")), "html", null, true); + echo "
access_denied_url"; + // line 183 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_url", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "access_denied_url", array())) : ("(none)")), "html", null, true); + echo "
listeners"; + // line 187 + echo ((twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "listeners", array()))) ? ("(none)") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "firewall", array()), "listeners", array()), 1)))); + echo "
+ "; + } + // line 192 + echo " "; + } elseif ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "enabled", array())) { + // line 193 + echo "
+

This request was not covered by any firewall.

+
+ "; + } + // line 197 + echo " "; + } else { + // line 198 + echo "
+

The security component is disabled.

+
+ "; + } + // line 202 + echo " + "; + // line 203 + if ( !twig_test_empty((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voters", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voters", array()), array())) : (array())))) { + // line 204 + echo "

Security Voters ("; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "voters", array())), "html", null, true); + echo ")

+ +
+
+ "; + // line 208 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voterStrategy", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "voterStrategy", array()), "unknown")) : ("unknown")), "html", null, true); + echo " + Strategy +
+
+ + + + + + + + + + + "; + // line 222 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "voters", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["voter"]) { + // line 223 + echo " + + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['voter'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 228 + echo " +
#Voter class
"; + // line 224 + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo ""; + // line 225 + echo twig_escape_filter($this->env, $context["voter"], "html", null, true); + echo "
+ "; + } + // line 231 + echo " + "; + // line 232 + if ( !twig_test_empty((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "accessDecisionLog", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "accessDecisionLog", array()), array())) : (array())))) { + // line 233 + echo "

Access decision log

+ + + + + + + + + + + + + + + + + + "; + // line 251 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "accessDecisionLog", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["decision"]) { + // line 252 + echo " + + + + + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['decision'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 270 + echo " +
#ResultAttributesObject
"; + // line 253 + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo " + "; + // line 255 + echo (($this->getAttribute($context["decision"], "result", array())) ? ("GRANTED") : ("DENIED")); + // line 258 + echo " + + "; + // line 261 + if ((twig_length_filter($this->env, $this->getAttribute($context["decision"], "attributes", array())) == 1)) { + // line 262 + echo " "; + echo twig_escape_filter($this->env, twig_first($this->env, $this->getAttribute($context["decision"], "attributes", array())), "html", null, true); + echo " + "; + } else { + // line 264 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["decision"], "attributes", array()))); + echo " + "; + } + // line 266 + echo " "; + // line 267 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["decision"], "object", array()))); + echo "
+ "; + } + + $__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29->leave($__internal_0fe89a364cf7250267d4f0f75a66c28a3693425ac1c89e872d46f0d5612cab29_prof); + + + $__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a->leave($__internal_1e9c7f0208cf6c35c1d4f36f5a470a07b33057ddeb915a0b099ef7ae686fb16a_prof); + + } + + public function getTemplateName() + { + return "@Security/Collector/security.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 628 => 270, 611 => 267, 608 => 266, 602 => 264, 596 => 262, 594 => 261, 589 => 258, 587 => 255, 582 => 253, 579 => 252, 562 => 251, 542 => 233, 540 => 232, 537 => 231, 532 => 228, 515 => 225, 511 => 224, 508 => 223, 491 => 222, 474 => 208, 466 => 204, 464 => 203, 461 => 202, 455 => 198, 452 => 197, 446 => 193, 443 => 192, 435 => 187, 428 => 183, 421 => 179, 414 => 175, 407 => 171, 400 => 167, 393 => 163, 381 => 153, 379 => 152, 371 => 147, 364 => 143, 357 => 139, 350 => 135, 346 => 133, 344 => 132, 338 => 128, 332 => 124, 330 => 123, 326 => 121, 320 => 118, 316 => 116, 314 => 115, 311 => 114, 305 => 111, 301 => 109, 299 => 108, 294 => 105, 290 => 103, 288 => 102, 283 => 100, 264 => 84, 256 => 79, 252 => 77, 249 => 76, 247 => 75, 243 => 73, 234 => 72, 220 => 67, 215 => 66, 206 => 65, 194 => 62, 191 => 61, 188 => 60, 182 => 56, 179 => 55, 173 => 52, 169 => 50, 167 => 49, 164 => 48, 158 => 45, 154 => 43, 152 => 42, 149 => 41, 142 => 36, 136 => 33, 126 => 28, 118 => 23, 114 => 21, 111 => 20, 108 => 19, 106 => 18, 103 => 17, 98 => 15, 93 => 14, 91 => 13, 88 => 12, 85 => 11, 82 => 10, 79 => 9, 76 => 8, 73 => 7, 70 => 6, 61 => 5, 43 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block page_title 'Security' %} + +{% block toolbar %} + {% if collector.token %} + {% set is_authenticated = collector.enabled and collector.authenticated %} + {% set color_code = is_authenticated ? '' : 'yellow' %} + {% else %} + {% set color_code = collector.enabled ? 'red' : '' %} + {% endif %} + + {% set icon %} + {{ include('@Security/Collector/icon.svg') }} + {{ collector.user|default('n/a') }} + {% endset %} + + {% set text %} + {% if collector.enabled %} + {% if collector.token %} +
+ Logged in as + {{ collector.user }} +
+ +
+ Authenticated + {{ is_authenticated ? 'Yes' : 'No' }} +
+ +
+ Token class + {{ collector.tokenClass|abbr_class }} +
+ {% else %} +
+ Authenticated + No +
+ {% endif %} + + {% if collector.firewall %} +
+ Firewall name + {{ collector.firewall.name }} +
+ {% endif %} + + {% if collector.token and collector.logoutUrl %} +
+ Actions + Logout +
+ {% endif %} + {% else %} +
+ The security is disabled. +
+ {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: color_code }) }} +{% endblock %} + +{% block menu %} + + {{ include('@Security/Collector/icon.svg') }} + Security + +{% endblock %} + +{% block panel %} +

Security Token

+ + {% if collector.enabled %} + {% if collector.token %} +
+
+ {{ collector.user == 'anon.' ? 'Anonymous' : collector.user }} + Username +
+ +
+ {{ include('@WebProfiler/Icon/' ~ (collector.authenticated ? 'yes' : 'no') ~ '.svg') }} + Authenticated +
+
+ + + + + + + + + + + + + + + {% if collector.supportsRoleHierarchy %} + + + + + {% endif %} + + {% if collector.token %} + + + + + {% endif %} + +
PropertyValue
Roles + {{ collector.roles is empty ? 'none' : profiler_dump(collector.roles, maxDepth=1) }} + + {% if not collector.authenticated and collector.roles is empty %} +

User is not authenticated probably because they have no roles.

+ {% endif %} +
Inherited Roles{{ collector.inheritedRoles is empty ? 'none' : profiler_dump(collector.inheritedRoles, maxDepth=1) }}
Token{{ profiler_dump(collector.token) }}
+ {% elseif collector.enabled %} +
+

There is no security token.

+
+ {% endif %} + + +

Security Firewall

+ + {% if collector.firewall %} +
+
+ {{ collector.firewall.name }} + Name +
+
+ {{ include('@WebProfiler/Icon/' ~ (collector.firewall.security_enabled ? 'yes' : 'no') ~ '.svg') }} + Security enabled +
+
+ {{ include('@WebProfiler/Icon/' ~ (collector.firewall.stateless ? 'yes' : 'no') ~ '.svg') }} + Stateless +
+
+ {{ include('@WebProfiler/Icon/' ~ (collector.firewall.allows_anonymous ? 'yes' : 'no') ~ '.svg') }} + Allows anonymous +
+
+ + {% if collector.firewall.security_enabled %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyValue
provider{{ collector.firewall.provider ?: '(none)' }}
context{{ collector.firewall.context ?: '(none)' }}
entry_point{{ collector.firewall.entry_point ?: '(none)' }}
user_checker{{ collector.firewall.user_checker ?: '(none)' }}
access_denied_handler{{ collector.firewall.access_denied_handler ?: '(none)' }}
access_denied_url{{ collector.firewall.access_denied_url ?: '(none)' }}
listeners{{ collector.firewall.listeners is empty ? '(none)' : profiler_dump(collector.firewall.listeners, maxDepth=1) }}
+ {% endif %} + {% elseif collector.enabled %} +
+

This request was not covered by any firewall.

+
+ {% endif %} + {% else %} +
+

The security component is disabled.

+
+ {% endif %} + + {% if collector.voters|default([]) is not empty %} +

Security Voters ({{ collector.voters|length }})

+ +
+
+ {{ collector.voterStrategy|default('unknown') }} + Strategy +
+
+ + + + + + + + + + + {% for voter in collector.voters %} + + + + + {% endfor %} + +
#Voter class
{{ loop.index }}{{ voter }}
+ {% endif %} + + {% if collector.accessDecisionLog|default([]) is not empty %} +

Access decision log

+ + + + + + + + + + + + + + + + + + {% for decision in collector.accessDecisionLog %} + + + + + + + {% endfor %} + +
#ResultAttributesObject
{{ loop.index }} + {{ decision.result + ? 'GRANTED' + : 'DENIED' + }} + + {% if decision.attributes|length == 1 %} + {{ decision.attributes|first }} + {% else %} + {{ profiler_dump(decision.attributes) }} + {% endif %} + {{ profiler_dump(decision.object) }}
+ {% endif %} +{% endblock %} +", "@Security/Collector/security.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views/Collector/security.html.twig"); + } +} diff --git a/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php b/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php new file mode 100644 index 0000000000000000000000000000000000000000..3102f634d2fd25ebdda01ce28aded5a10899a3bf --- /dev/null +++ b/var/cache/dev/twig/45/45713c73bda2fd53fae414588b091148afe939b0c9c35bcd96cdcd077a74c770.php @@ -0,0 +1,1571 @@ +blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + 'queries' => array($this, 'block_queries'), + ); + } + + protected function doGetParent(array $context) + { + // line 1 + return $this->loadTemplate((($this->getAttribute($this->getAttribute((isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "isXmlHttpRequest", array())) ? ("@WebProfiler/Profiler/ajax_layout.html.twig") : ("@WebProfiler/Profiler/layout.html.twig")), "@Doctrine/Collector/db.html.twig", 1); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8->enter($__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig")); + + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3->enter($__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Doctrine/Collector/db.html.twig")); + + $this->getParent($context)->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8->leave($__internal_e898aa01ac30862b46d09d0553743e67e53790bdcfafac8ec3b5c43b306943e8_prof); + + + $__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3->leave($__internal_421d66ebb22e3e9f22fd298afbe23937e9fe2525f5c49e9c50f87d3726e23de3_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40->enter($__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781->enter($__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0) || ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { + // line 5 + echo " + "; + // line 6 + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 7 + echo " + "; + // line 8 + ob_start(); + // line 9 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 10 + echo " + \"Database\" + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) { + echo "sf-toolbar-status-yellow"; + } + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + "; + // line 13 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 0)) { + // line 14 + echo " in "; + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + "; + } + // line 16 + echo " "; + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) { + // line 17 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + "; + } + // line 19 + echo " + "; + } else { + // line 21 + echo " + "; + // line 22 + $context["status"] = ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("red") : (((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) ? ("yellow") : ("")))); + // line 23 + echo " + "; + // line 24 + echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg"); + echo " + + "; + // line 26 + if ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) == 0) && ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0))) { + // line 27 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + errors + "; + } else { + // line 30 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + + in + "; + // line 33 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " + ms + + "; + } + // line 37 + echo " + "; + } + // line 39 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 40 + echo " + "; + // line 41 + ob_start(); + // line 42 + echo "
+ Database Queries + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) > 50)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " +
+
+ Query time + "; + // line 48 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms +
+
+ Invalid entities + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("sf-toolbar-status-red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " +
+ "; + // line 54 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 55 + echo "
+ Cache hits + "; + // line 57 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheHitsCount", array()), "html", null, true); + echo " +
+
+ Cache misses + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()), "html", null, true); + echo " +
+
+ Cache puts + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()) > 0)) ? ("sf-toolbar-status-yellow") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()), "html", null, true); + echo " +
+ "; + } else { + // line 68 + echo "
+ Second Level Cache + disabled +
+ "; + } + // line 73 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 74 + echo " + "; + // line 75 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => ((array_key_exists("status", $context)) ? (_twig_default_filter((isset($context["status"]) ? $context["status"] : $this->getContext($context, "status")), "")) : ("")))); + echo " + + "; + } + + $__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781->leave($__internal_659d971937f08cc42f0048dd22cc3ab8bf0c5fb64f39f0d0ceccfa402cb76781_prof); + + + $__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40->leave($__internal_9c75f5ac8afa1d78be24781194ba2c5bd004f405835f7ac108f515e04dcbef40_prof); + + } + + // line 80 + public function block_menu($context, array $blocks = array()) + { + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2->enter($__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf->enter($__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 81 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 82 + echo " + "; + // line 83 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 84 + echo " + + \"\" + Doctrine + + "; + // line 89 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + "; + // line 90 + echo twig_escape_filter($this->env, sprintf("%0.0f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + + + + "; + } else { + // line 95 + echo " + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()) > 0)) ? ("label-status-error") : ("")); + echo " "; + echo ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()) == 0)) ? ("disabled") : ("")); + echo "\"> + "; + // line 97 + echo twig_include($this->env, $context, "@Doctrine/Collector/icon.svg"); + echo " + Doctrine + "; + // line 99 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array())) { + // line 100 + echo " + "; + // line 101 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + + "; + } + // line 104 + echo " + + "; + } + + $__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf->leave($__internal_0703722026aec2b21e9a80f5728f2c9c05b1fa8c9b2f1e78322d732d1ac739bf_prof); + + + $__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2->leave($__internal_699773fd6fc568ba46feace57a01a794ff7eb00fe4b6f63fd900948dd679c1d2_prof); + + } + + // line 109 + public function block_panel($context, array $blocks = array()) + { + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e->enter($__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12->enter($__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 110 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 111 + echo " + "; + // line 112 + if (("explain" == (isset($context["page"]) ? $context["page"] : $this->getContext($context, "page")))) { + // line 113 + echo " "; + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment(Symfony\Bridge\Twig\Extension\HttpKernelExtension::controller("DoctrineBundle:Profiler:explain", array("token" => // line 114 +(isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => "db", "connectionName" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 116 +(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "connection"), "method"), "query" => $this->getAttribute($this->getAttribute($this->getAttribute( // line 117 +(isset($context["app"]) ? $context["app"] : $this->getContext($context, "app")), "request", array()), "query", array()), "get", array(0 => "query"), "method")))); + // line 118 + echo " + "; + } else { + // line 120 + echo " "; + $this->displayBlock("queries", $context, $blocks); + echo " + "; + } + + $__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12->leave($__internal_8c4481ac0b0528111d36dd5bcca276713c55c91241efc0661edb0123b08dbc12_prof); + + + $__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e->leave($__internal_c89b7aa1971e1725663f5d5764931377b414e0f73feddef4a0cb37a4f4bfa85e_prof); + + } + + // line 124 + public function block_queries($context, array $blocks = array()) + { + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196->enter($__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "queries")); + + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8->enter($__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "queries")); + + // line 125 + echo " + + "; + // line 147 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) > 1)) { + // line 148 + echo "

Query Metrics

+ +
+
+ "; + // line 152 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "querycount", array()), "html", null, true); + echo " + Database Queries +
+ +
+ "; + // line 157 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "groupedQueryCount", array()), "html", null, true); + echo " + Different statements +
+ +
+ "; + // line 162 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "time", array()) * 1000)), "html", null, true); + echo " ms + Query time +
+ +
+ "; + // line 167 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "invalidEntityCount", array()), "html", null, true); + echo " + Invalid entities +
+ + "; + // line 171 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 172 + echo "
+ \t"; + // line 173 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheHitsCount", array()), "html", null, true); + echo " + \tCache hits +
+
+ \t"; + // line 177 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheMissesCount", array()), "html", null, true); + echo " + \tCache misses +
+
+ \t"; + // line 181 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cachePutsCount", array()), "html", null, true); + echo " + \tCache puts +
+ "; + } + // line 185 + echo "
+ "; + } + // line 187 + echo " + "; + // line 188 + $context["group_queries"] = $this->getAttribute($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "query", array()), "getBoolean", array(0 => "group"), "method"); + // line 189 + echo " "; + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 190 + echo "

Grouped Statements

+

env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "\">Show all queries

+ "; + } else { + // line 193 + echo "

Queries

+

env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "group" => true)), "html", null, true); + echo "\">Group similar statements

+ "; + } + // line 196 + echo " + "; + // line 197 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "queries", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["connection"] => $context["queries"]) { + // line 198 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array())) > 1)) { + // line 199 + echo "

"; + echo twig_escape_filter($this->env, $context["connection"], "html", null, true); + echo " connection

+ "; + } + // line 201 + echo " + "; + // line 202 + if (twig_test_empty($context["queries"])) { + // line 203 + echo "
+

No database queries were performed.

+
+ "; + } else { + // line 207 + echo " "; + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 208 + echo " "; + $context["queries"] = $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "groupedQueries", array()), $context["connection"], array(), "array"); + // line 209 + echo " "; + } + // line 210 + echo " + + + "; + // line 213 + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 214 + echo " + + "; + } else { + // line 217 + echo " + + "; + } + // line 220 + echo " + + + env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "\"> + "; + // line 224 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($context["queries"]); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["i"] => $context["query"]) { + // line 225 + echo " "; + $context["i"] = (((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) ? ($this->getAttribute($context["query"], "index", array())) : ($context["i"])); + // line 226 + echo " env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\"> + "; + // line 227 + if ((isset($context["group_queries"]) ? $context["group_queries"] : $this->getContext($context, "group_queries"))) { + // line 228 + echo " + + "; + } else { + // line 234 + echo " + + "; + } + // line 237 + echo " + + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['i'], $context['query'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 271 + echo " +
env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" data-sort-direction=\"1\" style=\"cursor: pointer;\">Timeenv, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" style=\"cursor: pointer;\">Countenv, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" data-sort-direction=\"-1\" style=\"cursor: pointer;\">#env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo "')\" style=\"cursor: pointer;\">TimeInfo
+ env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", array())), "html", null, true); + echo "%\"> + "; + // line 230 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", array()) * 1000)), "html", null, true); + echo " ms
("; + echo twig_escape_filter($this->env, sprintf("%0.2f", $this->getAttribute($context["query"], "executionPercent", array())), "html", null, true); + echo "%)
+
"; + // line 232 + echo twig_escape_filter($this->env, $this->getAttribute($context["query"], "count", array()), "html", null, true); + echo ""; + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo ""; + // line 235 + echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["query"], "executionMS", array()) * 1000)), "html", null, true); + echo " ms + "; + // line 238 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", array()), true); + echo " + +
+ Parameters: "; + // line 241 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["query"], "params", array()))); + echo " +
+ +
+ getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : ("")); + echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#formatted-query-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide formatted query\">View formatted query + +    + + getContext($context, "profiler_markup_version")) == 1)) ? ("onclick=\"return toggleRunnableQuery(this);\"") : ("")); + echo " class=\"sf-toggle link-inverse\" data-toggle-selector=\"#original-query-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" data-toggle-alt-content=\"Hide runnable query\">View runnable query + + "; + // line 251 + if ($this->getAttribute($context["query"], "explainable", array())) { + // line 252 + echo "    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("panel" => "db", "token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "page" => "explain", "connection" => $context["connection"], "query" => $context["i"])), "html", null, true); + echo "\" onclick=\"return explain(this);\" data-target-id=\"explain-"; + echo twig_escape_filter($this->env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\">Explain query + "; + } + // line 255 + echo "
+ +
env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" class=\"sql-runnable hidden\"> + "; + // line 258 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->getAttribute($context["query"], "sql", array())); + echo " +
+ +
env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\" class=\"sql-runnable hidden\"> + "; + // line 262 + echo $this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->formatQuery($this->env->getExtension('Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension')->replaceQueryParameters(($this->getAttribute($context["query"], "sql", array()) . ";"), $this->getAttribute($context["query"], "params", array())), true); + echo " +
+ + "; + // line 265 + if ($this->getAttribute($context["query"], "explainable", array())) { + // line 266 + echo "
env, $context["i"], "html", null, true); + echo "-"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute($context["loop"], "parent", array()), "loop", array()), "index", array()), "html", null, true); + echo "\">
+ "; + } + // line 268 + echo "
+ "; + } + // line 274 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['connection'], $context['queries'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 275 + echo " +

Database Connections

+ + "; + // line 278 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array())) { + // line 279 + echo "
+

There are no configured database connections.

+
+ "; + } else { + // line 283 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "connections", array()), "labels" => array(0 => "Name", 1 => "Service")), false); + echo " + "; + } + // line 285 + echo " +

Entity Managers

+ + "; + // line 288 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array())) { + // line 289 + echo "
+

There are no configured entity managers.

+
+ "; + } else { + // line 293 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array()), "labels" => array(0 => "Name", 1 => "Service")), false); + echo " + "; + } + // line 295 + echo " +

Second Level Cache

+ + "; + // line 298 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheEnabled", array())) { + // line 299 + echo "
+

Second Level Cache is not enabled.

+
+ "; + } else { + // line 303 + echo " "; + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array())) { + // line 304 + echo "
+

Second level cache information is not available.

+
+ "; + } else { + // line 308 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 309 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array())), false); + echo " + "; + } else { + // line 311 + echo "
+
+ "; + // line 313 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "hits", array()), "html", null, true); + echo " + Hits +
+ +
+ "; + // line 318 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "misses", array()), "html", null, true); + echo " + Misses +
+ +
+ "; + // line 323 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheCounts", array()), "puts", array()), "html", null, true); + echo " + Puts +
+
+ "; + } + // line 328 + echo " + "; + // line 329 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array())) { + // line 330 + echo "

Number of cache hits

+ "; + // line 331 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "hits", array())), false); + echo " + "; + } + // line 333 + echo " + "; + // line 334 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array())) { + // line 335 + echo "

Number of cache misses

+ "; + // line 336 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "misses", array())), false); + echo " + "; + } + // line 338 + echo " + "; + // line 339 + if ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array())) { + // line 340 + echo "

Number of cache puts

+ "; + // line 341 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/table.html.twig", array("data" => $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "cacheRegions", array()), "puts", array())), false); + echo " + "; + } + // line 343 + echo " "; + } + // line 344 + echo " "; + } + // line 345 + echo " +

Entities Mapping

+ + "; + // line 348 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "entities", array())); + foreach ($context['_seq'] as $context["manager"] => $context["classes"]) { + // line 349 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "managers", array())) > 1)) { + // line 350 + echo "

"; + echo twig_escape_filter($this->env, $context["manager"], "html", null, true); + echo " entity manager

+ "; + } + // line 352 + echo " + "; + // line 353 + if (twig_test_empty($context["classes"])) { + // line 354 + echo "
+

No loaded entities.

+
+ "; + } else { + // line 358 + echo " + + + + + + + + "; + // line 366 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($context["classes"]); + foreach ($context['_seq'] as $context["_key"] => $context["class"]) { + // line 367 + echo " "; + $context["contains_errors"] = ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", true, true) && $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "mappingErrors", array(), "any", false, true), $context["manager"], array(), "array", false, true), $context["class"], array(), "array", true, true)); + // line 368 + echo " getContext($context, "contains_errors"))) ? ("status-error") : ("")); + echo "\"> + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['class'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 383 + echo " +
ClassMapping errors
"; + // line 369 + echo twig_escape_filter($this->env, $context["class"], "html", null, true); + echo " + "; + // line 371 + if ((isset($context["contains_errors"]) ? $context["contains_errors"] : $this->getContext($context, "contains_errors"))) { + // line 372 + echo "
    + "; + // line 373 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mappingErrors", array()), $context["manager"], array(), "array"), $context["class"], array(), "array")); + foreach ($context['_seq'] as $context["_key"] => $context["error"]) { + // line 374 + echo "
  • "; + echo twig_escape_filter($this->env, $context["error"], "html", null, true); + echo "
  • + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 376 + echo "
+ "; + } else { + // line 378 + echo " No errors. + "; + } + // line 380 + echo "
+ "; + } + // line 386 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['manager'], $context['classes'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 387 + echo " + +"; + + $__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8->leave($__internal_9dfab5dbc5a8061b79f48a8d579db5e906a303b42c25b8c3965a121f2209a9b8_prof); + + + $__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196->leave($__internal_f8a73d111210df0ea78fcd9259e6a705e8c58d290ef6bd1a1de257ed4ed7e196_prof); + + } + + public function getTemplateName() + { + return "@Doctrine/Collector/db.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1068 => 463, 1049 => 446, 1047 => 445, 987 => 387, 981 => 386, 976 => 383, 968 => 380, 964 => 378, 960 => 376, 951 => 374, 947 => 373, 944 => 372, 942 => 371, 937 => 369, 932 => 368, 929 => 367, 925 => 366, 915 => 358, 909 => 354, 907 => 353, 904 => 352, 898 => 350, 895 => 349, 891 => 348, 886 => 345, 883 => 344, 880 => 343, 875 => 341, 872 => 340, 870 => 339, 867 => 338, 862 => 336, 859 => 335, 857 => 334, 854 => 333, 849 => 331, 846 => 330, 844 => 329, 841 => 328, 833 => 323, 825 => 318, 817 => 313, 813 => 311, 807 => 309, 804 => 308, 798 => 304, 795 => 303, 789 => 299, 787 => 298, 782 => 295, 776 => 293, 770 => 289, 768 => 288, 763 => 285, 757 => 283, 751 => 279, 749 => 278, 744 => 275, 730 => 274, 725 => 271, 709 => 268, 701 => 266, 699 => 265, 693 => 262, 687 => 261, 681 => 258, 675 => 257, 671 => 255, 662 => 253, 659 => 252, 657 => 251, 648 => 249, 637 => 245, 630 => 241, 624 => 238, 621 => 237, 616 => 235, 611 => 234, 606 => 232, 599 => 230, 595 => 229, 592 => 228, 590 => 227, 583 => 226, 580 => 225, 563 => 224, 559 => 223, 554 => 220, 549 => 218, 544 => 217, 539 => 215, 534 => 214, 532 => 213, 527 => 210, 524 => 209, 521 => 208, 518 => 207, 512 => 203, 510 => 202, 507 => 201, 501 => 199, 498 => 198, 481 => 197, 478 => 196, 473 => 194, 470 => 193, 465 => 191, 462 => 190, 459 => 189, 457 => 188, 454 => 187, 450 => 185, 443 => 181, 436 => 177, 429 => 173, 426 => 172, 424 => 171, 417 => 167, 409 => 162, 401 => 157, 393 => 152, 387 => 148, 385 => 147, 377 => 141, 361 => 127, 359 => 126, 356 => 125, 347 => 124, 333 => 120, 329 => 118, 327 => 117, 326 => 116, 325 => 114, 323 => 113, 321 => 112, 318 => 111, 315 => 110, 306 => 109, 293 => 104, 287 => 101, 284 => 100, 282 => 99, 277 => 97, 271 => 96, 268 => 95, 260 => 90, 256 => 89, 249 => 84, 247 => 83, 244 => 82, 241 => 81, 232 => 80, 218 => 75, 215 => 74, 212 => 73, 205 => 68, 197 => 65, 188 => 61, 181 => 57, 177 => 55, 175 => 54, 168 => 52, 161 => 48, 152 => 44, 148 => 42, 146 => 41, 143 => 40, 140 => 39, 136 => 37, 129 => 33, 122 => 30, 115 => 27, 113 => 26, 108 => 24, 105 => 23, 103 => 22, 100 => 21, 96 => 19, 90 => 17, 87 => 16, 81 => 14, 79 => 13, 71 => 12, 67 => 10, 64 => 9, 62 => 8, 59 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 21 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends app.request.isXmlHttpRequest ? '@WebProfiler/Profiler/ajax_layout.html.twig' : '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if collector.querycount > 0 or collector.invalidEntityCount > 0 %} + + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% set icon %} + {% if profiler_markup_version == 1 %} + + \"Database\" + 50 %}sf-toolbar-status-yellow{% endif %}\">{{ collector.querycount }} + {% if collector.querycount > 0 %} + in {{ '%0.2f'|format(collector.time * 1000) }} ms + {% endif %} + {% if collector.invalidEntityCount > 0 %} + {{ collector.invalidEntityCount }} + {% endif %} + + {% else %} + + {% set status = collector.invalidEntityCount > 0 ? 'red' : collector.querycount > 50 ? 'yellow' %} + + {{ include('@Doctrine/Collector/icon.svg') }} + + {% if collector.querycount == 0 and collector.invalidEntityCount > 0 %} + {{ collector.invalidEntityCount }} + errors + {% else %} + {{ collector.querycount }} + + in + {{ '%0.2f'|format(collector.time * 1000) }} + ms + + {% endif %} + + {% endif %} + {% endset %} + + {% set text %} +
+ Database Queries + 50 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.querycount }} +
+
+ Query time + {{ '%0.2f'|format(collector.time * 1000) }} ms +
+
+ Invalid entities + 0 ? 'sf-toolbar-status-red' : '' }}\">{{ collector.invalidEntityCount }} +
+ {% if collector.cacheEnabled %} +
+ Cache hits + {{ collector.cacheHitsCount }} +
+
+ Cache misses + 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cacheMissesCount }} +
+
+ Cache puts + 0 ? 'sf-toolbar-status-yellow' : '' }}\">{{ collector.cachePutsCount }} +
+ {% else %} +
+ Second Level Cache + disabled +
+ {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status|default('') }) }} + + {% endif %} +{% endblock %} + +{% block menu %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if profiler_markup_version == 1 %} + + + \"\" + Doctrine + + {{ collector.querycount }} + {{ '%0.0f'|format(collector.time * 1000) }} ms + + + + {% else %} + + 0 ? 'label-status-error' }} {{ collector.querycount == 0 ? 'disabled' }}\"> + {{ include('@Doctrine/Collector/icon.svg') }} + Doctrine + {% if collector.invalidEntityCount %} + + {{ collector.invalidEntityCount }} + + {% endif %} + + + {% endif %} +{% endblock %} + +{% block panel %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if 'explain' == page %} + {{ render(controller('DoctrineBundle:Profiler:explain', { + token: token, + panel: 'db', + connectionName: app.request.query.get('connection'), + query: app.request.query.get('query') + })) }} + {% else %} + {{ block('queries') }} + {% endif %} +{% endblock %} + +{% block queries %} + + + {% if profiler_markup_version > 1 %} +

Query Metrics

+ +
+
+ {{ collector.querycount }} + Database Queries +
+ +
+ {{ collector.groupedQueryCount }} + Different statements +
+ +
+ {{ '%0.2f'|format(collector.time * 1000) }} ms + Query time +
+ +
+ {{ collector.invalidEntityCount }} + Invalid entities +
+ + {% if collector.cacheEnabled %} +
+ \t{{ collector.cacheHitsCount }} + \tCache hits +
+
+ \t{{ collector.cacheMissesCount }} + \tCache misses +
+
+ \t{{ collector.cachePutsCount }} + \tCache puts +
+ {% endif %} +
+ {% endif %} + + {% set group_queries = request.query.getBoolean('group') %} + {% if group_queries %} +

Grouped Statements

+

Show all queries

+ {% else %} +

Queries

+

Group similar statements

+ {% endif %} + + {% for connection, queries in collector.queries %} + {% if collector.connections|length > 1 %} +

{{ connection }} connection

+ {% endif %} + + {% if queries is empty %} +
+

No database queries were performed.

+
+ {% else %} + {% if group_queries %} + {% set queries = collector.groupedQueries[connection] %} + {% endif %} + + + + {% if group_queries %} + + + {% else %} + + + {% endif %} + + + + + {% for i, query in queries %} + {% set i = group_queries ? query.index : i %} + + {% if group_queries %} + + + {% else %} + + + {% endif %} + + + {% endfor %} + +
TimeCount#TimeInfo
+ + {{ '%0.2f'|format(query.executionMS * 1000) }} ms
({{ '%0.2f'|format(query.executionPercent) }}%)
+
{{ query.count }}{{ loop.index }}{{ '%0.2f'|format(query.executionMS * 1000) }} ms + {{ query.sql|doctrine_pretty_query(highlight_only = true) }} + +
+ Parameters: {{ profiler_dump(query.params) }} +
+ +
+ View formatted query + +    + + View runnable query + + {% if query.explainable %} +    + Explain query + {% endif %} +
+ +
+ {{ query.sql|doctrine_pretty_query }} +
+ +
+ {{ (query.sql ~ ';')|doctrine_replace_query_parameters(query.params)|doctrine_pretty_query(highlight_only = true) }} +
+ + {% if query.explainable %} +
+ {% endif %} +
+ {% endif %} + {% endfor %} + +

Database Connections

+ + {% if not collector.connections %} +
+

There are no configured database connections.

+
+ {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.connections, labels: ['Name', 'Service'] }, with_context = false ) }} + {% endif %} + +

Entity Managers

+ + {% if not collector.managers %} +
+

There are no configured entity managers.

+
+ {% else %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.managers, labels: ['Name', 'Service'] }, with_context = false ) }} + {% endif %} + +

Second Level Cache

+ + {% if not collector.cacheEnabled %} +
+

Second Level Cache is not enabled.

+
+ {% else %} + {% if not collector.cacheCounts %} +
+

Second level cache information is not available.

+
+ {% else %} + {% if profiler_markup_version == 1 %} + {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheCounts }, with_context = false) }} + {% else %} +
+
+ {{ collector.cacheCounts.hits }} + Hits +
+ +
+ {{ collector.cacheCounts.misses }} + Misses +
+ +
+ {{ collector.cacheCounts.puts }} + Puts +
+
+ {% endif %} + + {% if collector.cacheRegions.hits %} +

Number of cache hits

+ {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.hits }, with_context = false) }} + {% endif %} + + {% if collector.cacheRegions.misses %} +

Number of cache misses

+ {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.misses }, with_context = false) }} + {% endif %} + + {% if collector.cacheRegions.puts %} +

Number of cache puts

+ {{ include('@WebProfiler/Profiler/table.html.twig', { data: collector.cacheRegions.puts }, with_context = false) }} + {% endif %} + {% endif %} + {% endif %} + +

Entities Mapping

+ + {% for manager, classes in collector.entities %} + {% if collector.managers|length > 1 %} +

{{ manager }} entity manager

+ {% endif %} + + {% if classes is empty %} +
+

No loaded entities.

+
+ {% else %} + + + + + + + + + {% for class in classes %} + {% set contains_errors = collector.mappingErrors[manager] is defined and collector.mappingErrors[manager][class] is defined %} + + + + + {% endfor %} + +
ClassMapping errors
{{ class }} + {% if contains_errors %} +
    + {% for error in collector.mappingErrors[manager][class] %} +
  • {{ error }}
  • + {% endfor %} +
+ {% else %} + No errors. + {% endif %} +
+ {% endif %} + {% endfor %} + + +{% endblock %} +", "@Doctrine/Collector/db.html.twig", "/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views/Collector/db.html.twig"); + } +} diff --git a/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php b/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php new file mode 100644 index 0000000000000000000000000000000000000000..914ab7ea6113c6c423c50161e7697e30e6e1fa1d --- /dev/null +++ b/var/cache/dev/twig/50/50edd82015430c01d18fec869f61be09ea5e55aec049bf9056b600ac088c37d3.php @@ -0,0 +1,395 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437->enter($__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.html.twig")); + + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f->enter($__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.html.twig")); + + // line 1 + echo "
+
+ +
+ "; + // line 7 + echo twig_include($this->env, $context, "@Twig/Exception/exception.svg"); + echo " +
+
+
+ +

"; + // line 12 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); + echo "

+ +
+ "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, (isset($context["status_text"]) ? $context["status_text"] : $this->getContext($context, "status_text")), "html", null, true); + echo " - "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); + echo " +
+ + "; + // line 18 + $context["previous_count"] = twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "allPrevious", array())); + // line 19 + echo " "; + if ((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count"))) { + // line 20 + echo "
"; + echo twig_escape_filter($this->env, (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")), "html", null, true); + echo " linked Exception"; + echo ((((isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")) > 1)) ? ("s") : ("")); + echo ": + +
+ "; + } + // line 30 + echo " +
+
+
+
+ +"; + // line 36 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array())); + foreach ($context['_seq'] as $context["position"] => $context["e"]) { + // line 37 + echo " "; + $this->loadTemplate("@Twig/Exception/traces.html.twig", "@Twig/Exception/exception.html.twig", 37)->display(array("exception" => $context["e"], "position" => $context["position"], "count" => (isset($context["previous_count"]) ? $context["previous_count"] : $this->getContext($context, "previous_count")))); + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['position'], $context['e'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 39 + echo " +"; + // line 40 + if ((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger"))) { + // line 41 + echo "
+
+ "; + // line 43 + ob_start(); + // line 44 + echo "

+ Logs  + + \"+\" + \"-\" + +

+ "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 52 + echo " + "; + // line 53 + if ($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array())) { + // line 54 + echo "
+ + "; + // line 56 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()), "html", null, true); + echo " error"; + echo ((($this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "counterrors", array()) > 1)) ? ("s") : ("")); + echo " + +
+ "; + } + // line 60 + echo "
+ +
+ "; + // line 63 + $this->loadTemplate("@Twig/Exception/logs.html.twig", "@Twig/Exception/exception.html.twig", 63)->display(array("logs" => $this->getAttribute((isset($context["logger"]) ? $context["logger"] : $this->getContext($context, "logger")), "logs", array()))); + // line 64 + echo "
+
+"; + } + // line 67 + echo " +"; + // line 68 + if ((isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent"))) { + // line 69 + echo "
+ "; + // line 70 + ob_start(); + // line 71 + echo "

+ Content of the Output  + + \"-\" + \"+\" + +

+ "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 79 + echo " +
+ "; + // line 81 + echo twig_escape_filter($this->env, (isset($context["currentContent"]) ? $context["currentContent"] : $this->getContext($context, "currentContent")), "html", null, true); + echo " +
+ +
+
+"; + } + // line 87 + echo " +"; + // line 88 + $this->loadTemplate("@Twig/Exception/traces_text.html.twig", "@Twig/Exception/exception.html.twig", 88)->display(array("exception" => (isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")))); + // line 89 + echo " + +"; + + $__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437->leave($__internal_814fe5442a0a232b90fc491bb295fc2d5f1793b7c295af8e37c72e0a598ee437_prof); + + + $__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f->leave($__internal_519f09425d300e97a3c5fb40214145c4a77cbd44e79f1a88f9099f7c404d377f_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 207 => 89, 205 => 88, 202 => 87, 193 => 81, 189 => 79, 179 => 71, 177 => 70, 174 => 69, 172 => 68, 169 => 67, 164 => 64, 162 => 63, 157 => 60, 148 => 56, 144 => 54, 142 => 53, 139 => 52, 129 => 44, 127 => 43, 123 => 41, 121 => 40, 118 => 39, 111 => 37, 107 => 36, 99 => 30, 94 => 27, 77 => 24, 74 => 23, 70 => 22, 62 => 20, 59 => 19, 57 => 18, 47 => 15, 41 => 12, 33 => 7, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
+
+ +
+ {{ include('@Twig/Exception/exception.svg') }} +
+
+
+ +

{{ exception.message|nl2br|format_file_from_text }}

+ +
+ {{ status_code }} {{ status_text }} - {{ exception.class|abbr_class }} +
+ + {% set previous_count = exception.allPrevious|length %} + {% if previous_count %} +
{{ previous_count }} linked Exception{{ previous_count > 1 ? 's' : '' }}: +
    + {% for i, previous in exception.allPrevious %} +
  • + {{ previous.class|abbr_class }} » +
  • + {% endfor %} +
+
+ {% endif %} + +
+
+
+
+ +{% for position, e in exception.toarray %} + {% include '@Twig/Exception/traces.html.twig' with { 'exception': e, 'position': position, 'count': previous_count } only %} +{% endfor %} + +{% if logger %} +
+
+ {% spaceless %} +

+ Logs  + + \"+\" + \"-\" + +

+ {% endspaceless %} + + {% if logger.counterrors %} +
+ + {{ logger.counterrors }} error{{ logger.counterrors > 1 ? 's' : ''}} + +
+ {% endif %} +
+ +
+ {% include '@Twig/Exception/logs.html.twig' with { 'logs': logger.logs } only %} +
+
+{% endif %} + +{% if currentContent %} +
+ {% spaceless %} +

+ Content of the Output  + + \"-\" + \"+\" + +

+ {% endspaceless %} + +
+ {{ currentContent }} +
+ +
+
+{% endif %} + +{% include '@Twig/Exception/traces_text.html.twig' with { 'exception': exception } only %} + + +", "@Twig/Exception/exception.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception.html.twig"); + } +} diff --git a/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php b/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php new file mode 100644 index 0000000000000000000000000000000000000000..f9cce98ad8c1c7c38d2a685e34cd2ba908d097bb --- /dev/null +++ b/var/cache/dev/twig/56/56779f8f989c6a728b939fb26de8f2495741ce63014010110676d1d75c8c4f84.php @@ -0,0 +1,590 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/base.html.twig", "@WebProfiler/Profiler/layout.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'summary' => array($this, 'block_summary'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7->enter($__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/layout.html.twig")); + + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a->enter($__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/layout.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7->leave($__internal_1ebf92ca76e3d735d2704077e2bfc32e1aa2187916ba2d698c979155ca29aed7_prof); + + + $__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a->leave($__internal_320f33c08aa9d1d8120e40792484182d8aa90239b3a3034c505ba9b9c796476a_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd->enter($__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1->enter($__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Profiler/header.html.twig", array(), false); + echo " + +
+ "; + // line 7 + $this->displayBlock('summary', $context, $blocks); + // line 83 + echo "
+ +
+
+
+
+ "; + // line 89 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/base_js.html.twig"); + echo " + "; + // line 90 + $this->displayBlock('panel', $context, $blocks); + // line 91 + echo "
+
+ +
+ + + "; + // line 112 + if (array_key_exists("templates", $context)) { + // line 113 + echo "
    + "; + // line 114 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["templates"]) ? $context["templates"] : $this->getContext($context, "templates"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["template"]) { + // line 115 + echo " "; + ob_start(); + // line 116 + if ( $this->loadTemplate($context["template"], "@WebProfiler/Profiler/layout.html.twig", 116)->hasBlock("menu", $context)) { + // line 117 + $__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2 = array("collector" => $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => $context["name"]), "method"), "profiler_markup_version" => (isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version"))); + if (!is_array($__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2)) { + throw new Twig_Error_Runtime('Variables passed to the "with" tag must be a hash.'); + } + $context['_parent'] = $context; + $context = array_merge($context, $__internal_54452697437224e77abfd6b8fb9c1db2cf4fa5307eaf954086b4791eb722f7b2); + // line 118 + $this->loadTemplate($context["template"], "@WebProfiler/Profiler/layout.html.twig", 118)->displayBlock("menu", $context); + $context = $context['_parent']; + } + $context["menu"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 122 + echo " "; + if ( !twig_test_empty((isset($context["menu"]) ? $context["menu"] : $this->getContext($context, "menu")))) { + // line 123 + echo "
  • env, $context["name"], "html", null, true); + echo " "; + echo ((($context["name"] == (isset($context["panel"]) ? $context["panel"] : $this->getContext($context, "panel")))) ? ("selected") : ("")); + echo "\"> + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => $context["name"])), "html", null, true); + echo "\">"; + echo (isset($context["menu"]) ? $context["menu"] : $this->getContext($context, "menu")); + echo " +
  • + "; + } + // line 127 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['template'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 128 + echo "
+ "; + } + // line 130 + echo "
+
+
+ +"; + + $__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1->leave($__internal_73eb3ecb679528707f277cc605a998218823e61921a997eb62399c75583d73b1_prof); + + + $__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd->leave($__internal_11c12c41f2976e699f46a80f9620a9ae11a83c9527ece6738d648461685cedbd_prof); + + } + + // line 7 + public function block_summary($context, array $blocks = array()) + { + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297->enter($__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "summary")); + + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4->enter($__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "summary")); + + // line 8 + echo " "; + if (array_key_exists("profile", $context)) { + // line 9 + echo " "; + $context["status_code"] = ((twig_in_filter("request", twig_get_array_keys_filter($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array())))) ? ((($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "getcollector", array(0 => "request"), "method", false, true), "statuscode", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "getcollector", array(0 => "request"), "method", false, true), "statuscode", array()), 0)) : (0))) : (0)); + // line 10 + echo " "; + $context["css_class"] = ((((isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")) > 399)) ? ("status-error") : (((((isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")) > 299)) ? ("status-warning") : ("status-success")))); + // line 11 + echo " +
env, (isset($context["css_class"]) ? $context["css_class"] : $this->getContext($context, "css_class")), "html", null, true); + echo "\"> +
+

+ "; + // line 15 + if (twig_in_filter(twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), array(0 => "GET", 1 => "HEAD"))) { + // line 16 + echo " env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo " + "; + } else { + // line 18 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "url", array()), "html", null, true); + echo " + "; + } + // line 20 + echo "

+ + "; + // line 22 + $context["request_collector"] = (($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "collectors", array(), "any", false, true), "request", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : null), "collectors", array(), "any", false, true), "request", array()), false)) : (false)); + // line 23 + echo " "; + if ((array_key_exists("request_collector", $context) && $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "redirect", array()))) { + // line 24 + $context["redirect"] = $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "redirect", array()); + // line 25 + $context["controller"] = $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "controller", array()); + // line 26 + $context["redirect_route"] = ("@" . $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "route", array())); + // line 27 + echo "
+
+ "; + // line 29 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "status_code", array()), "html", null, true); + echo " + Redirect from +
+
+ "; + // line 33 + echo twig_escape_filter($this->env, ((("GET" != $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "method", array()))) ? ($this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "method", array())) : ("")), "html", null, true); + echo " + "; + // line 34 + if ($this->getAttribute($this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : null), "controller", array(), "any", false, true), "class", array(), "any", true, true)) { + // line 35 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 36 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } + // line 37 + echo twig_escape_filter($this->env, (isset($context["redirect_route"]) ? $context["redirect_route"] : $this->getContext($context, "redirect_route")), "html", null, true); + // line 38 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } + } else { + // line 40 + echo twig_escape_filter($this->env, (isset($context["redirect_route"]) ? $context["redirect_route"] : $this->getContext($context, "redirect_route")), "html", null, true); + } + // line 42 + echo " (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "token", array()), "panel" => $this->getAttribute($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "query", array()), "get", array(0 => "panel", 1 => "request"), "method"))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["redirect"]) ? $context["redirect"] : $this->getContext($context, "redirect")), "token", array()), "html", null, true); + echo ") +
+
"; + } + // line 46 + echo " + "; + // line 47 + if ((((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")) && (($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array()), false)) : (false))) && $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : null), "forward", array(), "any", false, true), "controller", array(), "any", false, true), "class", array(), "any", true, true))) { + // line 48 + $context["forward"] = $this->getAttribute((isset($context["request_collector"]) ? $context["request_collector"] : $this->getContext($context, "request_collector")), "forward", array()); + // line 49 + $context["controller"] = $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "controller", array()); + // line 50 + echo "
+
Forwarded to
+
+ "; + // line 53 + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "line", array())); + // line 54 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo "env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "file", array()), "html", null, true); + echo "\">"; + } + // line 55 + echo twig_escape_filter($this->env, strip_tags($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "class", array()))), "html", null, true); + // line 56 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array())) ? ((" :: " . $this->getAttribute((isset($context["controller"]) ? $context["controller"] : $this->getContext($context, "controller")), "method", array()))) : ("")), "html", null, true); + // line 57 + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + echo ""; + } + // line 58 + echo " (env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "token", array()))), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["forward"]) ? $context["forward"] : $this->getContext($context, "forward")), "token", array()), "html", null, true); + echo ") +
+
"; + } + // line 62 + echo " +
+
Method
+
"; + // line 65 + echo twig_escape_filter($this->env, twig_upper_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "method", array())), "html", null, true); + echo "
+ +
HTTP Status
+
"; + // line 68 + echo twig_escape_filter($this->env, (isset($context["status_code"]) ? $context["status_code"] : $this->getContext($context, "status_code")), "html", null, true); + echo "
+ +
IP
+
"; + // line 71 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "ip", array()), "html", null, true); + echo "
+ +
Profiled on
+
"; + // line 74 + echo twig_escape_filter($this->env, twig_date_format_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "time", array()), "r"), "html", null, true); + echo "
+ +
Token
+
"; + // line 77 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "token", array()), "html", null, true); + echo "
+
+
+
+ "; + } + // line 82 + echo " "; + + $__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4->leave($__internal_b232bdbf133a2d63dc1a63432b63f15a894cc9296a264a1f85b38e6c8cd45bb4_prof); + + + $__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297->leave($__internal_78e966bc2c5eb5ec16606024d444d1303811e18e8a1ca27f3585137f6fbe2297_prof); + + } + + // line 90 + public function block_panel($context, array $blocks = array()) + { + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae->enter($__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60->enter($__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + echo ""; + + $__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60->leave($__internal_bf4e92651df061a946422371808e44e6c86ed30c3bca599ba07bfc4a3de8ba60_prof); + + + $__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae->leave($__internal_d1c39ab8eebe74a13698ffe33d22874eba5a424562617957bdb3ba55dd2b41ae_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 405 => 90, 395 => 82, 387 => 77, 381 => 74, 375 => 71, 369 => 68, 363 => 65, 358 => 62, 349 => 58, 345 => 57, 343 => 56, 341 => 55, 333 => 54, 331 => 53, 326 => 50, 324 => 49, 322 => 48, 320 => 47, 317 => 46, 308 => 42, 305 => 40, 300 => 38, 298 => 37, 290 => 36, 288 => 35, 286 => 34, 282 => 33, 275 => 29, 271 => 27, 269 => 26, 267 => 25, 265 => 24, 262 => 23, 260 => 22, 256 => 20, 250 => 18, 242 => 16, 240 => 15, 234 => 12, 231 => 11, 228 => 10, 225 => 9, 222 => 8, 213 => 7, 192 => 130, 188 => 128, 174 => 127, 166 => 124, 159 => 123, 156 => 122, 151 => 118, 144 => 117, 142 => 116, 139 => 115, 122 => 114, 119 => 113, 117 => 112, 110 => 108, 104 => 105, 98 => 104, 93 => 102, 89 => 101, 83 => 98, 74 => 91, 72 => 90, 68 => 89, 60 => 83, 58 => 7, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/base.html.twig' %} + +{% block body %} + {{ include('@WebProfiler/Profiler/header.html.twig', with_context = false) }} + +
+ {% block summary %} + {% if profile is defined %} + {% set status_code = ('request' in profile.collectors|keys) ? profile.getcollector('request').statuscode|default(0) : 0 %} + {% set css_class = status_code > 399 ? 'status-error' : status_code > 299 ? 'status-warning' : 'status-success' %} + +
+
+

+ {% if profile.method|upper in ['GET', 'HEAD'] %} + {{ profile.url }} + {% else %} + {{ profile.url }} + {% endif %} +

+ + {% set request_collector = profile.collectors.request|default(false) %} + {% if request_collector is defined and request_collector.redirect -%} + {%- set redirect = request_collector.redirect -%} + {%- set controller = redirect.controller -%} + {%- set redirect_route = '@' ~ redirect.route %} +
+
+ {{ redirect.status_code }} + Redirect from +
+
+ {{ 'GET' != redirect.method ? redirect.method }} + {% if redirect.controller.class is defined -%} + {%- set link = controller.file|file_link(controller.line) -%} + {% if link %}{% endif -%} + {{ redirect_route }} + {%- if link %}{% endif -%} + {%- else -%} + {{ redirect_route }} + {%- endif %} + ({{ redirect.token }}) +
+
+ {%- endif %} + + {% if request_collector and request_collector.forward|default(false) and request_collector.forward.controller.class is defined -%} + {%- set forward = request_collector.forward -%} + {%- set controller = forward.controller -%} +
+
Forwarded to
+
+ {% set link = controller.file|file_link(controller.line) -%} + {%- if link %}{% endif -%} + {{- controller.class|abbr_class|striptags -}} + {{- controller.method ? ' :: ' ~ controller.method }} + {%- if link %}{% endif %} + ({{ forward.token }}) +
+
+ {%- endif %} + +
+
Method
+
{{ profile.method|upper }}
+ +
HTTP Status
+
{{ status_code }}
+ +
IP
+
{{ profile.ip }}
+ +
Profiled on
+
{{ profile.time|date('r') }}
+ +
Token
+
{{ profile.token }}
+
+
+
+ {% endif %} + {% endblock %} +
+ +
+
+
+
+ {{ include('@WebProfiler/Profiler/base_js.html.twig') }} + {% block panel '' %} +
+
+ +
+
+
+ + {{ include('@WebProfiler/Icon/menu.svg') }} + + + Last 10 + Latest + + + {{ include('@WebProfiler/Icon/search.svg') }} Search + + + {{ render(path('_profiler_search_bar', request.query.all)) }} +
+
+ + {% if templates is defined %} +
    + {% for name, template in templates %} + {% set menu -%} + {%- if block('menu', template) is defined -%} + {% with { collector: profile.getcollector(name), profiler_markup_version: profiler_markup_version } %} + {{- block('menu', template) -}} + {% endwith %} + {%- endif -%} + {%- endset %} + {% if menu is not empty %} +
  • + {{ menu|raw }} +
  • + {% endif %} + {% endfor %} +
+ {% endif %} +
+
+
+ +{% endblock %} +", "@WebProfiler/Profiler/layout.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/layout.html.twig"); + } +} diff --git a/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php b/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php new file mode 100644 index 0000000000000000000000000000000000000000..e25ab2f4b2a70e505d25089301d12c733f0ae9b7 --- /dev/null +++ b/var/cache/dev/twig/58/5857925eaca68660627cf0469a34ef67c0a378d51a8af8895353dcd52bb8cdf4.php @@ -0,0 +1,154 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/ajax.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f->enter($__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/ajax.html.twig")); + + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a->enter($__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/ajax.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f->leave($__internal_e592f99daeb0b19c55dc3b2671cb0c5dd5b8541ea294080d1c9a367bc56eae2f_prof); + + + $__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a->leave($__internal_2a49a7a7d287b33ffbf75a3e8ae6fc02f2ad7b4e402efde1943af813d199752a_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed->enter($__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5->enter($__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + ob_start(); + // line 5 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/ajax.svg"); + echo " + 0 + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 8 + echo " + "; + // line 9 + $context["text"] = ('' === $tmp = "
+ +
+
+ + + + + + + + + + + + +
MethodTypeStatusURLTimeProfile
+
+ ") ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 29 + echo " + "; + // line 30 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => false)); + echo " +"; + + $__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5->leave($__internal_e8a02c3275557413115e8a099106260b59870e4235855d024d3b55ff56ab57d5_prof); + + + $__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed->leave($__internal_d8cc92f961580f38f2f89c936e2cb21beba7a758a329bdc54d04585b795635ed_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/ajax.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 85 => 30, 82 => 29, 62 => 9, 59 => 8, 52 => 5, 49 => 4, 40 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + {{ include('@WebProfiler/Icon/ajax.svg') }} + 0 + {% endset %} + + {% set text %} +
+ +
+
+ + + + + + + + + + + + +
MethodTypeStatusURLTimeProfile
+
+ {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: false }) }} +{% endblock %} +", "@WebProfiler/Collector/ajax.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/ajax.html.twig"); + } +} diff --git a/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php b/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php new file mode 100644 index 0000000000000000000000000000000000000000..58e3584acad56865108b2c1e4d5c79fcf8ec4443 --- /dev/null +++ b/var/cache/dev/twig/65/651541f3df6280c9565682bf097268e8b49f3e38b65a09b487a79a7c0dad4e70.php @@ -0,0 +1,2024 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/form.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'head' => array($this, 'block_head'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a->enter($__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/form.html.twig")); + + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356->enter($__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/form.html.twig")); + + // line 3 + $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a->leave($__internal_53ebdb3538594d40bc079413ff7fd1676f6bf9efbe1c1d74d62ce4fcb3eb547a_prof); + + + $__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356->leave($__internal_3b0328de2b0c0392512ab77f5f2462f63e43a972b4d788ea0f18a011e39a7356_prof); + + } + + // line 5 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6->enter($__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f->enter($__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 6 + echo " "; + if ((($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0) || twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())))) { + // line 7 + echo " "; + $context["status_color"] = (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ("red") : ("")); + // line 8 + echo " "; + ob_start(); + // line 9 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/form.svg"); + echo " + + "; + // line 11 + echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) : (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())))), "html", null, true); + echo " + + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 14 + echo " + "; + // line 15 + ob_start(); + // line 16 + echo "
+ Number of forms + "; + // line 18 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())), "html", null, true); + echo " +
+
+ Number of errors + getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0)) ? ("red") : ("")); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()), "html", null, true); + echo " +
+ "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 25 + echo " + "; + // line 26 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " + "; + } + + $__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f->leave($__internal_ce07601b4152e31c88aa366e08bf1672a77edf5f3d40ebc8c72b2053a7657e8f_prof); + + + $__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6->leave($__internal_e7b21b0ec57e655a5872744843c9453c19a863d045cd0d9bbcab881947eb68b6_prof); + + } + + // line 30 + public function block_menu($context, array $blocks = array()) + { + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e->enter($__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361->enter($__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 31 + echo " getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array())) ? ("error") : ("")); + echo " "; + echo ((twig_test_empty($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) ? ("disabled") : ("")); + echo "\"> + "; + // line 32 + echo twig_include($this->env, $context, "@WebProfiler/Icon/form.svg"); + echo " + Forms + "; + // line 34 + if (($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()) > 0)) { + // line 35 + echo " + "; + // line 36 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "nb_errors", array()), "html", null, true); + echo " + + "; + } + // line 39 + echo " +"; + + $__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361->leave($__internal_d3a312024883c236893c65175f1ec42195f10ff7bb7e444bd03bf789d3e5d361_prof); + + + $__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e->leave($__internal_bc2333b53679783a181b4f82b9286421dec9cb7ecde74c641555be52f21ba97e_prof); + + } + + // line 42 + public function block_head($context, array $blocks = array()) + { + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e->enter($__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1->enter($__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 43 + echo " "; + $this->displayParentBlock("head", $context, $blocks); + echo " + + +"; + + $__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1->leave($__internal_3a37214ac251209cee7ed51baf06651c7905d57147e601d28e3bc7e9f84be9b1_prof); + + + $__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e->leave($__internal_a43eeb9cef8b21f8e311197919e536a30e0df8def289e6d54278ff750819c45e_prof); + + } + + // line 184 + public function block_panel($context, array $blocks = array()) + { + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1->enter($__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07->enter($__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 185 + echo "

Forms

+ + "; + // line 187 + if (twig_length_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array()))) { + // line 188 + echo "
+
    + "; + // line 190 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); + foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { + // line 191 + echo " "; + echo $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"]->getform_tree_entry($context["formName"], $context["formData"], true); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 193 + echo "
+
+ +
+ "; + // line 197 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["formName"] => $context["formData"]) { + // line 198 + echo " "; + echo $context["__internal_b8d6c21993316c108cc3c0406ab0c15cbbc3b8aaf0862e3064536d87094a0a77"]->getform_tree_details($context["formName"], $context["formData"], $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "data", array()), "forms_by_hash", array()), $this->getAttribute($context["loop"], "first", array())); + echo " + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['formName'], $context['formData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 200 + echo "
+ "; + } else { + // line 202 + echo "
+

No forms were submitted for this request.

+
+ "; + } + // line 206 + echo " + +"; + + $__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07->leave($__internal_10a6423999d2b22d206f162a5269fd24ad32634784f0b0c1ce083cea30408b07_prof); + + + $__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1->leave($__internal_cd59a293cfe5cd929c439d883cddc04298259e815a32252be62575446c821fc1_prof); + + } + + // line 426 + public function getform_tree_entry($__name__ = null, $__data__ = null, $__is_root__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "name" => $__name__, + "data" => $__data__, + "is_root" => $__is_root__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f->enter($__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_entry")); + + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79->enter($__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_entry")); + + // line 427 + echo " "; + $context["tree"] = $this; + // line 428 + echo " "; + $context["has_error"] = ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0)); + // line 429 + echo "
  • +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-details\"> + "; + // line 431 + if ((isset($context["has_error"]) ? $context["has_error"] : $this->getContext($context, "has_error"))) { + // line 432 + echo "
    "; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())), "html", null, true); + echo "
    + "; + } + // line 434 + echo " + "; + // line 435 + if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { + // line 436 + echo " env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-children\" href=\"#\"> + "; + } else { + // line 438 + echo "
    + "; + } + // line 440 + echo " + getContext($context, "has_error")) || (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array()), false)) : (false)))) { + echo "class=\"has-error\""; + } + echo "> + "; + // line 442 + echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); + echo " + +
    + + "; + // line 446 + if ( !twig_test_empty($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array()))) { + // line 447 + echo "
      env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-children\" "; + if (( !(isset($context["is_root"]) ? $context["is_root"] : $this->getContext($context, "is_root")) && !(($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "has_children_error", array()), false)) : (false)))) { + echo "class=\"hidden\""; + } + echo "> + "; + // line 448 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); + foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { + // line 449 + echo " "; + echo $context["tree"]->getform_tree_entry($context["childName"], $context["childData"], false); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 451 + echo "
    + "; + } + // line 453 + echo "
  • +"; + + $__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79->leave($__internal_9eab8ec5c2f76e9c4196f8f1e416f0e1b227d5ae1b9cc4b2b1f56664b82f4b79_prof); + + + $__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f->leave($__internal_ebb86b61f30a751fdb7c9091902f4b3c0bfa6a8e1a194dc5a730cd9d97aa905f_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 456 + public function getform_tree_details($__name__ = null, $__data__ = null, $__forms_by_hash__ = null, $__show__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "name" => $__name__, + "data" => $__data__, + "forms_by_hash" => $__forms_by_hash__, + "show" => $__show__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f->enter($__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_details")); + + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8->enter($__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "form_tree_details")); + + // line 457 + echo " "; + $context["tree"] = $this; + // line 458 + echo "
    getContext($context, "show")), false)) : (false))) { + echo " hidden"; + } + echo "\" "; + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "id", array(), "any", true, true)) { + echo "id=\""; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-details\""; + } + echo "> +

    + "; + // line 460 + echo twig_escape_filter($this->env, ((array_key_exists("name", $context)) ? (_twig_default_filter((isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "(no name)")) : ("(no name)")), "html", null, true); + echo " "; + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "type_class", array(), "any", true, true)) { + echo "("; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "type_class", array()))); + echo ")"; + } + // line 461 + echo "

    + + "; + // line 463 + if (($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "errors", array(), "any", true, true) && (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())) > 0))) { + // line 464 + echo "
    +

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-errors\" href=\"#\"> + Errors + +

    + + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-errors\"> + + + + + + + + + "; + // line 480 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "errors", array())); + foreach ($context['_seq'] as $context["_key"] => $context["error"]) { + // line 481 + echo " + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['error'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 504 + echo " +
    MessageOriginCause
    "; + // line 482 + echo twig_escape_filter($this->env, $this->getAttribute($context["error"], "message", array()), "html", null, true); + echo " + "; + // line 484 + if (twig_test_empty($this->getAttribute($context["error"], "origin", array()))) { + // line 485 + echo " This form. + "; + } elseif ( !$this->getAttribute( // line 486 +(isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : null), $this->getAttribute($context["error"], "origin", array()), array(), "array", true, true)) { + // line 487 + echo " Unknown. + "; + } else { + // line 489 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash")), $this->getAttribute($context["error"], "origin", array()), array(), "array"), "name", array()), "html", null, true); + echo " + "; + } + // line 491 + echo " + "; + // line 493 + if ($this->getAttribute($context["error"], "trace", array())) { + // line 494 + echo " Caused by: + "; + // line 495 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["error"], "trace", array())); + foreach ($context['_seq'] as $context["_key"] => $context["stacked"]) { + // line 496 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["stacked"])); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['stacked'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 498 + echo " "; + } else { + // line 499 + echo " Unknown. + "; + } + // line 501 + echo "
    +
    + "; + } + // line 508 + echo " + "; + // line 509 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", true, true)) { + // line 510 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-default_data\" href=\"#\"> + Default Data + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-default_data\"> + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Model Format + "; + // line 528 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "model", array(), "any", true, true)) { + // line 529 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "model", array()))); + echo " + "; + } else { + // line 531 + echo " same as normalized format + "; + } + // line 533 + echo "
    Normalized Format"; + // line 537 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "norm", array()))); + echo "
    View Format + "; + // line 542 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "default_data", array(), "any", false, true), "view", array(), "any", true, true)) { + // line 543 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "default_data", array()), "view", array()))); + echo " + "; + } else { + // line 545 + echo " same as normalized format + "; + } + // line 547 + echo "
    +
    + "; + } + // line 553 + echo " + "; + // line 554 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", true, true)) { + // line 555 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-submitted_data\" href=\"#\"> + Submitted Data + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-submitted_data\"> + "; + // line 562 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "norm", array(), "any", true, true)) { + // line 563 + echo " + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    View Format + "; + // line 574 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "view", array(), "any", true, true)) { + // line 575 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "view", array()))); + echo " + "; + } else { + // line 577 + echo " same as normalized format + "; + } + // line 579 + echo "
    Normalized Format"; + // line 583 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "norm", array()))); + echo "
    Model Format + "; + // line 588 + if ($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "submitted_data", array(), "any", false, true), "model", array(), "any", true, true)) { + // line 589 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "submitted_data", array()), "model", array()))); + echo " + "; + } else { + // line 591 + echo " same as normalized format + "; + } + // line 593 + echo "
    + "; + } else { + // line 598 + echo "
    +

    This form was not submitted.

    +
    + "; + } + // line 602 + echo "
    + "; + } + // line 604 + echo " + "; + // line 605 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "passed_options", array(), "any", true, true)) { + // line 606 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-passed_options\" href=\"#\"> + Passed Options + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-passed_options\"> + "; + // line 613 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array()))) { + // line 614 + echo " + + + + + + + + + "; + // line 623 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "passed_options", array())); + foreach ($context['_seq'] as $context["option"] => $context["value"]) { + // line 624 + echo " + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 636 + echo " +
    OptionPassed ValueResolved Value
    "; + // line 625 + echo twig_escape_filter($this->env, $context["option"], "html", null, true); + echo ""; + // line 626 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo " + "; + // line 628 + if (($this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array") == $context["value"])) { + // line 629 + echo " same as passed value + "; + } else { + // line 631 + echo " "; + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array()), $context["option"], array(), "array"))); + echo " + "; + } + // line 633 + echo "
    + "; + } else { + // line 639 + echo "
    +

    No options where passed when constructing this form.

    +
    + "; + } + // line 643 + echo "
    + "; + } + // line 645 + echo " + "; + // line 646 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "resolved_options", array(), "any", true, true)) { + // line 647 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-resolved_options\" href=\"#\"> + Resolved Options + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-resolved_options\" class=\"hidden\"> + + + + + + + + + "; + // line 662 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "resolved_options", array())); + foreach ($context['_seq'] as $context["option"] => $context["value"]) { + // line 663 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['option'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 668 + echo " +
    OptionValue
    "; + // line 664 + echo twig_escape_filter($this->env, $context["option"], "html", null, true); + echo ""; + // line 665 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo "
    +
    + "; + } + // line 672 + echo " + "; + // line 673 + if ($this->getAttribute((isset($context["data"]) ? $context["data"] : null), "view_vars", array(), "any", true, true)) { + // line 674 + echo "

    + env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-view_vars\" href=\"#\"> + View Variables + +

    + +
    env, $this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "id", array()), "html", null, true); + echo "-view_vars\" class=\"hidden\"> + + + + + + + + + "; + // line 689 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "view_vars", array())); + foreach ($context['_seq'] as $context["variable"] => $context["value"]) { + // line 690 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['variable'], $context['value'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 695 + echo " +
    VariableValue
    "; + // line 691 + echo twig_escape_filter($this->env, $context["variable"], "html", null, true); + echo ""; + // line 692 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $context["value"])); + echo "
    +
    + "; + } + // line 699 + echo "
    + + "; + // line 701 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["data"]) ? $context["data"] : $this->getContext($context, "data")), "children", array())); + foreach ($context['_seq'] as $context["childName"] => $context["childData"]) { + // line 702 + echo " "; + echo $context["tree"]->getform_tree_details($context["childName"], $context["childData"], (isset($context["forms_by_hash"]) ? $context["forms_by_hash"] : $this->getContext($context, "forms_by_hash"))); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['childName'], $context['childData'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8->leave($__internal_3edafda329fbd22a6d0a21fecf1e5376e4c9058a79a73e596d71d40e7a609ab8_prof); + + + $__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f->leave($__internal_965d50f2402961db118b27c0a3d9024dbcecbd2c97dc0f9adba99a8720aa9b2f_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/form.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1266 => 702, 1262 => 701, 1258 => 699, 1252 => 695, 1243 => 692, 1239 => 691, 1236 => 690, 1232 => 689, 1220 => 680, 1212 => 675, 1209 => 674, 1207 => 673, 1204 => 672, 1198 => 668, 1189 => 665, 1185 => 664, 1182 => 663, 1178 => 662, 1166 => 653, 1158 => 648, 1155 => 647, 1153 => 646, 1150 => 645, 1146 => 643, 1140 => 639, 1135 => 636, 1127 => 633, 1121 => 631, 1117 => 629, 1115 => 628, 1110 => 626, 1106 => 625, 1103 => 624, 1099 => 623, 1088 => 614, 1086 => 613, 1082 => 612, 1074 => 607, 1071 => 606, 1069 => 605, 1066 => 604, 1062 => 602, 1056 => 598, 1049 => 593, 1045 => 591, 1039 => 589, 1037 => 588, 1029 => 583, 1023 => 579, 1019 => 577, 1013 => 575, 1011 => 574, 998 => 563, 996 => 562, 992 => 561, 984 => 556, 981 => 555, 979 => 554, 976 => 553, 968 => 547, 964 => 545, 958 => 543, 956 => 542, 948 => 537, 942 => 533, 938 => 531, 932 => 529, 930 => 528, 915 => 516, 907 => 511, 904 => 510, 902 => 509, 899 => 508, 893 => 504, 885 => 501, 881 => 499, 878 => 498, 869 => 496, 865 => 495, 862 => 494, 860 => 493, 856 => 491, 850 => 489, 846 => 487, 844 => 486, 841 => 485, 839 => 484, 834 => 482, 831 => 481, 827 => 480, 815 => 471, 807 => 466, 803 => 464, 801 => 463, 797 => 461, 789 => 460, 775 => 458, 772 => 457, 751 => 456, 729 => 453, 725 => 451, 716 => 449, 712 => 448, 703 => 447, 701 => 446, 694 => 442, 688 => 441, 685 => 440, 681 => 438, 675 => 436, 673 => 435, 670 => 434, 664 => 432, 662 => 431, 658 => 430, 655 => 429, 652 => 428, 649 => 427, 629 => 426, 401 => 206, 395 => 202, 391 => 200, 374 => 198, 357 => 197, 351 => 193, 342 => 191, 338 => 190, 334 => 188, 332 => 187, 328 => 185, 319 => 184, 168 => 43, 159 => 42, 148 => 39, 142 => 36, 139 => 35, 137 => 34, 132 => 32, 125 => 31, 116 => 30, 103 => 26, 100 => 25, 92 => 22, 85 => 18, 81 => 16, 79 => 15, 76 => 14, 70 => 11, 64 => 9, 61 => 8, 58 => 7, 55 => 6, 46 => 5, 36 => 1, 34 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% from _self import form_tree_entry, form_tree_details %} + +{% block toolbar %} + {% if collector.data.nb_errors > 0 or collector.data.forms|length %} + {% set status_color = collector.data.nb_errors ? 'red' : '' %} + {% set icon %} + {{ include('@WebProfiler/Icon/form.svg') }} + + {{ collector.data.nb_errors ?: collector.data.forms|length }} + + {% endset %} + + {% set text %} +
    + Number of forms + {{ collector.data.forms|length }} +
    +
    + Number of errors + 0 ? 'red' }}\">{{ collector.data.nb_errors }} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/form.svg') }} + Forms + {% if collector.data.nb_errors > 0 %} + + {{ collector.data.nb_errors }} + + {% endif %} + +{% endblock %} + +{% block head %} + {{ parent() }} + + +{% endblock %} + +{% block panel %} +

    Forms

    + + {% if collector.data.forms|length %} +
    +
      + {% for formName, formData in collector.data.forms %} + {{ form_tree_entry(formName, formData, true) }} + {% endfor %} +
    +
    + +
    + {% for formName, formData in collector.data.forms %} + {{ form_tree_details(formName, formData, collector.data.forms_by_hash, loop.first) }} + {% endfor %} +
    + {% else %} +
    +

    No forms were submitted for this request.

    +
    + {% endif %} + + +{% endblock %} + +{% macro form_tree_entry(name, data, is_root) %} + {% import _self as tree %} + {% set has_error = data.errors is defined and data.errors|length > 0 %} +
  • +
    + {% if has_error %} +
    {{ data.errors|length }}
    + {% endif %} + + {% if data.children is not empty %} + + {% else %} +
    + {% endif %} + + + {{ name|default('(no name)') }} + +
    + + {% if data.children is not empty %} +
      + {% for childName, childData in data.children %} + {{ tree.form_tree_entry(childName, childData, false) }} + {% endfor %} +
    + {% endif %} +
  • +{% endmacro %} + +{% macro form_tree_details(name, data, forms_by_hash, show) %} + {% import _self as tree %} +
    +

    + {{ name|default('(no name)') }} {% if data.type_class is defined %}({{ profiler_dump(data.type_class) }}){% endif %} +

    + + {% if data.errors is defined and data.errors|length > 0 %} +
    +

    + + Errors + +

    + + + + + + + + + + + {% for error in data.errors %} + + + + + + {% endfor %} + +
    MessageOriginCause
    {{ error.message }} + {% if error.origin is empty %} + This form. + {% elseif forms_by_hash[error.origin] is not defined %} + Unknown. + {% else %} + {{ forms_by_hash[error.origin].name }} + {% endif %} + + {% if error.trace %} + Caused by: + {% for stacked in error.trace %} + {{ profiler_dump(stacked) }} + {% endfor %} + {% else %} + Unknown. + {% endif %} +
    +
    + {% endif %} + + {% if data.default_data is defined %} +

    + + Default Data + +

    + +
    + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Model Format + {% if data.default_data.model is defined %} + {{ profiler_dump(data.default_data.model) }} + {% else %} + same as normalized format + {% endif %} +
    Normalized Format{{ profiler_dump(data.default_data.norm) }}
    View Format + {% if data.default_data.view is defined %} + {{ profiler_dump(data.default_data.view) }} + {% else %} + same as normalized format + {% endif %} +
    +
    + {% endif %} + + {% if data.submitted_data is defined %} +

    + + Submitted Data + +

    + +
    + {% if data.submitted_data.norm is defined %} + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    View Format + {% if data.submitted_data.view is defined %} + {{ profiler_dump(data.submitted_data.view) }} + {% else %} + same as normalized format + {% endif %} +
    Normalized Format{{ profiler_dump(data.submitted_data.norm) }}
    Model Format + {% if data.submitted_data.model is defined %} + {{ profiler_dump(data.submitted_data.model) }} + {% else %} + same as normalized format + {% endif %} +
    + {% else %} +
    +

    This form was not submitted.

    +
    + {% endif %} +
    + {% endif %} + + {% if data.passed_options is defined %} +

    + + Passed Options + +

    + +
    + {% if data.passed_options|length %} + + + + + + + + + + {% for option, value in data.passed_options %} + + + + + + {% endfor %} + +
    OptionPassed ValueResolved Value
    {{ option }}{{ profiler_dump(value) }} + {% if data.resolved_options[option] == value %} + same as passed value + {% else %} + {{ profiler_dump(data.resolved_options[option]) }} + {% endif %} +
    + {% else %} +
    +

    No options where passed when constructing this form.

    +
    + {% endif %} +
    + {% endif %} + + {% if data.resolved_options is defined %} +

    + + Resolved Options + +

    + +
    + + + + + + + + + {% for option, value in data.resolved_options %} + + + + + {% endfor %} + +
    OptionValue
    {{ option }}{{ profiler_dump(value) }}
    +
    + {% endif %} + + {% if data.view_vars is defined %} +

    + + View Variables + +

    + +
    + + + + + + + + + {% for variable, value in data.view_vars %} + + + + + {% endfor %} + +
    VariableValue
    {{ variable }}{{ profiler_dump(value) }}
    +
    + {% endif %} +
    + + {% for childName, childData in data.children %} + {{ tree.form_tree_details(childName, childData, forms_by_hash) }} + {% endfor %} +{% endmacro %} +", "@WebProfiler/Collector/form.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/form.html.twig"); + } +} diff --git a/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php b/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php new file mode 100644 index 0000000000000000000000000000000000000000..1cfa657e0016042b60a2d999511c938ae621a206 --- /dev/null +++ b/var/cache/dev/twig/68/684455ca8b92a07290894ea31739e0de6921a7da33d85b10647e58bd8341b1d6.php @@ -0,0 +1,170 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900->enter($__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.html.twig")); + + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14->enter($__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.html.twig")); + + // line 1 + echo "
    + "; + // line 2 + if (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) > 0)) { + // line 3 + echo "

    + ["; + // line 4 + echo twig_escape_filter($this->env, (((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) - (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position"))) + 1), "html", null, true); + echo "/"; + echo twig_escape_filter($this->env, ((isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")) + 1), "html", null, true); + echo "] + "; + // line 5 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "class", array())); + echo ": "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFileFromText(nl2br(twig_escape_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "message", array()), "html", null, true))); + echo "  + "; + // line 6 + ob_start(); + // line 7 + echo " env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "', 'traces'); switchIcons('icon-traces-"; + echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-open', 'icon-traces-"; + echo twig_escape_filter($this->env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-close'); return false;\"> + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("inline") : ("none")); + echo "\" /> + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("none") : ("inline")); + echo "\" /> + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 12 + echo "

    + "; + } else { + // line 14 + echo "

    Stack Trace

    + "; + } + // line 16 + echo " + env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "\"> +
      env, (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "html", null, true); + echo "\" style=\"display: "; + echo (((0 == (isset($context["count"]) ? $context["count"] : $this->getContext($context, "count")))) ? ("block") : ("none")); + echo "\"> + "; + // line 19 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); + foreach ($context['_seq'] as $context["i"] => $context["trace"]) { + // line 20 + echo "
    1. + "; + // line 21 + $this->loadTemplate("@Twig/Exception/trace.html.twig", "@Twig/Exception/traces.html.twig", 21)->display(array("prefix" => (isset($context["position"]) ? $context["position"] : $this->getContext($context, "position")), "i" => $context["i"], "trace" => $context["trace"])); + // line 22 + echo "
    2. + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['i'], $context['trace'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 24 + echo "
    +
    +"; + + $__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900->leave($__internal_1846af21621eba8f6d1cde5e101cd668db81846cc28c140a243bf6fd711cc900_prof); + + + $__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14->leave($__internal_d7fd26aedefcfb6d60b5cc4a328fcebe2368d3a9228f31593d0a069ef168be14_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 107 => 24, 100 => 22, 98 => 21, 95 => 20, 91 => 19, 85 => 18, 81 => 17, 78 => 16, 74 => 14, 70 => 12, 62 => 9, 56 => 8, 47 => 7, 45 => 6, 39 => 5, 33 => 4, 30 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    + {% if count > 0 %} +

    + [{{ count - position + 1 }}/{{ count + 1 }}] + {{ exception.class|abbr_class }}: {{ exception.message|nl2br|format_file_from_text }}  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +

    + {% else %} +

    Stack Trace

    + {% endif %} + + +
      + {% for i, trace in exception.trace %} +
    1. + {% include '@Twig/Exception/trace.html.twig' with { 'prefix': position, 'i': i, 'trace': trace } only %} +
    2. + {% endfor %} +
    +
    +", "@Twig/Exception/traces.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces.html.twig"); + } +} diff --git a/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php b/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php new file mode 100644 index 0000000000000000000000000000000000000000..8e86751a0b99ec94af0aff7bfc5252711da21819 --- /dev/null +++ b/var/cache/dev/twig/6a/6aa106992488431779a7c0ceb31941baaa573d420c90e339d0f948b6de0a18e4.php @@ -0,0 +1,149 @@ +parent = false; + + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1->enter($__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base.html.twig")); + + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e->enter($__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base.html.twig")); + + // line 1 + echo " + + + env, $this->env->getCharset(), "html", null, true); + echo "\" /> + + + Symfony Profiler + + + "; + // line 10 + $this->displayBlock('head', $context, $blocks); + // line 15 + echo " + + "; + // line 17 + $this->displayBlock('body', $context, $blocks); + // line 18 + echo " + +"; + + $__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1->leave($__internal_d88d921acfae764324e21d5cd96a5e9e4b214978a15d55d61c8aa2450f665ac1_prof); + + + $__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e->leave($__internal_db1a1ed01268bf64b1b52997a1876707bbbf8643401a7a08950bad077218ca5e_prof); + + } + + // line 10 + public function block_head($context, array $blocks = array()) + { + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a->enter($__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356->enter($__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 11 + echo " + "; + + $__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356->leave($__internal_74010a04382397f61a5c50169b3e5dfd8aa4fef3b3a36c9ea0727604ac27d356_prof); + + + $__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a->leave($__internal_ad1613dc62e61a125223fa1208604b4a656f4924525f197db08f74000224b89a_prof); + + } + + // line 17 + public function block_body($context, array $blocks = array()) + { + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281->enter($__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac->enter($__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + echo ""; + + $__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac->leave($__internal_3d14de4106ef9f39bf413601c30dc6b69518dcb37c04339b8f0ac4fa3ad457ac_prof); + + + $__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281->leave($__internal_f552de1fac3e2685970140a8b01bfc8b7560be7c05b8d18109e67109435d5281_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 86 => 17, 73 => 12, 70 => 11, 61 => 10, 49 => 18, 47 => 17, 43 => 15, 41 => 10, 32 => 4, 27 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + Symfony Profiler + + + {% block head %} + + {% endblock %} + + + {% block body '' %} + + +", "@WebProfiler/Profiler/base.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base.html.twig"); + } +} diff --git a/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php b/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php new file mode 100644 index 0000000000000000000000000000000000000000..4f622b742819d2b13d2228f6494e2b07b19676b3 --- /dev/null +++ b/var/cache/dev/twig/70/700efbbb99184fa15f1c5707cfe4183fd9cc59259985e573cae4bd34041b305d.php @@ -0,0 +1,391 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/events.html.twig", 1); + $this->blocks = array( + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286->enter($__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/events.html.twig")); + + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282->enter($__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/events.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286->leave($__internal_7c8378b0ee5f6af31b994575a54b7ca33a85007dcaecad078ec64e68b99fb286_prof); + + + $__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282->leave($__internal_0f5571f72f79dbc850eb95986d8192124fde22b62bb8219cce12a8bbabd55282_prof); + + } + + // line 5 + public function block_menu($context, array $blocks = array()) + { + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e->enter($__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc->enter($__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 6 + echo " + "; + // line 7 + echo twig_include($this->env, $context, "@WebProfiler/Icon/event.svg"); + echo " + Events + +"; + + $__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc->leave($__internal_ed82e6e7ccb123325f51eb442821b067b6db15d711facef00b03c20e4cba7fdc_prof); + + + $__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e->leave($__internal_00d8de7fce166e0965027b3f19b51303e4b22df4eb8582e0c14ceec7136cc96e_prof); + + } + + // line 12 + public function block_panel($context, array $blocks = array()) + { + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3->enter($__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4->enter($__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 13 + echo "

    Event Dispatcher

    + + "; + // line 15 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array()))) { + // line 16 + echo "
    +

    No events have been recorded. Check that debugging is enabled in the kernel.

    +
    + "; + } else { + // line 20 + echo "
    +
    +

    Called Listeners "; + // line 22 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array())), "html", null, true); + echo "

    + +
    + "; + // line 25 + echo $context["helper"]->getrender_table($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "calledlisteners", array())); + echo " +
    +
    + +
    +

    Not Called Listeners "; + // line 30 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array())), "html", null, true); + echo "

    +
    + "; + // line 32 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array()))) { + // line 33 + echo "
    +

    + There are no uncalled listeners. +

    +

    + All listeners were called for this request or an error occurred + when trying to collect uncalled listeners (in which case check the + logs to get more information). +

    +
    + "; + } else { + // line 44 + echo " "; + echo $context["helper"]->getrender_table($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "notcalledlisteners", array())); + echo " + "; + } + // line 46 + echo "
    +
    +
    + "; + } + + $__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4->leave($__internal_baeedcb8adb3d061147b427fdfe32bbe83dd75adbb3ce83edf715f15f434d7c4_prof); + + + $__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3->leave($__internal_2942bc0416421073e32a454437b50b5935b751d0f2126b5b18cc27d1e98944c3_prof); + + } + + // line 52 + public function getrender_table($__listeners__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "listeners" => $__listeners__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8->enter($__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38->enter($__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "render_table")); + + // line 53 + echo " + + + + + + + + "; + // line 61 + $context["previous_event"] = $this->getAttribute(twig_first($this->env, (isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners"))), "event", array()); + // line 62 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["listeners"]) ? $context["listeners"] : $this->getContext($context, "listeners"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["listener"]) { + // line 63 + echo " "; + if (($this->getAttribute($context["loop"], "first", array()) || ($this->getAttribute($context["listener"], "event", array()) != (isset($context["previous_event"]) ? $context["previous_event"] : $this->getContext($context, "previous_event"))))) { + // line 64 + echo " "; + if ( !$this->getAttribute($context["loop"], "first", array())) { + // line 65 + echo " + "; + } + // line 67 + echo " + + + + + + "; + // line 73 + $context["previous_event"] = $this->getAttribute($context["listener"], "event", array()); + // line 74 + echo " "; + } + // line 75 + echo " + + + + + + "; + // line 81 + if ($this->getAttribute($context["loop"], "last", array())) { + // line 82 + echo " + "; + } + // line 84 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['listener'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 85 + echo "
    PriorityListener
    "; + // line 70 + echo twig_escape_filter($this->env, $this->getAttribute($context["listener"], "event", array()), "html", null, true); + echo "
    "; + // line 77 + echo twig_escape_filter($this->env, (($this->getAttribute($context["listener"], "priority", array(), "any", true, true)) ? (_twig_default_filter($this->getAttribute($context["listener"], "priority", array()), "-")) : ("-")), "html", null, true); + echo ""; + // line 78 + echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), array($this->env, $this->getAttribute($context["listener"], "data", array()))); + echo "
    +"; + + $__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38->leave($__internal_e163e4b2a766bc71f843f3d19c76f4e061fa64d556bbd0d4851e58c641cdaa38_prof); + + + $__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8->leave($__internal_d803a2c77192888d4adfe554ea30cd09ea6ffd5e6ff5b8399a790e46537acdf8_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/events.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 257 => 85, 243 => 84, 239 => 82, 237 => 81, 231 => 78, 227 => 77, 223 => 75, 220 => 74, 218 => 73, 212 => 70, 207 => 67, 203 => 65, 200 => 64, 197 => 63, 179 => 62, 177 => 61, 167 => 53, 149 => 52, 135 => 46, 129 => 44, 116 => 33, 114 => 32, 109 => 30, 101 => 25, 95 => 22, 91 => 20, 85 => 16, 83 => 15, 79 => 13, 70 => 12, 56 => 7, 53 => 6, 44 => 5, 34 => 1, 32 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/event.svg') }} + Events + +{% endblock %} + +{% block panel %} +

    Event Dispatcher

    + + {% if collector.calledlisteners is empty %} +
    +

    No events have been recorded. Check that debugging is enabled in the kernel.

    +
    + {% else %} +
    +
    +

    Called Listeners {{ collector.calledlisteners|length }}

    + +
    + {{ helper.render_table(collector.calledlisteners) }} +
    +
    + +
    +

    Not Called Listeners {{ collector.notcalledlisteners|length }}

    +
    + {% if collector.notcalledlisteners is empty %} +
    +

    + There are no uncalled listeners. +

    +

    + All listeners were called for this request or an error occurred + when trying to collect uncalled listeners (in which case check the + logs to get more information). +

    +
    + {% else %} + {{ helper.render_table(collector.notcalledlisteners) }} + {% endif %} +
    +
    +
    + {% endif %} +{% endblock %} + +{% macro render_table(listeners) %} + + + + + + + + + {% set previous_event = (listeners|first).event %} + {% for listener in listeners %} + {% if loop.first or listener.event != previous_event %} + {% if not loop.first %} + + {% endif %} + + + + + + + {% set previous_event = listener.event %} + {% endif %} + + + + + + + {% if loop.last %} + + {% endif %} + {% endfor %} +
    PriorityListener
    {{ listener.event }}
    {{ listener.priority|default('-') }}{{ profiler_dump(listener.data) }}
    +{% endmacro %} +", "@WebProfiler/Collector/events.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/events.html.twig"); + } +} diff --git a/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php b/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php new file mode 100644 index 0000000000000000000000000000000000000000..ad29c182d80887138defe538b4d471d1f94e2340 --- /dev/null +++ b/var/cache/dev/twig/71/710e9393968554d60292077c43b00812505da9b56251552530b3f73f7347cacb.php @@ -0,0 +1,632 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'head' => array($this, 'block_head'), + 'body' => array($this, 'block_body'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df->enter($__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/layout.html.twig")); + + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7->enter($__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/layout.html.twig")); + + // line 1 + echo " + + + env, $this->env->getCharset(), "html", null, true); + echo "\" /> + + "; + // line 6 + $this->displayBlock('title', $context, $blocks); + echo " + + "; + // line 216 + $this->displayBlock('head', $context, $blocks); + // line 217 + echo " + +
    +
    +
    + "; + // line 222 + echo twig_include($this->env, $context, "@Twig/symfony.svg"); + echo " +
    + +
    +
    +
    + + + + + +
    +
    +
    +
    + +
    + "; + // line 247 + $this->displayBlock('body', $context, $blocks); + // line 248 + echo "
    +
    + + +"; + + $__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df->leave($__internal_718f3ef368a13451cc2afaa4153df0a7206951b8d1d69af67b2959cfb79046df_prof); + + + $__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7->leave($__internal_e3ed97b9b71de2d62de71c37c832e8a9fcaa17e63ca2eeb0fae9a664e91d4bd7_prof); + + } + + // line 6 + public function block_title($context, array $blocks = array()) + { + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc->enter($__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4->enter($__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + + $__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4->leave($__internal_5d93207505c9a79d20172be19c7a6c2f117209418a2bf169c9d639f3fed36cc4_prof); + + + $__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc->leave($__internal_7a6e0175913e8507cefb475f53fe332a35b0cec45fb434f17107ddd86a9136bc_prof); + + } + + // line 216 + public function block_head($context, array $blocks = array()) + { + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6->enter($__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c->enter($__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + + $__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c->leave($__internal_b8265eb0ecb43fc0a28f0b8f34b6d5c244323d68601e87037244bc0035e9303c_prof); + + + $__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6->leave($__internal_81268fe8a4119b5ef3a6766d71eeab0f852dc345d02ec3f23fa316cfe2cc41e6_prof); + + } + + // line 247 + public function block_body($context, array $blocks = array()) + { + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544->enter($__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb->enter($__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb->leave($__internal_91b8ece77fc22334932eb1a1dd4e43badace8a1e2f22b65cf4c68c4162165cfb_prof); + + + $__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544->leave($__internal_f5b479d436e75600b9921c4a68b463aef95863457913ce7d289d8f5cbc2cb544_prof); + + } + + public function getTemplateName() + { + return "@Twig/layout.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 338 => 247, 321 => 216, 304 => 6, 290 => 248, 288 => 247, 260 => 222, 253 => 217, 251 => 216, 38 => 6, 33 => 4, 28 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + {% block title %}{% endblock %} + + {% block head %}{% endblock %} + + +
    +
    +
    + {{ include('@Twig/symfony.svg') }} +
    + +
    +
    +
    + + + + + +
    +
    +
    +
    + +
    + {% block body %}{% endblock %} +
    +
    + + +", "@Twig/layout.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/layout.html.twig"); + } +} diff --git a/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php b/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php new file mode 100644 index 0000000000000000000000000000000000000000..197f81af4cf341320d5b776d8a5768f90936c860 --- /dev/null +++ b/var/cache/dev/twig/76/76aa8f8ebfc3831b1d00b6551dc4ef0f917279c6c94f490065a692a69c551eb5.php @@ -0,0 +1,66 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318->enter($__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/memory.svg")); + + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9->enter($__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/memory.svg")); + + // line 1 + echo " + + +"; + + $__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318->leave($__internal_92067934481a32aac63cfff680c5af5444b261086b1380fab050a0afb8039318_prof); + + + $__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9->leave($__internal_eaa804c801452a9be268805f947e67f2ce847407bd754c6edcf326527814dae9_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/memory.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/memory.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/memory.svg"); + } +} diff --git a/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php b/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php new file mode 100644 index 0000000000000000000000000000000000000000..fe3c68f3fe7c3d9a51c81ba06c19fbe44bf1f6d2 --- /dev/null +++ b/var/cache/dev/twig/78/783847b1ca7e30c87cf37b90088e60addec06fcf7d735ccb91f0b1aa857d95b1.php @@ -0,0 +1,155 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539->enter($__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.html.twig")); + + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247->enter($__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.html.twig")); + + // line 1 + if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { + // line 2 + echo " at + + env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "short_class", array()), "html", null, true); + echo " + "; + // line 5 + echo twig_escape_filter($this->env, ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())), "html", null, true); + echo " + + ("; + // line 7 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatArgs($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); + echo ") +"; + } + // line 9 + echo " +"; + // line 10 + if (((($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array())) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true)) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()))) { + // line 11 + echo " "; + echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) ? ("
    ") : ("")); + echo " + in "; + // line 12 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatFile($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); + echo "  + "; + // line 13 + ob_start(); + // line 14 + echo " env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "'); switchIcons('icon-"; + echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-open', 'icon-"; + echo twig_escape_filter($this->env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-close'); return false;\"> + env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-close\" alt=\"-\" src=\"data:image/gif;base64,R0lGODlhEgASAMQSANft94TG57Hb8GS44ez1+mC24IvK6ePx+Wa44dXs92+942e54o3L6W2844/M6dnu+P/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABIALAAAAAASABIAQAVCoCQBTBOd6Kk4gJhGBCTPxysJb44K0qD/ER/wlxjmisZkMqBEBW5NHrMZmVKvv9hMVsO+hE0EoNAstEYGxG9heIhCADs=\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("inline") : ("none")); + echo "\" /> + env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "-open\" alt=\"+\" src=\"data:image/gif;base64,R0lGODlhEgASAMQTANft99/v+Ga44bHb8ITG52S44dXs9+z1+uPx+YvK6WC24G+944/M6W28443L6dnu+Ge54v/+/l614P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAABMALAAAAAASABIAQAVS4DQBTiOd6LkwgJgeUSzHSDoNaZ4PU6FLgYBA5/vFID/DbylRGiNIZu74I0h1hNsVxbNuUV4d9SsZM2EzWe1qThVzwWFOAFCQFa1RQq6DJB4iIQA7\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("none") : ("inline")); + echo "\" /> + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 19 + echo "
    env, (((isset($context["prefix"]) ? $context["prefix"] : $this->getContext($context, "prefix")) . "-") . (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i"))), "html", null, true); + echo "\" style=\"display: "; + echo (((0 == (isset($context["i"]) ? $context["i"] : $this->getContext($context, "i")))) ? ("block") : ("none")); + echo "\" class=\"trace\"> + "; + // line 20 + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->fileExcerpt($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()), $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array())); + echo " +
    +"; + } + + $__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539->leave($__internal_3b1df29bfa668ba9e5fce4e7717fbef5fc9c6ab79edf1ece11adc2e3de4ed539_prof); + + + $__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247->leave($__internal_fb4d1335625491c346ea4c32ed7d954a0a0c928c07d431625aea3ec3f35c5247_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/trace.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 93 => 20, 86 => 19, 78 => 16, 72 => 15, 63 => 14, 61 => 13, 57 => 12, 52 => 11, 50 => 10, 47 => 9, 42 => 7, 37 => 5, 31 => 4, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if trace.function %} + at + + {{ trace.short_class }} + {{ trace.type ~ trace.function }} + + ({{ trace.args|format_args }}) +{% endif %} + +{% if trace.file is defined and trace.file and trace.line is defined and trace.line %} + {{ trace.function ? '
    ' : '' }} + in {{ trace.file|format_file(trace.line) }}  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +
    + {{ trace.file|file_excerpt(trace.line) }} +
    +{% endif %} +", "@Twig/Exception/trace.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/trace.html.twig"); + } +} diff --git a/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php b/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php new file mode 100644 index 0000000000000000000000000000000000000000..c1cdc7301ec05fd94317cad68fc6c13d264f96f8 --- /dev/null +++ b/var/cache/dev/twig/78/78480d71a349c1186a9e9e1d94bbfbe6d5d8e6a1af0c9744c2dd16e6c16ddd97.php @@ -0,0 +1,96 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0->enter($__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/logs.html.twig")); + + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d->enter($__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/logs.html.twig")); + + // line 1 + echo "
      + "; + // line 2 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["logs"]) ? $context["logs"] : $this->getContext($context, "logs"))); + foreach ($context['_seq'] as $context["_key"] => $context["log"]) { + // line 3 + echo " getAttribute($context["log"], "priority", array()) >= 400)) { + echo " class=\"error\""; + } elseif (($this->getAttribute($context["log"], "priority", array()) >= 300)) { + echo " class=\"warning\""; + } + echo "> + "; + // line 4 + echo twig_escape_filter($this->env, $this->getAttribute($context["log"], "priorityName", array()), "html", null, true); + echo " - "; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatLogMessage($this->getAttribute($context["log"], "message", array()), $this->getAttribute($context["log"], "context", array())); + echo " + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['log'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 7 + echo "
    +"; + + $__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0->leave($__internal_fe083ad41b5be40a0724e1ac99effb523c4720d246b2c01a32f98a8063bcdcf0_prof); + + + $__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d->leave($__internal_a9a374e4b5396aa800b45bc4610df90ec2ac243062b8bb5681e4bbbc2c65747d_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/logs.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 52 => 7, 41 => 4, 32 => 3, 28 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
      + {% for log in logs %} + = 400 %} class=\"error\"{% elseif log.priority >= 300 %} class=\"warning\"{% endif %}> + {{ log.priorityName }} - {{ log.message|format_log_message(log.context) }} + + {% endfor %} +
    +", "@Twig/Exception/logs.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/logs.html.twig"); + } +} diff --git a/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php b/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php new file mode 100644 index 0000000000000000000000000000000000000000..12020e43bd6d73112aaebfd99d208ddc54ca8e4e --- /dev/null +++ b/var/cache/dev/twig/82/8242eecaa242893b6005cc2f0df900ec4a15827a7b272a3d1a0bb7ea4e6f3fef.php @@ -0,0 +1,68 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068->enter($__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/ajax.svg")); + + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15->enter($__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Icon/ajax.svg")); + + // line 1 + echo " + + +"; + + $__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068->leave($__internal_9b6c1dcfc3f419e0991b51b03ee5e8e308d5466e82ad88d9ac6e2ca3d23f5068_prof); + + + $__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15->leave($__internal_9eebd8b2ae2f2bc3c2a69d4fab96d0e1cd0a7666a25c98c6b1d581da8d20fe15_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Icon/ajax.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@WebProfiler/Icon/ajax.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/ajax.svg"); + } +} diff --git a/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php b/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php new file mode 100644 index 0000000000000000000000000000000000000000..b81ebd8bf1e70685fd3546e63849df8272d74929 --- /dev/null +++ b/var/cache/dev/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php @@ -0,0 +1,259 @@ +parent = $this->loadTemplate("base.html.twig", "default/index.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'stylesheets' => array($this, 'block_stylesheets'), + ); + } + + protected function doGetParent(array $context) + { + return "base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3->enter($__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399->enter($__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3->leave($__internal_4207c2f0c226a6dc071177e04aac14756c1c6cb093d5adb48da4863e25a8e4b3_prof); + + + $__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399->leave($__internal_d61f1f9aaad3d1935fe744021b765fcf9df407db91ce652485345f648a6e1399_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7->enter($__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281->enter($__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo "
    +
    +
    +

    Welcome to Symfony "; + // line 7 + echo twig_escape_filter($this->env, twig_constant("Symfony\\Component\\HttpKernel\\Kernel::VERSION"), "html", null, true); + echo "

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["base_dir"]) ? $context["base_dir"] : $this->getContext($context, "base_dir")), "html", null, true); + echo " +

    +
    + + + +
    +
    +"; + + $__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281->leave($__internal_4c2efa29385f33045f097b6a69401261ee4a8aa6a2dcfec859b22ad02c3ef281_prof); + + + $__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7->leave($__internal_9515f75ad750809f0751c07c60466b51569698ae3ad21aefaf3fa067e9d3c2c7_prof); + + } + + // line 49 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630->enter($__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648->enter($__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + // line 50 + echo " +"; + + $__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648->leave($__internal_aee6ee3d277605301911ebf19322d1c07c35ee1186857285f5e9d95fb9783648_prof); + + + $__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630->leave($__internal_0db0f48386545c0687814cb06d18e04428dd2620dd767c9070fd9d453a959630_prof); + + } + + public function getTemplateName() + { + return "default/index.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 121 => 50, 112 => 49, 93 => 39, 66 => 15, 55 => 7, 50 => 4, 41 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends 'base.html.twig' %} + +{% block body %} +
    +
    +
    +

    Welcome to Symfony {{ constant('Symfony\\\\Component\\\\HttpKernel\\\\Kernel::VERSION') }}

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + {{ base_dir }} +

    +
    + +
    +

    What's next?

    +

    + + + + + Read the documentation to learn + + How to create your first page in Symfony + +

    +
    + +
    +
    +{% endblock %} + +{% block stylesheets %} + +{% endblock %} +", "default/index.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/default/index.html.twig"); + } +} diff --git a/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php b/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php new file mode 100644 index 0000000000000000000000000000000000000000..80fc822a55fe6a768011918363ce2c16c52c94a8 --- /dev/null +++ b/var/cache/dev/twig/89/89f0da69e055139e63028692d494d2251cb7431a28b744c4b0f2ef398adf4224.php @@ -0,0 +1,81 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3->enter($__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.txt.twig")); + + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879->enter($__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces.txt.twig")); + + // line 1 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array()))) { + // line 2 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "trace", array())); + foreach ($context['_seq'] as $context["_key"] => $context["trace"]) { + // line 3 + $this->loadTemplate("@Twig/Exception/trace.txt.twig", "@Twig/Exception/traces.txt.twig", 3)->display(array("trace" => $context["trace"])); + // line 4 + echo " +"; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['trace'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + } + + $__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3->leave($__internal_7952e386e17971ee3a0eea1d595d4f6adf4d02d8181fa74f7007bbd8868fbdc3_prof); + + + $__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879->leave($__internal_31813d4493e10a354a12d499cc023af054bd3d0f9a298605a912ee0bd2f36879_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces.txt.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 33 => 4, 31 => 3, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if exception.trace|length %} +{% for trace in exception.trace %} +{% include '@Twig/Exception/trace.txt.twig' with { 'trace': trace } only %} + +{% endfor %} +{% endif %} +", "@Twig/Exception/traces.txt.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces.txt.twig"); + } +} diff --git a/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php b/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php new file mode 100644 index 0000000000000000000000000000000000000000..302883ff4d342d49151c2b3dc5b2caacbdb12475 --- /dev/null +++ b/var/cache/dev/twig/a5/a5dcc9d8f5ded7617788fd56ecce368c7c43c1c541d63b5001faabcaa1a10af3.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8->enter($__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/symfony.svg")); + + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a->enter($__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/symfony.svg")); + + // line 1 + echo " + + + + + + +"; + + $__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8->leave($__internal_324a2e5fd4529f23886f37e9b40dddb51e6b66ccd0815c56290cc4528c2190e8_prof); + + + $__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a->leave($__internal_9caab5e7a8ae41efdc31aa708066da15330f04c30601631b214013e8db380a4a_prof); + + } + + public function getTemplateName() + { + return "@Twig/symfony.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + +", "@Twig/symfony.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/symfony.svg"); + } +} diff --git a/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php b/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php new file mode 100644 index 0000000000000000000000000000000000000000..e529e859a76132a88fbdce82959e78d020e40210 --- /dev/null +++ b/var/cache/dev/twig/a7/a725c15b7ba8cd50acb2e2370a28bf8865eb1542240f4ad7fde929cd91e5b5f1.php @@ -0,0 +1,1628 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/time.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + 'panelContent' => array($this, 'block_panelContent'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c->enter($__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/time.html.twig")); + + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6->enter($__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/time.html.twig")); + + // line 3 + $context["helper"] = $this; + // line 5 + if ( !array_key_exists("colors", $context)) { + // line 6 + $context["colors"] = array("default" => "#999", "section" => "#444", "event_listener" => "#00B8F5", "event_listener_loading" => "#00B8F5", "template" => "#66CC00", "doctrine" => "#FF6633", "propel" => "#FF6633"); + } + // line 1 + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c->leave($__internal_7eef3ae5aa1b2d8139d9bc9a202061cc839b3045d8d494666bf18737fff5f27c_prof); + + + $__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6->leave($__internal_ef38ea481042d90a9b840c1f89fecdf91fd0f6245a710dcdc8f548a14195f6d6_prof); + + } + + // line 17 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a->enter($__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78->enter($__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 18 + echo " "; + $context["total_time"] = ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) ? (sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array()))) : ("n/a")); + // line 19 + echo " "; + $context["initialization_time"] = ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) ? (sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inittime", array()))) : ("n/a")); + // line 20 + echo " "; + $context["status_color"] = (((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array())) && ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array()) > 1000))) ? ("yellow") : ("")); + // line 21 + echo " + "; + // line 22 + ob_start(); + // line 23 + echo " "; + echo twig_include($this->env, $context, "@WebProfiler/Icon/time.svg"); + echo " + "; + // line 24 + echo twig_escape_filter($this->env, (isset($context["total_time"]) ? $context["total_time"] : $this->getContext($context, "total_time")), "html", null, true); + echo " + ms + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 27 + echo " + "; + // line 28 + ob_start(); + // line 29 + echo "
    + Total time + "; + // line 31 + echo twig_escape_filter($this->env, (isset($context["total_time"]) ? $context["total_time"] : $this->getContext($context, "total_time")), "html", null, true); + echo " ms +
    +
    + Initialization time + "; + // line 35 + echo twig_escape_filter($this->env, (isset($context["initialization_time"]) ? $context["initialization_time"] : $this->getContext($context, "initialization_time")), "html", null, true); + echo " ms +
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 38 + echo " + "; + // line 39 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "status" => (isset($context["status_color"]) ? $context["status_color"] : $this->getContext($context, "status_color")))); + echo " +"; + + $__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78->leave($__internal_4e6a336285defdc30884445813a95ae15f811de2f946018d4187a6e65013fa78_prof); + + + $__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a->leave($__internal_5ed6c48bbd7c785eb64164c063e356706f205f7638c815c7ad342e463121e01a_prof); + + } + + // line 42 + public function block_menu($context, array $blocks = array()) + { + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93->enter($__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25->enter($__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 43 + echo " + "; + // line 44 + echo twig_include($this->env, $context, "@WebProfiler/Icon/time.svg"); + echo " + Performance + +"; + + $__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25->leave($__internal_9595290b7705e4193510d7b54d8abd33173ff5989242d00ff55b293e80fd1a25_prof); + + + $__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93->leave($__internal_6b3559c26e925f981783866ccce62edff5fb6b7ead72a5a3cf34f16a1f2ebb93_prof); + + } + + // line 49 + public function block_panel($context, array $blocks = array()) + { + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c->enter($__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64->enter($__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 50 + echo "

    Performance metrics

    + +
    +
    + "; + // line 54 + echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "duration", array())), "html", null, true); + echo " ms + Total execution time +
    + +
    + "; + // line 59 + echo twig_escape_filter($this->env, sprintf("%.0f", $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "inittime", array())), "html", null, true); + echo " ms + Symfony initialization +
    + + "; + // line 63 + if ($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array()), "memory", array())) { + // line 64 + echo "
    + "; + // line 65 + echo twig_escape_filter($this->env, sprintf("%.2f", (($this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "collectors", array()), "memory", array()), "memory", array()) / 1024) / 1024)), "html", null, true); + echo " MB + Peak memory usage +
    + "; + } + // line 69 + echo " + "; + // line 70 + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 0)) { + // line 71 + echo "
    + +
    + "; + // line 74 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo " + Sub-Request"; + // line 75 + echo (((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 1)) ? ("s") : ("")); + echo " +
    + + "; + // line 78 + $context["subrequests_time"] = 0; + // line 79 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 80 + echo " "; + $context["subrequests_time"] = ((isset($context["subrequests_time"]) ? $context["subrequests_time"] : $this->getContext($context, "subrequests_time")) + $this->getAttribute($this->getAttribute($this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "time"), "method"), "events", array()), "__section__", array()), "duration", array())); + // line 81 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 82 + echo " +
    + "; + // line 84 + echo twig_escape_filter($this->env, (isset($context["subrequests_time"]) ? $context["subrequests_time"] : $this->getContext($context, "subrequests_time")), "html", null, true); + echo " ms + Sub-Request"; + // line 85 + echo (((twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 1)) ? ("s") : ("")); + echo " time +
    + "; + } + // line 88 + echo "
    + +

    Execution timeline

    + + "; + // line 92 + if (twig_test_empty($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()))) { + // line 93 + echo "
    +

    No timing events have been recorded. Are you sure that debugging is enabled in the kernel?

    +
    + "; + } else { + // line 97 + echo " "; + $this->displayBlock("panelContent", $context, $blocks); + echo " + "; + } + + $__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64->leave($__internal_e7f88ff5c71bc3bc9d6df16b68a0b188008bcf18f1a3208a1be61e7a319b0b64_prof); + + + $__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c->leave($__internal_2a00aa0ade99fc2cf12239a5184de6a90ab639725d53f5c000ca10e6d6312f7c_prof); + + } + + // line 101 + public function block_panelContent($context, array $blocks = array()) + { + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957->enter($__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); + + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4->enter($__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panelContent")); + + // line 102 + echo "
    + + + ms + (timeline only displays events with a duration longer than this threshold) +
    + + "; + // line 109 + if ($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array())) { + // line 110 + echo "

    + Sub-Request "; + // line 111 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "getcollector", array(0 => "request"), "method"), "requestattributes", array()), "get", array(0 => "_controller"), "method"), "html", null, true); + echo " + + "; + // line 113 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), "__section__", array()), "duration", array()), "html", null, true); + echo " ms + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "parent", array()), "token", array()), "panel" => "time")), "html", null, true); + echo "\">Return to parent request + +

    + "; + } elseif ((twig_length_filter($this->env, $this->getAttribute( // line 117 +(isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())) > 0)) { + // line 118 + echo "

    + Main Request "; + // line 119 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), "__section__", array()), "duration", array()), "html", null, true); + echo " ms +

    + "; + } + // line 122 + echo " + "; + // line 123 + echo $context["helper"]->getdisplay_timeline(("timeline_" . (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))), $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "events", array()), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + echo " + + "; + // line 125 + if (twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array()))) { + // line 126 + echo "

    Note: sections with a striped background correspond to sub-requests.

    + +

    Sub-requests ("; + // line 128 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())), "html", null, true); + echo ")

    + + "; + // line 130 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["profile"]) ? $context["profile"] : $this->getContext($context, "profile")), "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["child"]) { + // line 131 + echo " "; + $context["events"] = $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "time"), "method"), "events", array()); + // line 132 + echo "

    + env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => $this->getAttribute($context["child"], "token", array()), "panel" => "time")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute($context["child"], "getcollector", array(0 => "request"), "method"), "identifier", array()), "html", null, true); + echo " + "; + // line 134 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "duration", array()), "html", null, true); + echo " ms +

    + + "; + // line 137 + echo $context["helper"]->getdisplay_timeline(("timeline_" . $this->getAttribute($context["child"], "token", array())), (isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), (isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['child'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 139 + echo " "; + } + // line 140 + echo " + +"; + + $__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4->leave($__internal_c2479e8113845898cdcc85f1e3ed1b18e6209a1679e4f6e4114dba29993147d4_prof); + + + $__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957->leave($__internal_e3d2f651ebb20ff7e30a537a9f0334eeeab602e93872dab46025e1e774175957_prof); + + } + + // line 501 + public function getdump_request_data($__token__ = null, $__profile__ = null, $__events__ = null, $__origin__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "token" => $__token__, + "profile" => $__profile__, + "events" => $__events__, + "origin" => $__origin__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df->enter($__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_request_data")); + + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6->enter($__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_request_data")); + + // line 503 + $context["__internal_c2b0b8c4bf0582ea660fc61a9948623449aba18d720f511079fc4e9933c4a496"] = $this; + // line 504 + echo " { + \"id\": \""; + // line 505 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "js", null, true); + echo "\", + \"left\": "; + // line 506 + echo twig_escape_filter($this->env, sprintf("%F", ($this->getAttribute($this->getAttribute((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events")), "__section__", array()), "origin", array()) - (isset($context["origin"]) ? $context["origin"] : $this->getContext($context, "origin")))), "js", null, true); + echo ", + \"events\": [ +"; + // line 508 + echo $context["__internal_c2b0b8c4bf0582ea660fc61a9948623449aba18d720f511079fc4e9933c4a496"]->getdump_events((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); + echo " + ] + } +"; + + $__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6->leave($__internal_2d4f489eca75874416452d823b3522b89850953f68d37ca98a54509b850329c6_prof); + + + $__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df->leave($__internal_1514ccbf9647beded6eb5b8bfe32e6f0e77cc52b0f949b20973905294bf3b0df_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 514 + public function getdump_events($__events__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "events" => $__events__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801->enter($__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_events")); + + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70->enter($__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "dump_events")); + + // line 516 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["events"]) ? $context["events"] : $this->getContext($context, "events"))); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["name"] => $context["event"]) { + // line 517 + if (("__section__" != $context["name"])) { + // line 518 + echo " { + \"name\": \""; + // line 519 + echo twig_escape_filter($this->env, $context["name"], "js", null, true); + echo "\", + \"category\": \""; + // line 520 + echo twig_escape_filter($this->env, $this->getAttribute($context["event"], "category", array()), "js", null, true); + echo "\", + \"origin\": "; + // line 521 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "origin", array())), "js", null, true); + echo ", + \"starttime\": "; + // line 522 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "starttime", array())), "js", null, true); + echo ", + \"endtime\": "; + // line 523 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "endtime", array())), "js", null, true); + echo ", + \"duration\": "; + // line 524 + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["event"], "duration", array())), "js", null, true); + echo ", + \"memory\": "; + // line 525 + echo twig_escape_filter($this->env, sprintf("%.1F", (($this->getAttribute($context["event"], "memory", array()) / 1024) / 1024)), "js", null, true); + echo ", + \"periods\": ["; + // line 527 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["event"], "periods", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["period"]) { + // line 528 + echo "{\"start\": "; + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "starttime", array())), "js", null, true); + echo ", \"end\": "; + echo twig_escape_filter($this->env, sprintf("%F", $this->getAttribute($context["period"], "endtime", array())), "js", null, true); + echo "}"; + echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (", ")); + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['period'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 530 + echo "] + }"; + // line 531 + echo (($this->getAttribute($context["loop"], "last", array())) ? ("") : (",")); + echo " +"; + } + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['name'], $context['event'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70->leave($__internal_b9372784d56a7e9c4ec30f2cb4e0527a0cca8b8fa41944946684d746129b8f70_prof); + + + $__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801->leave($__internal_ea79903c47345359886532714d6ce3562c9c929e8c557bf083c5c7696de76801_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + // line 537 + public function getdisplay_timeline($__id__ = null, $__events__ = null, $__colors__ = null, ...$__varargs__) + { + $context = $this->env->mergeGlobals(array( + "id" => $__id__, + "events" => $__events__, + "colors" => $__colors__, + "varargs" => $__varargs__, + )); + + $blocks = array(); + + ob_start(); + try { + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5->enter($__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_timeline")); + + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf->enter($__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf_prof = new Twig_Profiler_Profile($this->getTemplateName(), "macro", "display_timeline")); + + // line 538 + echo "
    +
    + "; + // line 540 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["colors"]) ? $context["colors"] : $this->getContext($context, "colors"))); + foreach ($context['_seq'] as $context["category"] => $context["color"]) { + // line 541 + echo " env, $context["color"], "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $context["category"], "html", null, true); + echo " + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['category'], $context['color'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 543 + echo "
    + env, (isset($context["id"]) ? $context["id"] : $this->getContext($context, "id")), "html", null, true); + echo "\" class=\"timeline\"> +
    +"; + + $__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf->leave($__internal_bf07964345dc2ed4856440f46830f29fd40877970e3d15c792f7db7ee0c7bbcf_prof); + + + $__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5->leave($__internal_73bf76291be08c6e054301a160f9d9edd1b45fb523e352c66ea53db42c860cc5_prof); + + } catch (Exception $e) { + ob_end_clean(); + + throw $e; + } catch (Throwable $e) { + ob_end_clean(); + + throw $e; + } + + return ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/time.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 1032 => 544, 1029 => 543, 1018 => 541, 1014 => 540, 1010 => 538, 990 => 537, 954 => 531, 951 => 530, 932 => 528, 915 => 527, 911 => 525, 907 => 524, 903 => 523, 899 => 522, 895 => 521, 891 => 520, 887 => 519, 884 => 518, 882 => 517, 865 => 516, 847 => 514, 822 => 508, 817 => 506, 813 => 505, 810 => 504, 808 => 503, 787 => 501, 776 => 498, 742 => 466, 724 => 463, 707 => 462, 704 => 461, 702 => 460, 697 => 458, 692 => 456, 416 => 183, 372 => 141, 369 => 140, 366 => 139, 358 => 137, 352 => 134, 346 => 133, 343 => 132, 340 => 131, 336 => 130, 331 => 128, 327 => 126, 325 => 125, 320 => 123, 317 => 122, 311 => 119, 308 => 118, 306 => 117, 300 => 114, 296 => 113, 291 => 111, 288 => 110, 286 => 109, 277 => 102, 268 => 101, 254 => 97, 248 => 93, 246 => 92, 240 => 88, 234 => 85, 230 => 84, 226 => 82, 220 => 81, 217 => 80, 212 => 79, 210 => 78, 204 => 75, 200 => 74, 195 => 71, 193 => 70, 190 => 69, 183 => 65, 180 => 64, 178 => 63, 171 => 59, 163 => 54, 157 => 50, 148 => 49, 134 => 44, 131 => 43, 122 => 42, 110 => 39, 107 => 38, 101 => 35, 94 => 31, 90 => 29, 88 => 28, 85 => 27, 79 => 24, 74 => 23, 72 => 22, 69 => 21, 66 => 20, 63 => 19, 60 => 18, 51 => 17, 41 => 1, 38 => 6, 36 => 5, 34 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% import _self as helper %} + +{% if colors is not defined %} + {% set colors = { + 'default': '#999', + 'section': '#444', + 'event_listener': '#00B8F5', + 'event_listener_loading': '#00B8F5', + 'template': '#66CC00', + 'doctrine': '#FF6633', + 'propel': '#FF6633', + } %} +{% endif %} + +{% block toolbar %} + {% set total_time = collector.events|length ? '%.0f'|format(collector.duration) : 'n/a' %} + {% set initialization_time = collector.events|length ? '%.0f'|format(collector.inittime) : 'n/a' %} + {% set status_color = collector.events|length and collector.duration > 1000 ? 'yellow' : '' %} + + {% set icon %} + {{ include('@WebProfiler/Icon/time.svg') }} + {{ total_time }} + ms + {% endset %} + + {% set text %} +
    + Total time + {{ total_time }} ms +
    +
    + Initialization time + {{ initialization_time }} ms +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: status_color }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/time.svg') }} + Performance + +{% endblock %} + +{% block panel %} +

    Performance metrics

    + +
    +
    + {{ '%.0f'|format(collector.duration) }} ms + Total execution time +
    + +
    + {{ '%.0f'|format(collector.inittime) }} ms + Symfony initialization +
    + + {% if profile.collectors.memory %} +
    + {{ '%.2f'|format(profile.collectors.memory.memory / 1024 / 1024) }} MB + Peak memory usage +
    + {% endif %} + + {% if profile.children|length > 0 %} +
    + +
    + {{ profile.children|length }} + Sub-Request{{ profile.children|length > 1 ? 's' }} +
    + + {% set subrequests_time = 0 %} + {% for child in profile.children %} + {% set subrequests_time = subrequests_time + child.getcollector('time').events.__section__.duration %} + {% endfor %} + +
    + {{ subrequests_time }} ms + Sub-Request{{ profile.children|length > 1 ? 's' }} time +
    + {% endif %} +
    + +

    Execution timeline

    + + {% if collector.events is empty %} +
    +

    No timing events have been recorded. Are you sure that debugging is enabled in the kernel?

    +
    + {% else %} + {{ block('panelContent') }} + {% endif %} +{% endblock %} + +{% block panelContent %} +
    + + + ms + (timeline only displays events with a duration longer than this threshold) +
    + + {% if profile.parent %} +

    + Sub-Request {{ profile.getcollector('request').requestattributes.get('_controller') }} + + {{ collector.events.__section__.duration }} ms + Return to parent request + +

    + {% elseif profile.children|length > 0 %} +

    + Main Request {{ collector.events.__section__.duration }} ms +

    + {% endif %} + + {{ helper.display_timeline('timeline_' ~ token, collector.events, colors) }} + + {% if profile.children|length %} +

    Note: sections with a striped background correspond to sub-requests.

    + +

    Sub-requests ({{ profile.children|length }})

    + + {% for child in profile.children %} + {% set events = child.getcollector('time').events %} +

    + {{ child.getcollector('request').identifier }} + {{ events.__section__.duration }} ms +

    + + {{ helper.display_timeline('timeline_' ~ child.token, events, colors) }} + {% endfor %} + {% endif %} + + +{% endblock %} + +{% macro dump_request_data(token, profile, events, origin) %} +{% autoescape 'js' %} +{% from _self import dump_events %} + { + \"id\": \"{{ token }}\", + \"left\": {{ \"%F\"|format(events.__section__.origin - origin) }}, + \"events\": [ +{{ dump_events(events) }} + ] + } +{% endautoescape %} +{% endmacro %} + +{% macro dump_events(events) %} +{% autoescape 'js' %} +{% for name, event in events %} +{% if '__section__' != name %} + { + \"name\": \"{{ name }}\", + \"category\": \"{{ event.category }}\", + \"origin\": {{ \"%F\"|format(event.origin) }}, + \"starttime\": {{ \"%F\"|format(event.starttime) }}, + \"endtime\": {{ \"%F\"|format(event.endtime) }}, + \"duration\": {{ \"%F\"|format(event.duration) }}, + \"memory\": {{ \"%.1F\"|format(event.memory / 1024 / 1024) }}, + \"periods\": [ + {%- for period in event.periods -%} + {\"start\": {{ \"%F\"|format(period.starttime) }}, \"end\": {{ \"%F\"|format(period.endtime) }}}{{ loop.last ? '' : ', ' }} + {%- endfor -%} + ] + }{{ loop.last ? '' : ',' }} +{% endif %} +{% endfor %} +{% endautoescape %} +{% endmacro %} + +{% macro display_timeline(id, events, colors) %} +
    +
    + {% for category, color in colors %} + {{ category }} + {% endfor %} +
    + +
    +{% endmacro %} +", "@WebProfiler/Collector/time.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/time.html.twig"); + } +} diff --git a/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php b/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php new file mode 100644 index 0000000000000000000000000000000000000000..4051b031fc52224fa209c6fc4d0b29d7852ba46d --- /dev/null +++ b/var/cache/dev/twig/ab/abc9fac9819ff1f055c70c0dd4fae063acc921f9b7ba52403dffdc9a161e5c04.php @@ -0,0 +1,1122 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96->enter($__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base_js.html.twig")); + + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0->enter($__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/base_js.html.twig")); + + // line 1 + echo "getContext($context, "csp_script_nonce")))) { + echo " nonce="; + echo twig_escape_filter($this->env, (isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "html", null, true); + } + echo ">/* 1) { + setTimeout(function(){ + options.maxTries--; + request(url, onSuccess, onError, payload, options); + }, 500); + + return null; + } + + if (200 === xhr.status) { + (onSuccess || noop)(xhr); + } else { + (onError || noop)(xhr); + } + }; + xhr.send(payload || ''); + }, + + getPreference = function(name) { + if (!window.localStorage) { + return null; + } + + return localStorage.getItem(profilerStorageKey + name); + }, + + setPreference = function(name, value) { + if (!window.localStorage) { + return null; + } + + localStorage.setItem(profilerStorageKey + name, value); + }, + + requestStack = [], + + extractHeaders = function(xhr, stackElement) { + /* Here we avoid to call xhr.getResponseHeader in order to */ + /* prevent polluting the console with CORS security errors */ + var allHeaders = xhr.getAllResponseHeaders(); + var ret; + + if (ret = allHeaders.match(/^x-debug-token:\\s+(.*)\$/im)) { + stackElement.profile = ret[1]; + } + if (ret = allHeaders.match(/^x-debug-token-link:\\s+(.*)\$/im)) { + stackElement.profilerUrl = ret[1]; + } + }, + + renderAjaxRequests = function() { + var requestCounter = document.querySelectorAll('.sf-toolbar-ajax-requests'); + if (!requestCounter.length) { + return; + } + + var ajaxToolbarPanel = document.querySelector('.sf-toolbar-block-ajax'); + var tbodies = document.querySelectorAll('.sf-toolbar-ajax-request-list'); + var state = 'ok'; + if (tbodies.length) { + var tbody = tbodies[0]; + + var rows = document.createDocumentFragment(); + + if (requestStack.length) { + for (var i = 0; i < requestStack.length; i++) { + var request = requestStack[i]; + + var row = document.createElement('tr'); + rows.insertBefore(row, rows.firstChild); + + var methodCell = document.createElement('td'); + if (request.error) { + methodCell.className = 'sf-ajax-request-error'; + } + methodCell.textContent = request.method; + row.appendChild(methodCell); + + var typeCell = document.createElement('td'); + typeCell.textContent = request.type; + row.appendChild(typeCell); + + var statusCodeCell = document.createElement('td'); + var statusCode = document.createElement('span'); + if (request.statusCode < 300) { + statusCode.setAttribute('class', 'sf-toolbar-status'); + } else if (request.statusCode < 400) { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-yellow'); + } else { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); + } + statusCode.textContent = request.statusCode || '-'; + statusCodeCell.appendChild(statusCode); + row.appendChild(statusCodeCell); + + var pathCell = document.createElement('td'); + pathCell.className = 'sf-ajax-request-url'; + if ('GET' === request.method) { + var pathLink = document.createElement('a'); + pathLink.setAttribute('href', request.url); + pathLink.textContent = request.url; + pathCell.appendChild(pathLink); + } else { + pathCell.textContent = request.url; + } + pathCell.setAttribute('title', request.url); + row.appendChild(pathCell); + + var durationCell = document.createElement('td'); + durationCell.className = 'sf-ajax-request-duration'; + + if (request.duration) { + durationCell.textContent = request.duration + \"ms\"; + } else { + durationCell.textContent = '-'; + } + row.appendChild(durationCell); + + row.appendChild(document.createTextNode(' ')); + var profilerCell = document.createElement('td'); + + if (request.profilerUrl) { + var profilerLink = document.createElement('a'); + profilerLink.setAttribute('href', request.profilerUrl); + profilerLink.textContent = request.profile; + profilerCell.appendChild(profilerLink); + } else { + profilerCell.textContent = 'n/a'; + } + + row.appendChild(profilerCell); + + var requestState = 'ok'; + if (request.error) { + requestState = 'error'; + if (state != \"loading\" && i > requestStack.length - 4) { + state = 'error'; + } + } else if (request.loading) { + requestState = 'loading'; + state = 'loading'; + } + row.className = 'sf-ajax-request sf-ajax-request-' + requestState; + } + + var infoSpan = document.querySelectorAll(\".sf-toolbar-ajax-info\")[0]; + var children = collectionToArray(tbody.children); + for (var i = 0; i < children.length; i++) { + tbody.removeChild(children[i]); + } + tbody.appendChild(rows); + + if (infoSpan) { + var text = requestStack.length + ' AJAX request' + (requestStack.length > 1 ? 's' : ''); + infoSpan.textContent = text; + } + + ajaxToolbarPanel.style.display = 'block'; + } else { + ajaxToolbarPanel.style.display = 'none'; + } + } + + requestCounter[0].textContent = requestStack.length; + + var className = 'sf-toolbar-ajax-requests sf-toolbar-value'; + requestCounter[0].className = className; + + if (state == 'ok') { + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + } else if (state == 'error') { + Sfjs.addClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } else { + Sfjs.addClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } + }; + + var addEventListener; + + var el = document.createElement('div'); + if (!('addEventListener' in el)) { + addEventListener = function (element, eventName, callback) { + element.attachEvent('on' + eventName, callback); + }; + } else { + addEventListener = function (element, eventName, callback) { + element.addEventListener(eventName, callback, false); + }; + } + + "; + // line 241 + if (array_key_exists("excluded_ajax_paths", $context)) { + // line 242 + echo " if (window.fetch && window.fetch.polyfill === undefined) { + var oldFetch = window.fetch; + window.fetch = function () { + var promise = oldFetch.apply(this, arguments); + var url = arguments[0]; + var params = arguments[1]; + var paramType = Object.prototype.toString.call(arguments[0]); + if (paramType === '[object Request]') { + url = arguments[0].url; + params = { + method: arguments[0].method, + credentials: arguments[0].credentials, + headers: arguments[0].headers, + mode: arguments[0].mode, + redirect: arguments[0].redirect + }; + } + if (!url.match(new RegExp("; + // line 259 + echo twig_jsonencode_filter((isset($context["excluded_ajax_paths"]) ? $context["excluded_ajax_paths"] : $this->getContext($context, "excluded_ajax_paths"))); + echo "))) { + var method = 'GET'; + if (params && params.method !== undefined) { + method = params.method; + } + + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'fetch', + start: new Date() + }; + + requestStack.push(stackElement); + promise.then(function (r) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = r.status < 200 || r.status >= 400; + stackElement.statusCode = r.status; + stackElement.profile = r.headers.get('x-debug-token'); + stackElement.profilerUrl = r.headers.get('x-debug-token-link'); + Sfjs.renderAjaxRequests(); + }, function (e){ + stackElement.loading = false; + stackElement.error = true; + }); + Sfjs.renderAjaxRequests(); + } + + return promise; + }; + } + if (window.XMLHttpRequest && XMLHttpRequest.prototype.addEventListener) { + var proxied = XMLHttpRequest.prototype.open; + + XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { + var self = this; + + /* prevent logging AJAX calls to static and inline files, like templates */ + var path = url; + if (url.substr(0, 1) === '/') { + if (0 === url.indexOf('"; + // line 302 + echo twig_escape_filter($this->env, twig_escape_filter($this->env, $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array()), "js"), "html", null, true); + echo "')) { + path = url.substr("; + // line 303 + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array())), "html", null, true); + echo "); + } + } + else if (0 === url.indexOf('"; + // line 306 + echo twig_escape_filter($this->env, twig_escape_filter($this->env, ($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "schemeAndHttpHost", array()) . $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array())), "js"), "html", null, true); + echo "')) { + path = url.substr("; + // line 307 + echo twig_escape_filter($this->env, twig_length_filter($this->env, ($this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "schemeAndHttpHost", array()) . $this->getAttribute((isset($context["request"]) ? $context["request"] : $this->getContext($context, "request")), "basePath", array()))), "html", null, true); + echo "); + } + + if (!path.match(new RegExp("; + // line 310 + echo twig_jsonencode_filter((isset($context["excluded_ajax_paths"]) ? $context["excluded_ajax_paths"] : $this->getContext($context, "excluded_ajax_paths"))); + echo "))) { + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'xhr', + start: new Date() + }; + + requestStack.push(stackElement); + + this.addEventListener('readystatechange', function() { + if (self.readyState == 4) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = self.status < 200 || self.status >= 400; + stackElement.statusCode = self.status; + extractHeaders(self, stackElement); + + Sfjs.renderAjaxRequests(); + } + }, false); + + Sfjs.renderAjaxRequests(); + } + + proxied.apply(this, Array.prototype.slice.call(arguments)); + }; + } + "; + } + // line 341 + echo " + return { + hasClass: hasClass, + + removeClass: removeClass, + + addClass: addClass, + + toggleClass: toggleClass, + + getPreference: getPreference, + + setPreference: setPreference, + + addEventListener: addEventListener, + + request: request, + + renderAjaxRequests: renderAjaxRequests, + + load: function(selector, url, onSuccess, onError, options) { + var el = document.getElementById(selector); + + if (el && el.getAttribute('data-sfurl') !== url) { + request( + url, + function(xhr) { + el.innerHTML = xhr.responseText; + el.setAttribute('data-sfurl', url); + removeClass(el, 'loading'); + (onSuccess || noop)(xhr, el); + }, + function(xhr) { (onError || noop)(xhr, el); }, + '', + options + ); + } + + return this; + }, + + toggle: function(selector, elOn, elOff) { + var tmp = elOn.style.display, + el = document.getElementById(selector); + + elOn.style.display = elOff.style.display; + elOff.style.display = tmp; + + if (el) { + el.style.display = 'none' === tmp ? 'none' : 'block'; + } + + return this; + }, + + createTabs: function() { + var tabGroups = document.querySelectorAll('.sf-tabs'); + + /* create the tab navigation for each group of tabs */ + for (var i = 0; i < tabGroups.length; i++) { + var tabs = tabGroups[i].querySelectorAll('.tab'); + var tabNavigation = document.createElement('ul'); + tabNavigation.className = 'tab-navigation'; + + for (var j = 0; j < tabs.length; j++) { + var tabId = 'tab-' + i + '-' + j; + var tabTitle = tabs[j].querySelector('.tab-title').innerHTML; + + var tabNavigationItem = document.createElement('li'); + tabNavigationItem.setAttribute('data-tab-id', tabId); + if (j == 0) { Sfjs.addClass(tabNavigationItem, 'active'); } + if (Sfjs.hasClass(tabs[j], 'disabled')) { Sfjs.addClass(tabNavigationItem, 'disabled'); } + tabNavigationItem.innerHTML = tabTitle; + tabNavigation.appendChild(tabNavigationItem); + + var tabContent = tabs[j].querySelector('.tab-content'); + tabContent.parentElement.setAttribute('id', tabId); + } + + tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild); + } + + /* display the active tab and add the 'click' event listeners */ + for (i = 0; i < tabGroups.length; i++) { + tabNavigation = tabGroups[i].querySelectorAll('.tab-navigation li'); + + for (j = 0; j < tabNavigation.length; j++) { + tabId = tabNavigation[j].getAttribute('data-tab-id'); + document.getElementById(tabId).querySelector('.tab-title').className = 'hidden'; + + if (Sfjs.hasClass(tabNavigation[j], 'active')) { + document.getElementById(tabId).className = 'block'; + } else { + document.getElementById(tabId).className = 'hidden'; + } + + tabNavigation[j].addEventListener('click', function(e) { + var activeTab = e.target || e.srcElement; + + /* needed because when the tab contains HTML contents, user can click */ + /* on any of those elements instead of their parent '
  • ' element */ + while (activeTab.tagName.toLowerCase() !== 'li') { + activeTab = activeTab.parentNode; + } + + /* get the full list of tabs through the parent of the active tab element */ + var tabNavigation = activeTab.parentNode.children; + for (var k = 0; k < tabNavigation.length; k++) { + var tabId = tabNavigation[k].getAttribute('data-tab-id'); + document.getElementById(tabId).className = 'hidden'; + Sfjs.removeClass(tabNavigation[k], 'active'); + } + + Sfjs.addClass(activeTab, 'active'); + var activeTabId = activeTab.getAttribute('data-tab-id'); + document.getElementById(activeTabId).className = 'block'; + }); + } + } + }, + + createToggles: function() { + var toggles = document.querySelectorAll('.sf-toggle'); + + for (var i = 0; i < toggles.length; i++) { + var elementSelector = toggles[i].getAttribute('data-toggle-selector'); + var element = document.querySelector(elementSelector); + + Sfjs.addClass(element, 'sf-toggle-content'); + + if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') { + Sfjs.addClass(element, 'sf-toggle-visible'); + } else { + Sfjs.addClass(element, 'sf-toggle-hidden'); + } + + Sfjs.addEventListener(toggles[i], 'click', function(e) { + e.preventDefault(); + + var toggle = e.target || e.srcElement; + + /* needed because when the toggle contains HTML contents, user can click */ + /* on any of those elements instead of their parent '.sf-toggle' element */ + while (!Sfjs.hasClass(toggle, 'sf-toggle')) { + toggle = toggle.parentNode; + } + + var element = document.querySelector(toggle.getAttribute('data-toggle-selector')); + + Sfjs.toggleClass(element, 'sf-toggle-hidden'); + Sfjs.toggleClass(element, 'sf-toggle-visible'); + + /* the toggle doesn't change its contents when clicking on it */ + if (!toggle.hasAttribute('data-toggle-alt-content')) { + return; + } + + if (!toggle.hasAttribute('data-toggle-original-content')) { + toggle.setAttribute('data-toggle-original-content', toggle.innerHTML); + } + + var currentContent = toggle.innerHTML; + var originalContent = toggle.getAttribute('data-toggle-original-content'); + var altContent = toggle.getAttribute('data-toggle-alt-content'); + toggle.innerHTML = currentContent !== altContent ? altContent : originalContent; + }); + } + } + }; + })(); + + Sfjs.addEventListener(window, 'load', function() { + Sfjs.createTabs(); + Sfjs.createToggles(); + }); + +/*]]>*/ +"; + + $__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96->leave($__internal_1452a0068e335fc7b079ee36125103a1cdf52ef81d73a31df727e36bb4b37f96_prof); + + + $__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0->leave($__internal_205a2cd6f6be6f5fd43ff9eec58b95c1d854ff9927d4515f1b0b2b8902a2c5e0_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/base_js.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 392 => 341, 358 => 310, 352 => 307, 348 => 306, 342 => 303, 338 => 302, 292 => 259, 273 => 242, 271 => 241, 33 => 5, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("/* 1) { + setTimeout(function(){ + options.maxTries--; + request(url, onSuccess, onError, payload, options); + }, 500); + + return null; + } + + if (200 === xhr.status) { + (onSuccess || noop)(xhr); + } else { + (onError || noop)(xhr); + } + }; + xhr.send(payload || ''); + }, + + getPreference = function(name) { + if (!window.localStorage) { + return null; + } + + return localStorage.getItem(profilerStorageKey + name); + }, + + setPreference = function(name, value) { + if (!window.localStorage) { + return null; + } + + localStorage.setItem(profilerStorageKey + name, value); + }, + + requestStack = [], + + extractHeaders = function(xhr, stackElement) { + /* Here we avoid to call xhr.getResponseHeader in order to */ + /* prevent polluting the console with CORS security errors */ + var allHeaders = xhr.getAllResponseHeaders(); + var ret; + + if (ret = allHeaders.match(/^x-debug-token:\\s+(.*)\$/im)) { + stackElement.profile = ret[1]; + } + if (ret = allHeaders.match(/^x-debug-token-link:\\s+(.*)\$/im)) { + stackElement.profilerUrl = ret[1]; + } + }, + + renderAjaxRequests = function() { + var requestCounter = document.querySelectorAll('.sf-toolbar-ajax-requests'); + if (!requestCounter.length) { + return; + } + + var ajaxToolbarPanel = document.querySelector('.sf-toolbar-block-ajax'); + var tbodies = document.querySelectorAll('.sf-toolbar-ajax-request-list'); + var state = 'ok'; + if (tbodies.length) { + var tbody = tbodies[0]; + + var rows = document.createDocumentFragment(); + + if (requestStack.length) { + for (var i = 0; i < requestStack.length; i++) { + var request = requestStack[i]; + + var row = document.createElement('tr'); + rows.insertBefore(row, rows.firstChild); + + var methodCell = document.createElement('td'); + if (request.error) { + methodCell.className = 'sf-ajax-request-error'; + } + methodCell.textContent = request.method; + row.appendChild(methodCell); + + var typeCell = document.createElement('td'); + typeCell.textContent = request.type; + row.appendChild(typeCell); + + var statusCodeCell = document.createElement('td'); + var statusCode = document.createElement('span'); + if (request.statusCode < 300) { + statusCode.setAttribute('class', 'sf-toolbar-status'); + } else if (request.statusCode < 400) { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-yellow'); + } else { + statusCode.setAttribute('class', 'sf-toolbar-status sf-toolbar-status-red'); + } + statusCode.textContent = request.statusCode || '-'; + statusCodeCell.appendChild(statusCode); + row.appendChild(statusCodeCell); + + var pathCell = document.createElement('td'); + pathCell.className = 'sf-ajax-request-url'; + if ('GET' === request.method) { + var pathLink = document.createElement('a'); + pathLink.setAttribute('href', request.url); + pathLink.textContent = request.url; + pathCell.appendChild(pathLink); + } else { + pathCell.textContent = request.url; + } + pathCell.setAttribute('title', request.url); + row.appendChild(pathCell); + + var durationCell = document.createElement('td'); + durationCell.className = 'sf-ajax-request-duration'; + + if (request.duration) { + durationCell.textContent = request.duration + \"ms\"; + } else { + durationCell.textContent = '-'; + } + row.appendChild(durationCell); + + row.appendChild(document.createTextNode(' ')); + var profilerCell = document.createElement('td'); + + if (request.profilerUrl) { + var profilerLink = document.createElement('a'); + profilerLink.setAttribute('href', request.profilerUrl); + profilerLink.textContent = request.profile; + profilerCell.appendChild(profilerLink); + } else { + profilerCell.textContent = 'n/a'; + } + + row.appendChild(profilerCell); + + var requestState = 'ok'; + if (request.error) { + requestState = 'error'; + if (state != \"loading\" && i > requestStack.length - 4) { + state = 'error'; + } + } else if (request.loading) { + requestState = 'loading'; + state = 'loading'; + } + row.className = 'sf-ajax-request sf-ajax-request-' + requestState; + } + + var infoSpan = document.querySelectorAll(\".sf-toolbar-ajax-info\")[0]; + var children = collectionToArray(tbody.children); + for (var i = 0; i < children.length; i++) { + tbody.removeChild(children[i]); + } + tbody.appendChild(rows); + + if (infoSpan) { + var text = requestStack.length + ' AJAX request' + (requestStack.length > 1 ? 's' : ''); + infoSpan.textContent = text; + } + + ajaxToolbarPanel.style.display = 'block'; + } else { + ajaxToolbarPanel.style.display = 'none'; + } + } + + requestCounter[0].textContent = requestStack.length; + + var className = 'sf-toolbar-ajax-requests sf-toolbar-value'; + requestCounter[0].className = className; + + if (state == 'ok') { + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + } else if (state == 'error') { + Sfjs.addClass(ajaxToolbarPanel, 'sf-toolbar-status-red'); + Sfjs.removeClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } else { + Sfjs.addClass(ajaxToolbarPanel, 'sf-ajax-request-loading'); + } + }; + + var addEventListener; + + var el = document.createElement('div'); + if (!('addEventListener' in el)) { + addEventListener = function (element, eventName, callback) { + element.attachEvent('on' + eventName, callback); + }; + } else { + addEventListener = function (element, eventName, callback) { + element.addEventListener(eventName, callback, false); + }; + } + + {% if excluded_ajax_paths is defined %} + if (window.fetch && window.fetch.polyfill === undefined) { + var oldFetch = window.fetch; + window.fetch = function () { + var promise = oldFetch.apply(this, arguments); + var url = arguments[0]; + var params = arguments[1]; + var paramType = Object.prototype.toString.call(arguments[0]); + if (paramType === '[object Request]') { + url = arguments[0].url; + params = { + method: arguments[0].method, + credentials: arguments[0].credentials, + headers: arguments[0].headers, + mode: arguments[0].mode, + redirect: arguments[0].redirect + }; + } + if (!url.match(new RegExp({{ excluded_ajax_paths|json_encode|raw }}))) { + var method = 'GET'; + if (params && params.method !== undefined) { + method = params.method; + } + + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'fetch', + start: new Date() + }; + + requestStack.push(stackElement); + promise.then(function (r) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = r.status < 200 || r.status >= 400; + stackElement.statusCode = r.status; + stackElement.profile = r.headers.get('x-debug-token'); + stackElement.profilerUrl = r.headers.get('x-debug-token-link'); + Sfjs.renderAjaxRequests(); + }, function (e){ + stackElement.loading = false; + stackElement.error = true; + }); + Sfjs.renderAjaxRequests(); + } + + return promise; + }; + } + if (window.XMLHttpRequest && XMLHttpRequest.prototype.addEventListener) { + var proxied = XMLHttpRequest.prototype.open; + + XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { + var self = this; + + /* prevent logging AJAX calls to static and inline files, like templates */ + var path = url; + if (url.substr(0, 1) === '/') { + if (0 === url.indexOf('{{ request.basePath|e('js') }}')) { + path = url.substr({{ request.basePath|length }}); + } + } + else if (0 === url.indexOf('{{ (request.schemeAndHttpHost ~ request.basePath)|e('js') }}')) { + path = url.substr({{ (request.schemeAndHttpHost ~ request.basePath)|length }}); + } + + if (!path.match(new RegExp({{ excluded_ajax_paths|json_encode|raw }}))) { + var stackElement = { + loading: true, + error: false, + url: url, + method: method, + type: 'xhr', + start: new Date() + }; + + requestStack.push(stackElement); + + this.addEventListener('readystatechange', function() { + if (self.readyState == 4) { + stackElement.duration = new Date() - stackElement.start; + stackElement.loading = false; + stackElement.error = self.status < 200 || self.status >= 400; + stackElement.statusCode = self.status; + extractHeaders(self, stackElement); + + Sfjs.renderAjaxRequests(); + } + }, false); + + Sfjs.renderAjaxRequests(); + } + + proxied.apply(this, Array.prototype.slice.call(arguments)); + }; + } + {% endif %} + + return { + hasClass: hasClass, + + removeClass: removeClass, + + addClass: addClass, + + toggleClass: toggleClass, + + getPreference: getPreference, + + setPreference: setPreference, + + addEventListener: addEventListener, + + request: request, + + renderAjaxRequests: renderAjaxRequests, + + load: function(selector, url, onSuccess, onError, options) { + var el = document.getElementById(selector); + + if (el && el.getAttribute('data-sfurl') !== url) { + request( + url, + function(xhr) { + el.innerHTML = xhr.responseText; + el.setAttribute('data-sfurl', url); + removeClass(el, 'loading'); + (onSuccess || noop)(xhr, el); + }, + function(xhr) { (onError || noop)(xhr, el); }, + '', + options + ); + } + + return this; + }, + + toggle: function(selector, elOn, elOff) { + var tmp = elOn.style.display, + el = document.getElementById(selector); + + elOn.style.display = elOff.style.display; + elOff.style.display = tmp; + + if (el) { + el.style.display = 'none' === tmp ? 'none' : 'block'; + } + + return this; + }, + + createTabs: function() { + var tabGroups = document.querySelectorAll('.sf-tabs'); + + /* create the tab navigation for each group of tabs */ + for (var i = 0; i < tabGroups.length; i++) { + var tabs = tabGroups[i].querySelectorAll('.tab'); + var tabNavigation = document.createElement('ul'); + tabNavigation.className = 'tab-navigation'; + + for (var j = 0; j < tabs.length; j++) { + var tabId = 'tab-' + i + '-' + j; + var tabTitle = tabs[j].querySelector('.tab-title').innerHTML; + + var tabNavigationItem = document.createElement('li'); + tabNavigationItem.setAttribute('data-tab-id', tabId); + if (j == 0) { Sfjs.addClass(tabNavigationItem, 'active'); } + if (Sfjs.hasClass(tabs[j], 'disabled')) { Sfjs.addClass(tabNavigationItem, 'disabled'); } + tabNavigationItem.innerHTML = tabTitle; + tabNavigation.appendChild(tabNavigationItem); + + var tabContent = tabs[j].querySelector('.tab-content'); + tabContent.parentElement.setAttribute('id', tabId); + } + + tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild); + } + + /* display the active tab and add the 'click' event listeners */ + for (i = 0; i < tabGroups.length; i++) { + tabNavigation = tabGroups[i].querySelectorAll('.tab-navigation li'); + + for (j = 0; j < tabNavigation.length; j++) { + tabId = tabNavigation[j].getAttribute('data-tab-id'); + document.getElementById(tabId).querySelector('.tab-title').className = 'hidden'; + + if (Sfjs.hasClass(tabNavigation[j], 'active')) { + document.getElementById(tabId).className = 'block'; + } else { + document.getElementById(tabId).className = 'hidden'; + } + + tabNavigation[j].addEventListener('click', function(e) { + var activeTab = e.target || e.srcElement; + + /* needed because when the tab contains HTML contents, user can click */ + /* on any of those elements instead of their parent '
  • ' element */ + while (activeTab.tagName.toLowerCase() !== 'li') { + activeTab = activeTab.parentNode; + } + + /* get the full list of tabs through the parent of the active tab element */ + var tabNavigation = activeTab.parentNode.children; + for (var k = 0; k < tabNavigation.length; k++) { + var tabId = tabNavigation[k].getAttribute('data-tab-id'); + document.getElementById(tabId).className = 'hidden'; + Sfjs.removeClass(tabNavigation[k], 'active'); + } + + Sfjs.addClass(activeTab, 'active'); + var activeTabId = activeTab.getAttribute('data-tab-id'); + document.getElementById(activeTabId).className = 'block'; + }); + } + } + }, + + createToggles: function() { + var toggles = document.querySelectorAll('.sf-toggle'); + + for (var i = 0; i < toggles.length; i++) { + var elementSelector = toggles[i].getAttribute('data-toggle-selector'); + var element = document.querySelector(elementSelector); + + Sfjs.addClass(element, 'sf-toggle-content'); + + if (toggles[i].hasAttribute('data-toggle-initial') && toggles[i].getAttribute('data-toggle-initial') == 'display') { + Sfjs.addClass(element, 'sf-toggle-visible'); + } else { + Sfjs.addClass(element, 'sf-toggle-hidden'); + } + + Sfjs.addEventListener(toggles[i], 'click', function(e) { + e.preventDefault(); + + var toggle = e.target || e.srcElement; + + /* needed because when the toggle contains HTML contents, user can click */ + /* on any of those elements instead of their parent '.sf-toggle' element */ + while (!Sfjs.hasClass(toggle, 'sf-toggle')) { + toggle = toggle.parentNode; + } + + var element = document.querySelector(toggle.getAttribute('data-toggle-selector')); + + Sfjs.toggleClass(element, 'sf-toggle-hidden'); + Sfjs.toggleClass(element, 'sf-toggle-visible'); + + /* the toggle doesn't change its contents when clicking on it */ + if (!toggle.hasAttribute('data-toggle-alt-content')) { + return; + } + + if (!toggle.hasAttribute('data-toggle-original-content')) { + toggle.setAttribute('data-toggle-original-content', toggle.innerHTML); + } + + var currentContent = toggle.innerHTML; + var originalContent = toggle.getAttribute('data-toggle-original-content'); + var altContent = toggle.getAttribute('data-toggle-alt-content'); + toggle.innerHTML = currentContent !== altContent ? altContent : originalContent; + }); + } + } + }; + })(); + + Sfjs.addEventListener(window, 'load', function() { + Sfjs.createTabs(); + Sfjs.createToggles(); + }); + +/*]]>*/ +", "@WebProfiler/Profiler/base_js.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/base_js.html.twig"); + } +} diff --git a/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php b/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php new file mode 100644 index 0000000000000000000000000000000000000000..ba7ba881c558cf200b1f85e175795d472b99b0e1 --- /dev/null +++ b/var/cache/dev/twig/ac/ac1b9ebcbc34a618d4c90a0d5118d75106f984580e89c6c75684bb1bbce243ee.php @@ -0,0 +1,147 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/router.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664->enter($__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/router.html.twig")); + + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9->enter($__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/router.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664->leave($__internal_6b8f4789d41c6e94b32c91def31499aa61706206c5a812646d08abe5bdcaf664_prof); + + + $__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9->leave($__internal_ed4e7a914e0d763c5055459aab0adf6b4cbd88ee6d1f69b7c4fa7c8768b73be9_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6->enter($__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb->enter($__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + + $__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb->leave($__internal_7f76e9227e7a8f7428c80845453ab828f352e19db3822b73768b593aa1e428cb_prof); + + + $__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6->leave($__internal_605cd7e3e95cd2502f297c1f4ceb36d3760722c6ae231a2bc220f04d87358da6_prof); + + } + + // line 5 + public function block_menu($context, array $blocks = array()) + { + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd->enter($__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9->enter($__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 6 + echo " + "; + // line 7 + echo twig_include($this->env, $context, "@WebProfiler/Icon/router.svg"); + echo " + Routing + +"; + + $__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9->leave($__internal_329e29671663663fc2d6870cf1d8f37cc4f248a38159e34ac3f2ec3d4712e5b9_prof); + + + $__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd->leave($__internal_1761f2f683f4ec1f345e5208372ae2dbe152fda0907fc7cb67f098d4dca60cdd_prof); + + } + + // line 12 + public function block_panel($context, array $blocks = array()) + { + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87->enter($__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f->enter($__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 13 + echo " "; + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment($this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_router", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); + echo " +"; + + $__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f->leave($__internal_d41dee446bed531486b38a03c5876212869704694f13fb8f5f16994bf955cb0f_prof); + + + $__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87->leave($__internal_37bc2ed85f6ff095e4bfeb9031a6b71eda1a9860c44c4d48e7fd871ba13d9c87_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/router.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 94 => 13, 85 => 12, 71 => 7, 68 => 6, 59 => 5, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %}{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/router.svg') }} + Routing + +{% endblock %} + +{% block panel %} + {{ render(path('_profiler_router', { token: token })) }} +{% endblock %} +", "@WebProfiler/Collector/router.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/router.html.twig"); + } +} diff --git a/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php b/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php new file mode 100644 index 0000000000000000000000000000000000000000..4493a75bae3d9c083aaf96df16cb7fb11e174c87 --- /dev/null +++ b/var/cache/dev/twig/ae/ae090c15fa279bf50dab03e4f71239e871b99523e3ccf0a35dd9c2fc334addef.php @@ -0,0 +1,214 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/exception.html.twig", 1); + $this->blocks = array( + 'head' => array($this, 'block_head'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d->enter($__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/exception.html.twig")); + + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062->enter($__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/exception.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d->leave($__internal_964fbb9052186d3db923794aa1d47597802c7be5829d99e306f492963a211d3d_prof); + + + $__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062->leave($__internal_32a073f05eec782e689260276b59724ad605a06f43a09a8f509f6d141a7b3062_prof); + + } + + // line 3 + public function block_head($context, array $blocks = array()) + { + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396->enter($__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216->enter($__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "head")); + + // line 4 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 5 + echo " + "; + } + // line 9 + echo " "; + $this->displayParentBlock("head", $context, $blocks); + echo " +"; + + $__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216->leave($__internal_09f35a01d039ccd3c33182b98b3c9dd7392aa7d2aec8d5f6195163c7948da216_prof); + + + $__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396->leave($__internal_40ca6e4add8fc4c3c244e1bab17b10d6c40b9e3ce662189a6f61b3b5d3a93396_prof); + + } + + // line 12 + public function block_menu($context, array $blocks = array()) + { + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0->enter($__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71->enter($__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 13 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) ? ("label-status-error") : ("disabled")); + echo "\"> + "; + // line 14 + echo twig_include($this->env, $context, "@WebProfiler/Icon/exception.svg"); + echo " + Exception + "; + // line 16 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 17 + echo " + 1 + + "; + } + // line 21 + echo " +"; + + $__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71->leave($__internal_64822d03455b5fda01a2ce84e2cd6e4f16b47a16b20561fcbe4a4837a4fe2c71_prof); + + + $__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0->leave($__internal_8583ef846394bbbf3ea90fee9cc20b7d55be611b1a7474b2087995789883edd0_prof); + + } + + // line 24 + public function block_panel($context, array $blocks = array()) + { + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541->enter($__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f->enter($__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 25 + echo "

    Exceptions

    + + "; + // line 27 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasexception", array())) { + // line 28 + echo "
    +

    No exception was thrown and caught during the request.

    +
    + "; + } else { + // line 32 + echo "
    + "; + // line 33 + echo $this->env->getRuntime('Symfony\Bridge\Twig\Extension\HttpKernelRuntime')->renderFragment($this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_exception", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token"))))); + echo " +
    + "; + } + + $__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f->leave($__internal_373b7b81da2ce7ee2686ff2e22824cf85c92e75543000421864b71acbb358d1f_prof); + + + $__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541->leave($__internal_8acc0f33ca0d58630a12490f0c0e9f8152233e12b504714299f3d32655030541_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/exception.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 138 => 33, 135 => 32, 129 => 28, 127 => 27, 123 => 25, 114 => 24, 103 => 21, 97 => 17, 95 => 16, 90 => 14, 85 => 13, 76 => 12, 63 => 9, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block head %} + {% if collector.hasexception %} + + {% endif %} + {{ parent() }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/exception.svg') }} + Exception + {% if collector.hasexception %} + + 1 + + {% endif %} + +{% endblock %} + +{% block panel %} +

    Exceptions

    + + {% if not collector.hasexception %} +
    +

    No exception was thrown and caught during the request.

    +
    + {% else %} +
    + {{ render(path('_profiler_exception', { token: token })) }} +
    + {% endif %} +{% endblock %} +", "@WebProfiler/Collector/exception.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/exception.html.twig"); + } +} diff --git a/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php b/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php new file mode 100644 index 0000000000000000000000000000000000000000..ddc988f39841a7dbc6a02490f44dc20b36fde4fc --- /dev/null +++ b/var/cache/dev/twig/b0/b07478a2f8fcb8a3c69f13a15376db1716a1169bab57e1bb4112bbfa3819cc4c.php @@ -0,0 +1,120 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01->enter($__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces_text.html.twig")); + + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39->enter($__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/traces_text.html.twig")); + + // line 1 + echo "
    +

    + Stack Trace (Plain Text)  + "; + // line 4 + ob_start(); + // line 5 + echo " + \"-\" + \"+\" + + "; + echo trim(preg_replace('/>\s+<', ob_get_clean())); + // line 10 + echo "

    + +
    +
    ";
    +        // line 13
    +        $context['_parent'] = $context;
    +        $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["exception"]) ? $context["exception"] : $this->getContext($context, "exception")), "toarray", array()));
    +        foreach ($context['_seq'] as $context["i"] => $context["e"]) {
    +            // line 14
    +            echo "[";
    +            echo twig_escape_filter($this->env, ($context["i"] + 1), "html", null, true);
    +            echo "] ";
    +            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "class", array()), "html", null, true);
    +            echo ": ";
    +            echo twig_escape_filter($this->env, $this->getAttribute($context["e"], "message", array()), "html", null, true);
    +            echo "
    +";
    +            // line 15
    +            $this->loadTemplate("@Twig/Exception/traces.txt.twig", "@Twig/Exception/traces_text.html.twig", 15)->display(array("exception" => $context["e"]));
    +        }
    +        $_parent = $context['_parent'];
    +        unset($context['_seq'], $context['_iterated'], $context['i'], $context['e'], $context['_parent'], $context['loop']);
    +        $context = array_intersect_key($context, $_parent) + $_parent;
    +        // line 16
    +        echo "
    +
    +
    +"; + + $__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01->leave($__internal_1b8efdae0e6e4c9e12c876317e36ef48dfd8b50ffc4a798a8a1c0cc46c5bed01_prof); + + + $__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39->leave($__internal_5d405fceeffe1d12922648be8cddeb2a4ff0fd1f5bcf7316322342503e62bc39_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/traces_text.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 63 => 16, 57 => 15, 48 => 14, 44 => 13, 39 => 10, 32 => 5, 30 => 4, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    +

    + Stack Trace (Plain Text)  + {% spaceless %} + + \"-\" + \"+\" + + {% endspaceless %} +

    + +
    +
    {% for i, e in exception.toarray %}
    +[{{ i + 1 }}] {{ e.class }}: {{ e.message }}
    +{% include '@Twig/Exception/traces.txt.twig' with { 'exception': e } only %}
    +{% endfor %}
    +
    +
    +", "@Twig/Exception/traces_text.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/traces_text.html.twig"); + } +} diff --git a/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php b/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php new file mode 100644 index 0000000000000000000000000000000000000000..be6d4394be8148fc6eafe602ecb5672a74319112 --- /dev/null +++ b/var/cache/dev/twig/b4/b43b8c88c08cec3f14cec1965b5adf4a7f382039d5f5d60b26452fa1a9bdf986.php @@ -0,0 +1,70 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad->enter($__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.svg")); + + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21->enter($__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/exception.svg")); + + // line 1 + echo " + + + + + + +"; + + $__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad->leave($__internal_d02b096bf96b64f8f14516d05e12cf819260f23c758d979b122efc6ccd7f80ad_prof); + + + $__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21->leave($__internal_be5755575ebf93a97db9dbdf1db7d29711e8402f7f921cad61d237fb521fbf21_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/exception.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + + + +", "@Twig/Exception/exception.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception.svg"); + } +} diff --git a/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php b/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php new file mode 100644 index 0000000000000000000000000000000000000000..650d9ecf72d17dc6422393dcb5dcdd900f99e4c7 --- /dev/null +++ b/var/cache/dev/twig/b4/b4d909e6167887212683de8a5e50a169d9a5fb82e05afaaa8d87a250260ebbee.php @@ -0,0 +1,62 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293->enter($__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/icon.svg")); + + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e->enter($__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Security/Collector/icon.svg")); + + // line 1 + echo " + + +"; + + $__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293->leave($__internal_86653a59d860f76efd96dd3f0036cef23de39a6d1e946ca1d1a43e7145cb6293_prof); + + + $__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e->leave($__internal_c9e49b83311b9246be3c4eb30aa999cee0c0c5564cebf5e0c78f33f12259a75e_prof); + + } + + public function getTemplateName() + { + return "@Security/Collector/icon.svg"; + } + + public function getDebugInfo() + { + return array ( 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + +", "@Security/Collector/icon.svg", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views/Collector/icon.svg"); + } +} diff --git a/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php b/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php new file mode 100644 index 0000000000000000000000000000000000000000..825b0669f279b414d6902fc24e7d15eb3f3603c6 --- /dev/null +++ b/var/cache/dev/twig/c0/c039d1fcdf2d18214221f0d1f16dca21095f7a61812b364de12a15f7f38b78ec.php @@ -0,0 +1,91 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8->enter($__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.txt.twig")); + + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6->enter($__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Twig/Exception/trace.txt.twig")); + + // line 1 + if ($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())) { + // line 2 + echo " at "; + echo (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "class", array()) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "type", array())) . $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "function", array())); + echo "("; + echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->formatArgsAsText($this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "args", array())); + echo ") +"; + } else { + // line 4 + echo " at n/a +"; + } + // line 6 + if (($this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "file", array(), "any", true, true) && $this->getAttribute((isset($context["trace"]) ? $context["trace"] : null), "line", array(), "any", true, true))) { + // line 7 + echo " in "; + echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "file", array()); + echo " line "; + echo $this->getAttribute((isset($context["trace"]) ? $context["trace"] : $this->getContext($context, "trace")), "line", array()); + echo " +"; + } + + $__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8->leave($__internal_c3fb0ae335d5819482d4410500a8366b07606ac38a7dd847ba46420d405f32f8_prof); + + + $__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6->leave($__internal_5182cce33fdae43fb3447d93d7731dbdfb49cda08e6eb34805cf4edb9c4e75b6_prof); + + } + + public function getTemplateName() + { + return "@Twig/Exception/trace.txt.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 41 => 7, 39 => 6, 35 => 4, 27 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% if trace.function %} + at {{ trace.class ~ trace.type ~ trace.function }}({{ trace.args|format_args_as_text }}) +{% else %} + at n/a +{% endif %} +{% if trace.file is defined and trace.line is defined %} + in {{ trace.file }} line {{ trace.line }} +{% endif %} +", "@Twig/Exception/trace.txt.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/trace.txt.twig"); + } +} diff --git a/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php b/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php new file mode 100644 index 0000000000000000000000000000000000000000..b0e7045969473c56589ea974bcac0a7213fb216b --- /dev/null +++ b/var/cache/dev/twig/c6/c6ef0721f6e5a13452d9912db783cf960ce5a9f8d09ad76932b947d49930dd48.php @@ -0,0 +1,832 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Swiftmailer/Collector/swiftmailer.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7->enter($__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Swiftmailer/Collector/swiftmailer.html.twig")); + + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847->enter($__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Swiftmailer/Collector/swiftmailer.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7->leave($__internal_8e56f3939cb85ec554dde56e2d7bde4ce929f55580db3be885b6531a8ce74be7_prof); + + + $__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847->leave($__internal_0e265540ef214771429d5c60af2837b90e82fc30e7d5124507c709e5d7680847_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc->enter($__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6->enter($__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 5 + echo " + "; + // line 6 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array())) { + // line 7 + echo " "; + ob_start(); + // line 8 + echo " "; + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 9 + echo " \"Swiftmailer\" + "; + // line 10 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + "; + } else { + // line 12 + echo " "; + echo twig_include($this->env, $context, "@Swiftmailer/Collector/icon.svg"); + echo " + "; + // line 13 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + "; + } + // line 15 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 16 + echo " + "; + // line 17 + ob_start(); + // line 18 + echo "
    + Sent messages + "; + // line 20 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " +
    + + "; + // line 23 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 24 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 25 + echo "
    + "; + // line 26 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " + "; + // line 27 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo " +
    +
    + Is spooled? + "; + // line 31 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("yes") : ("no")); + echo " +
    + + "; + // line 34 + if ( !$this->getAttribute($context["loop"], "first", array())) { + // line 35 + echo "
    + "; + } + // line 37 + echo " "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 38 + echo " "; + } else { + // line 39 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 40 + echo "
    + "; + // line 41 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " mailer + "; + // line 42 + echo twig_escape_filter($this->env, (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "messageCount", array(0 => $context["name"]), "method", true, true)) ? (_twig_default_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "messageCount", array(0 => $context["name"]), "method"), 0)) : (0)), "html", null, true); + echo " +   ("; + // line 43 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo ") +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 46 + echo " "; + } + // line 47 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 48 + echo " + "; + // line 49 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")))); + echo " + "; + } + + $__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6->leave($__internal_0638da79ff35b27a1a5b759d5aba0e95a5612cffdf8cead4c3054c493d94c2c6_prof); + + + $__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc->leave($__internal_efcf71d81e3a7eb7e941444975c23b292e6e47fb9062654a9c22963e3cf3f3fc_prof); + + } + + // line 53 + public function block_menu($context, array $blocks = array()) + { + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10->enter($__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862->enter($__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 54 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 55 + echo " + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array())) ? ("") : ("disabled")); + echo "\"> + "; + // line 57 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 58 + echo " \"Swiftmailer\" + "; + } else { + // line 60 + echo " "; + echo twig_include($this->env, $context, "@Swiftmailer/Collector/icon.svg"); + echo " + "; + } + // line 62 + echo " + E-Mails + "; + // line 64 + if (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()) > 0)) { + // line 65 + echo " + "; + // line 66 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array()), "html", null, true); + echo " + + "; + } + // line 69 + echo " +"; + + $__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862->leave($__internal_ece63dd724ce654f62780697bdca2652cfe8c29e343e6d8d31f689d0fef0f862_prof); + + + $__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10->leave($__internal_eb631b353994b55ef2b3c417c97dab2bcc30a9522070ed217f2b40f9f8a86a10_prof); + + } + + // line 72 + public function block_panel($context, array $blocks = array()) + { + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6->enter($__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313->enter($__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 73 + echo " "; + $context["profiler_markup_version"] = ((array_key_exists("profiler_markup_version", $context)) ? (_twig_default_filter((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")), 1)) : (1)); + // line 74 + echo " + "; + // line 75 + if (((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1)) { + // line 76 + echo " + "; + } + // line 86 + echo " +

    E-mails

    + + "; + // line 89 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) { + // line 90 + echo "
    +

    No e-mail messages were sent.

    +
    + "; + } + // line 94 + echo " + "; + // line 95 + if ((((isset($context["profiler_markup_version"]) ? $context["profiler_markup_version"] : $this->getContext($context, "profiler_markup_version")) == 1) || (twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) > 1))) { + // line 96 + echo " + + + + + + + + + + "; + // line 106 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 107 + echo " + + + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 114 + echo " +
    Mailer NameNum. of messagesMessages statusNotes
    "; + // line 108 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo ""; + // line 109 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo ""; + // line 110 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo ""; + // line 111 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? ("This is the default mailer") : ("")); + echo "
    + "; + } else { + // line 117 + echo "
    + "; + // line 118 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 119 + echo "
    + "; + // line 120 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method"), "html", null, true); + echo " + "; + // line 121 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isSpool", array(0 => $context["name"]), "method")) ? ("spooled") : ("sent")); + echo " "; + echo ((($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messageCount", array(0 => $context["name"]), "method") == 1)) ? ("message") : ("messages")); + echo " +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 124 + echo "
    + "; + } + // line 126 + echo " + "; + // line 127 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 128 + echo " "; + if ((twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "mailers", array())) > 1)) { + // line 129 + echo "

    + "; + // line 130 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo " mailer + "; + // line 131 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "isDefaultMailer", array(0 => $context["name"]), "method")) ? ("(default app mailer)") : ("")); + echo " +

    + "; + } + // line 134 + echo " + "; + // line 135 + if ( !$this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")) { + // line 136 + echo "
    +

    No e-mail messages were sent.

    +
    + "; + } else { + // line 140 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "messages", array(0 => $context["name"]), "method")); + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["message"]) { + // line 141 + echo " "; + if (($this->getAttribute($context["loop"], "length", array()) > 1)) { + // line 142 + echo "

    E-mail #"; + echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", array()), "html", null, true); + echo " details

    + "; + } else { + // line 144 + echo "

    E-mail details

    + "; + } + // line 146 + echo " +
    +
    + Message headers +
    ";
    +                    // line 150
    +                    $context['_parent'] = $context;
    +                    $context['_seq'] = twig_ensure_traversable($this->getAttribute($this->getAttribute($context["message"], "headers", array()), "all", array()));
    +                    foreach ($context['_seq'] as $context["_key"] => $context["header"]) {
    +                        // line 151
    +                        echo twig_escape_filter($this->env, $context["header"], "html", null, true);
    +                    }
    +                    $_parent = $context['_parent'];
    +                    unset($context['_seq'], $context['_iterated'], $context['_key'], $context['header'], $context['_parent'], $context['loop']);
    +                    $context = array_intersect_key($context, $_parent) + $_parent;
    +                    // line 152
    +                    echo "
    +
    + +
    + Message body +
    ";
    +                    // line 158
    +                    if (($this->getAttribute((isset($context["messagePart"]) ? $context["messagePart"] : null), "charset", array(), "any", true, true) && $this->getAttribute($context["message"], "charset", array()))) {
    +                        // line 159
    +                        echo twig_escape_filter($this->env, twig_convert_encoding($this->getAttribute($context["message"], "body", array()), "UTF-8", $this->getAttribute($context["message"], "charset", array())), "html", null, true);
    +                    } else {
    +                        // line 161
    +                        echo twig_escape_filter($this->env, $this->getAttribute($context["message"], "body", array()), "html", null, true);
    +                    }
    +                    // line 163
    +                    echo "
    +
    + + "; + // line 166 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute($context["message"], "children", array())); + foreach ($context['_seq'] as $context["_key"] => $context["messagePart"]) { + if (twig_in_filter($this->getAttribute($context["messagePart"], "contentType", array()), array(0 => "text/plain", 1 => "text/html"))) { + // line 167 + echo "
    + Alternative part ("; + // line 168 + echo twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "contentType", array()), "html", null, true); + echo ") +
    ";
    +                            // line 170
    +                            if (($this->getAttribute($context["messagePart"], "charset", array(), "any", true, true) && $this->getAttribute($context["messagePart"], "charset", array()))) {
    +                                // line 171
    +                                echo twig_escape_filter($this->env, twig_convert_encoding($this->getAttribute($context["messagePart"], "body", array()), "UTF-8", $this->getAttribute($context["messagePart"], "charset", array())), "html", null, true);
    +                            } else {
    +                                // line 173
    +                                echo twig_escape_filter($this->env, $this->getAttribute($context["messagePart"], "body", array()), "html", null, true);
    +                            }
    +                            // line 175
    +                            echo "
    +
    + "; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['messagePart'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 178 + echo " + "; + // line 179 + $context["attachments"] = $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "extractAttachments", array(0 => $context["message"]), "method"); + // line 180 + echo " "; + if ((isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))) { + // line 181 + echo "
    + + "; + // line 183 + if ((twig_length_filter($this->env, (isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))) > 1)) { + // line 184 + echo " "; + echo twig_escape_filter($this->env, twig_length_filter($this->env, (isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))), "html", null, true); + echo " Attachments + "; + } else { + // line 186 + echo " 1 Attachment + "; + } + // line 188 + echo " + +
      + "; + // line 191 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable((isset($context["attachments"]) ? $context["attachments"] : $this->getContext($context, "attachments"))); + foreach ($context['_seq'] as $context["_key"] => $context["attachment"]) { + // line 192 + echo "
    1. + Filename: + "; + // line 194 + echo twig_escape_filter($this->env, $this->getAttribute($context["attachment"], "filename", array()), "html", null, true); + echo " +
    2. + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['attachment'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 197 + echo "
    +
    + "; + } + // line 200 + echo "
    + "; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['message'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 202 + echo " "; + } + // line 203 + echo " "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313->leave($__internal_226ae70b693af7a090fb1ddd003ab35f992ad33bc50d80257ea6e8cd215bb313_prof); + + + $__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6->leave($__internal_41fc4134c9684cbd9bd24ea0b59bdba53881a7179060e7ea36aab5614e2adae6_prof); + + } + + public function getTemplateName() + { + return "@Swiftmailer/Collector/swiftmailer.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 588 => 203, 585 => 202, 570 => 200, 565 => 197, 556 => 194, 552 => 192, 548 => 191, 543 => 188, 539 => 186, 533 => 184, 531 => 183, 527 => 181, 524 => 180, 522 => 179, 519 => 178, 510 => 175, 507 => 173, 504 => 171, 502 => 170, 498 => 168, 495 => 167, 490 => 166, 485 => 163, 482 => 161, 479 => 159, 477 => 158, 470 => 152, 464 => 151, 460 => 150, 454 => 146, 450 => 144, 444 => 142, 441 => 141, 423 => 140, 417 => 136, 415 => 135, 412 => 134, 406 => 131, 402 => 130, 399 => 129, 396 => 128, 392 => 127, 389 => 126, 385 => 124, 374 => 121, 370 => 120, 367 => 119, 363 => 118, 360 => 117, 355 => 114, 346 => 111, 342 => 110, 338 => 109, 334 => 108, 331 => 107, 327 => 106, 315 => 96, 313 => 95, 310 => 94, 304 => 90, 302 => 89, 297 => 86, 285 => 76, 283 => 75, 280 => 74, 277 => 73, 268 => 72, 257 => 69, 251 => 66, 248 => 65, 246 => 64, 242 => 62, 236 => 60, 232 => 58, 230 => 57, 226 => 56, 223 => 55, 220 => 54, 211 => 53, 198 => 49, 195 => 48, 192 => 47, 189 => 46, 180 => 43, 176 => 42, 172 => 41, 169 => 40, 164 => 39, 161 => 38, 147 => 37, 143 => 35, 141 => 34, 135 => 31, 128 => 27, 124 => 26, 121 => 25, 103 => 24, 101 => 23, 95 => 20, 91 => 18, 89 => 17, 86 => 16, 83 => 15, 78 => 13, 73 => 12, 68 => 10, 65 => 9, 62 => 8, 59 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if collector.messageCount %} + {% set icon %} + {% if profiler_markup_version == 1 %} + \"Swiftmailer\" + {{ collector.messageCount }} + {% else %} + {{ include('@Swiftmailer/Collector/icon.svg') }} + {{ collector.messageCount }} + {% endif %} + {% endset %} + + {% set text %} +
    + Sent messages + {{ collector.messageCount }} +
    + + {% if profiler_markup_version == 1 %} + {% for name in collector.mailers %} +
    + {{ name }} + {{ collector.messageCount(name) }} +
    +
    + Is spooled? + {{ collector.isSpool(name) ? 'yes' : 'no' }} +
    + + {% if not loop.first %} +
    + {% endif %} + {% endfor %} + {% else %} + {% for name in collector.mailers %} +
    + {{ name }} mailer + {{ collector.messageCount(name)|default(0) }} +   ({{ collector.isSpool(name) ? 'spooled' : 'sent' }}) +
    + {% endfor %} + {% endif %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': profiler_url }) }} + {% endif %} +{% endblock %} + +{% block menu %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + + {% if profiler_markup_version == 1 %} + \"Swiftmailer\" + {% else %} + {{ include('@Swiftmailer/Collector/icon.svg') }} + {% endif %} + + E-Mails + {% if collector.messageCount > 0 %} + + {{ collector.messageCount }} + + {% endif %} + +{% endblock %} + +{% block panel %} + {% set profiler_markup_version = profiler_markup_version|default(1) %} + + {% if profiler_markup_version == 1 %} + + {% endif %} + +

    E-mails

    + + {% if not collector.mailers %} +
    +

    No e-mail messages were sent.

    +
    + {% endif %} + + {% if profiler_markup_version == 1 or collector.mailers|length > 1 %} + + + + + + + + + + + {% for name in collector.mailers %} + + + + + + + {% endfor %} + +
    Mailer NameNum. of messagesMessages statusNotes
    {{ name }}{{ collector.messageCount(name) }}{{ collector.isSpool(name) ? 'spooled' : 'sent' }}{{ collector.isDefaultMailer(name) ? 'This is the default mailer' }}
    + {% else %} +
    + {% for name in collector.mailers %} +
    + {{ collector.messageCount(name) }} + {{ collector.isSpool(name) ? 'spooled' : 'sent' }} {{ collector.messageCount(name) == 1 ? 'message' : 'messages' }} +
    + {% endfor %} +
    + {% endif %} + + {% for name in collector.mailers %} + {% if collector.mailers|length > 1 %} +

    + {{ name }} mailer + {{ collector.isDefaultMailer(name) ? '(default app mailer)' }} +

    + {% endif %} + + {% if not collector.messages(name) %} +
    +

    No e-mail messages were sent.

    +
    + {% else %} + {% for message in collector.messages(name) %} + {% if loop.length > 1 %} +

    E-mail #{{ loop.index }} details

    + {% else %} +

    E-mail details

    + {% endif %} + +
    +
    + Message headers +
    {% for header in message.headers.all %}
    +                            {{- header -}}
    +                        {% endfor %}
    +
    + +
    + Message body +
    +                            {%- if messagePart.charset is defined and message.charset %}
    +                                {{- message.body|convert_encoding('UTF-8', message.charset) }}
    +                            {%- else %}
    +                                {{- message.body }}
    +                            {%- endif -%}
    +                        
    +
    + + {% for messagePart in message.children if messagePart.contentType in ['text/plain', 'text/html'] %} +
    + Alternative part ({{ messagePart.contentType }}) +
    +                                {%- if messagePart.charset is defined and messagePart.charset %}
    +                                    {{- messagePart.body|convert_encoding('UTF-8', messagePart.charset) }}
    +                                {%- else %}
    +                                    {{- messagePart.body }}
    +                                {%- endif -%}
    +                            
    +
    + {% endfor %} + + {% set attachments = collector.extractAttachments(message) %} + {% if attachments %} +
    + + {% if attachments|length > 1 %} + {{ attachments|length }} Attachments + {% else %} + 1 Attachment + {% endif %} + + +
      + {% for attachment in attachments %} +
    1. + Filename: + {{ attachment.filename }} +
    2. + {% endfor %} +
    +
    + {% endif %} +
    + {% endfor %} + {% endif %} + {% endfor %} +{% endblock %} +", "@Swiftmailer/Collector/swiftmailer.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views/Collector/swiftmailer.html.twig"); + } +} diff --git a/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php b/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php new file mode 100644 index 0000000000000000000000000000000000000000..3e66742accb5e8789570d52b997f4b154cd00e3b --- /dev/null +++ b/var/cache/dev/twig/d2/d25e65761c72401d28d80953b0c6e80bb705e6099fab1b761851b81cdd928abb.php @@ -0,0 +1,853 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@WebProfiler/Collector/config.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce->enter($__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/config.html.twig")); + + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792->enter($__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Collector/config.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce->leave($__internal_af1242a7860e7457319324184b104073a7ae28e714c1351d0712c492a9f444ce_prof); + + + $__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792->leave($__internal_962415e8d089aded5335a9c095c651176dc5237a6e2fd327c252a1212b426792_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8->enter($__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9->enter($__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if (("unknown" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 5 + echo " "; + $context["block_status"] = ""; + // line 6 + echo " "; + $context["symfony_version_status"] = "Unable to retrieve information about the Symfony version."; + // line 7 + echo " "; + } elseif (("eol" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 8 + echo " "; + $context["block_status"] = "red"; + // line 9 + echo " "; + $context["symfony_version_status"] = "This Symfony version will no longer receive security fixes."; + // line 10 + echo " "; + } elseif (("eom" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 11 + echo " "; + $context["block_status"] = "yellow"; + // line 12 + echo " "; + $context["symfony_version_status"] = "This Symfony version will only receive security fixes."; + // line 13 + echo " "; + } elseif (("dev" == $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()))) { + // line 14 + echo " "; + $context["block_status"] = "yellow"; + // line 15 + echo " "; + $context["symfony_version_status"] = "This Symfony version is still in the development phase."; + // line 16 + echo " "; + } else { + // line 17 + echo " "; + $context["block_status"] = ""; + // line 18 + echo " "; + $context["symfony_version_status"] = ""; + // line 19 + echo " "; + } + // line 20 + echo " + "; + // line 21 + ob_start(); + // line 22 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 23 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + "; + // line 24 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " + "; + } elseif ($this->getAttribute( // line 25 +(isset($context["collector"]) ? $context["collector"] : null), "symfonyState", array(), "any", true, true)) { + // line 26 + echo " + "; + // line 27 + echo twig_include($this->env, $context, "@WebProfiler/Icon/symfony.svg"); + echo " + + "; + // line 29 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " + "; + } + // line 31 + echo " "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 32 + echo " + "; + // line 33 + ob_start(); + // line 34 + echo "
    + "; + // line 35 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 36 + echo "
    + "; + // line 37 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + "; + // line 38 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " +
    + "; + } + // line 41 + echo " +
    + Profiler token + + "; + // line 45 + if ((isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url"))) { + // line 46 + echo " env, (isset($context["profiler_url"]) ? $context["profiler_url"] : $this->getContext($context, "profiler_url")), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); + echo " + "; + } else { + // line 48 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "token", array()), "html", null, true); + echo " + "; + } + // line 50 + echo " +
    + + "; + // line 53 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { + // line 54 + echo "
    + Kernel name + "; + // line 56 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); + echo " +
    + "; + } + // line 59 + echo " + "; + // line 60 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { + // line 61 + echo "
    + Environment + "; + // line 63 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); + echo " +
    + "; + } + // line 66 + echo " + "; + // line 67 + if ( !("n/a" === $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { + // line 68 + echo "
    + Debug + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("green") : ("red")); + echo "\">"; + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("enabled") : ("disabled")); + echo " +
    + "; + } + // line 73 + echo "
    + +
    +
    + PHP version + + "; + // line 79 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); + echo " +   env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_phpinfo"); + echo "\">View phpinfo() + +
    + +
    + PHP Extensions + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("green") : ("red")); + echo "\">xdebug + getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("green") : ("red")); + echo "\">accel +
    + +
    + PHP SAPI + "; + // line 92 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "sapiName", array()), "html", null, true); + echo " +
    +
    + +
    + "; + // line 97 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : null), "symfonyversion", array(), "any", true, true)) { + // line 98 + echo " + + "; + } + // line 121 + echo "
    + "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 123 + echo " + "; + // line 124 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => true, "name" => "config", "status" => (isset($context["block_status"]) ? $context["block_status"] : $this->getContext($context, "block_status")), "additional_classes" => "sf-toolbar-block-right", "block_attrs" => (("title=\"" . (isset($context["symfony_version_status"]) ? $context["symfony_version_status"] : $this->getContext($context, "symfony_version_status"))) . "\""))); + echo " +"; + + $__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9->leave($__internal_c936eb8e4ea5d1e7a8920432c23e5f639cad29681165155d81c5fea776e43ef9_prof); + + + $__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8->leave($__internal_8be3ea264cf3fe36e22ff21323624bb6d1c04ecbe4460ac0809721ff3a69fab8_prof); + + } + + // line 127 + public function block_menu($context, array $blocks = array()) + { + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130->enter($__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267->enter($__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 128 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()) == "eol")) ? ("red") : (((twig_in_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyState", array()), array(0 => "eom", 1 => "dev"))) ? ("yellow") : ("")))); + echo "\"> + "; + // line 129 + echo twig_include($this->env, $context, "@WebProfiler/Icon/config.svg"); + echo " + Configuration + +"; + + $__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267->leave($__internal_d314f330d57fee0c79daa4ab8e37893c78a04c7799d3e21c9837ecb2631f5267_prof); + + + $__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130->leave($__internal_f697cd7b6463c8d56cfe694aae3d62471ae4698f464069e189d957050b906130_prof); + + } + + // line 134 + public function block_panel($context, array $blocks = array()) + { + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e->enter($__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4->enter($__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 135 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array())) { + // line 136 + echo " "; + // line 137 + echo "

    Project Configuration

    + +
    +
    + "; + // line 141 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationname", array()), "html", null, true); + echo " + Application name +
    + +
    + "; + // line 146 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "applicationversion", array()), "html", null, true); + echo " + Application version +
    +
    + +

    + Based on Symfony "; + // line 152 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " +

    + "; + } else { + // line 155 + echo "

    Symfony Configuration

    + +
    +
    + "; + // line 159 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "symfonyversion", array()), "html", null, true); + echo " + Symfony version +
    + + "; + // line 163 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()))) { + // line 164 + echo "
    + "; + // line 165 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "appname", array()), "html", null, true); + echo " + Application name +
    + "; + } + // line 169 + echo " + "; + // line 170 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()))) { + // line 171 + echo "
    + "; + // line 172 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "env", array()), "html", null, true); + echo " + Environment +
    + "; + } + // line 176 + echo " + "; + // line 177 + if (("n/a" != $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array()))) { + // line 178 + echo "
    + "; + // line 179 + echo (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "debug", array())) ? ("enabled") : ("disabled")); + echo " + Debug +
    + "; + } + // line 183 + echo "
    + "; + } + // line 185 + echo " +

    PHP Configuration

    + +
    +
    + "; + // line 190 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "phpversion", array()), "html", null, true); + echo " + PHP version +
    + +
    + "; + // line 195 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasaccelerator", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + PHP acceleration +
    + +
    + "; + // line 200 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxdebug", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + Xdebug +
    +
    + +
    +
    + "; + // line 207 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haszendopcache", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + OPcache +
    + +
    + "; + // line 212 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasapc", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + APC +
    + +
    + "; + // line 217 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "hasxcache", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + XCache +
    + +
    + "; + // line 222 + echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "haseaccelerator", array())) ? ("yes") : ("no"))) . ".svg")); + echo " + EAccelerator +
    +
    + +

    + env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler_phpinfo"); + echo "\">View full PHP configuration +

    + + "; + // line 231 + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())) { + // line 232 + echo "

    Enabled Bundles ("; + echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())), "html", null, true); + echo ")

    + + + + + + + + + "; + // line 241 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable(twig_sort_filter(twig_get_array_keys_filter($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array())))); + foreach ($context['_seq'] as $context["_key"] => $context["name"]) { + // line 242 + echo " + + + + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['name'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 247 + echo " +
    NamePath
    "; + // line 243 + echo twig_escape_filter($this->env, $context["name"], "html", null, true); + echo ""; + // line 244 + echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "bundles", array()), $context["name"], array(), "array"), "html", null, true); + echo "
    + "; + } + + $__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4->leave($__internal_e34cc0036bd2be136c94633bc9726e3652e4a948b62aee8c6346c4f9975041d4_prof); + + + $__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e->leave($__internal_513578b85cc913b8ba479c7fea38a6d4de550c88d1e7e517d7ae15360ebd146e_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Collector/config.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 564 => 247, 555 => 244, 551 => 243, 548 => 242, 544 => 241, 531 => 232, 529 => 231, 523 => 228, 514 => 222, 506 => 217, 498 => 212, 490 => 207, 480 => 200, 472 => 195, 464 => 190, 457 => 185, 453 => 183, 446 => 179, 443 => 178, 441 => 177, 438 => 176, 431 => 172, 428 => 171, 426 => 170, 423 => 169, 416 => 165, 413 => 164, 411 => 163, 404 => 159, 398 => 155, 392 => 152, 383 => 146, 375 => 141, 369 => 137, 367 => 136, 364 => 135, 355 => 134, 341 => 129, 336 => 128, 327 => 127, 315 => 124, 312 => 123, 308 => 121, 295 => 110, 289 => 107, 284 => 106, 278 => 102, 276 => 101, 271 => 98, 269 => 97, 261 => 92, 253 => 87, 249 => 86, 240 => 80, 236 => 79, 228 => 73, 220 => 70, 216 => 68, 214 => 67, 211 => 66, 205 => 63, 201 => 61, 199 => 60, 196 => 59, 190 => 56, 186 => 54, 184 => 53, 179 => 50, 173 => 48, 165 => 46, 163 => 45, 157 => 41, 151 => 38, 147 => 37, 144 => 36, 142 => 35, 139 => 34, 137 => 33, 134 => 32, 131 => 31, 126 => 29, 121 => 27, 118 => 26, 116 => 25, 112 => 24, 107 => 23, 104 => 22, 102 => 21, 99 => 20, 96 => 19, 93 => 18, 90 => 17, 87 => 16, 84 => 15, 81 => 14, 78 => 13, 75 => 12, 72 => 11, 69 => 10, 66 => 9, 63 => 8, 60 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if 'unknown' == collector.symfonyState %} + {% set block_status = '' %} + {% set symfony_version_status = 'Unable to retrieve information about the Symfony version.' %} + {% elseif 'eol' == collector.symfonyState %} + {% set block_status = 'red' %} + {% set symfony_version_status = 'This Symfony version will no longer receive security fixes.' %} + {% elseif 'eom' == collector.symfonyState %} + {% set block_status = 'yellow' %} + {% set symfony_version_status = 'This Symfony version will only receive security fixes.' %} + {% elseif 'dev' == collector.symfonyState %} + {% set block_status = 'yellow' %} + {% set symfony_version_status = 'This Symfony version is still in the development phase.' %} + {% else %} + {% set block_status = '' %} + {% set symfony_version_status = '' %} + {% endif %} + + {% set icon %} + {% if collector.applicationname %} + {{ collector.applicationname }} + {{ collector.applicationversion }} + {% elseif collector.symfonyState is defined %} + + {{ include('@WebProfiler/Icon/symfony.svg') }} + + {{ collector.symfonyversion }} + {% endif %} + {% endset %} + + {% set text %} +
    + {% if collector.applicationname %} +
    + {{ collector.applicationname }} + {{ collector.applicationversion }} +
    + {% endif %} + +
    + Profiler token + + {% if profiler_url %} + {{ collector.token }} + {% else %} + {{ collector.token }} + {% endif %} + +
    + + {% if 'n/a' is not same as(collector.appname) %} +
    + Kernel name + {{ collector.appname }} +
    + {% endif %} + + {% if 'n/a' is not same as(collector.env) %} +
    + Environment + {{ collector.env }} +
    + {% endif %} + + {% if 'n/a' is not same as(collector.debug) %} +
    + Debug + {{ collector.debug ? 'enabled' : 'disabled' }} +
    + {% endif %} +
    + +
    +
    + PHP version + + {{ collector.phpversion }} +   View phpinfo() + +
    + +
    + PHP Extensions + xdebug + accel +
    + +
    + PHP SAPI + {{ collector.sapiName }} +
    +
    + +
    + {% if collector.symfonyversion is defined %} +
    + Resources + + {% if 'Silex' == collector.applicationname %} + + Read Silex Docs + + {% else %} + + Read Symfony {{ collector.symfonyversion }} Docs + + {% endif %} + +
    + + {% endif %} +
    + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: true, name: 'config', status: block_status, additional_classes: 'sf-toolbar-block-right', block_attrs: 'title=\"' ~ symfony_version_status ~ '\"' }) }} +{% endblock %} + +{% block menu %} + + {{ include('@WebProfiler/Icon/config.svg') }} + Configuration + +{% endblock %} + +{% block panel %} + {% if collector.applicationname %} + {# this application is not the Symfony framework #} +

    Project Configuration

    + +
    +
    + {{ collector.applicationname }} + Application name +
    + +
    + {{ collector.applicationversion }} + Application version +
    +
    + +

    + Based on Symfony {{ collector.symfonyversion }} +

    + {% else %} +

    Symfony Configuration

    + +
    +
    + {{ collector.symfonyversion }} + Symfony version +
    + + {% if 'n/a' != collector.appname %} +
    + {{ collector.appname }} + Application name +
    + {% endif %} + + {% if 'n/a' != collector.env %} +
    + {{ collector.env }} + Environment +
    + {% endif %} + + {% if 'n/a' != collector.debug %} +
    + {{ collector.debug ? 'enabled' : 'disabled' }} + Debug +
    + {% endif %} +
    + {% endif %} + +

    PHP Configuration

    + +
    +
    + {{ collector.phpversion }} + PHP version +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasaccelerator ? 'yes' : 'no') ~ '.svg') }} + PHP acceleration +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasxdebug ? 'yes' : 'no') ~ '.svg') }} + Xdebug +
    +
    + +
    +
    + {{ include('@WebProfiler/Icon/' ~ (collector.haszendopcache ? 'yes' : 'no') ~ '.svg') }} + OPcache +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasapc ? 'yes' : 'no') ~ '.svg') }} + APC +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.hasxcache ? 'yes' : 'no') ~ '.svg') }} + XCache +
    + +
    + {{ include('@WebProfiler/Icon/' ~ (collector.haseaccelerator ? 'yes' : 'no') ~ '.svg') }} + EAccelerator +
    +
    + +

    + View full PHP configuration +

    + + {% if collector.bundles %} +

    Enabled Bundles ({{ collector.bundles|length }})

    + + + + + + + + + {% for name in collector.bundles|keys|sort %} + + + + + {% endfor %} + +
    NamePath
    {{ name }}{{ collector.bundles[name] }}
    + {% endif %} +{% endblock %} +", "@WebProfiler/Collector/config.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig"); + } +} diff --git a/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php b/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php new file mode 100644 index 0000000000000000000000000000000000000000..0772ffc3afc1e7c8d2f3d83d22412d2e99917930 --- /dev/null +++ b/var/cache/dev/twig/e3/e3a429cdc51e58ec07ffb35c593e3648c64e25db63865d6b529e9c0b3a980581.php @@ -0,0 +1,97 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e->enter($__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_item.html.twig")); + + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c->enter($__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_item.html.twig")); + + // line 1 + echo "
    env, (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")), "html", null, true); + echo " sf-toolbar-status-"; + echo twig_escape_filter($this->env, ((array_key_exists("status", $context)) ? (_twig_default_filter((isset($context["status"]) ? $context["status"] : $this->getContext($context, "status")), "normal")) : ("normal")), "html", null, true); + echo " "; + echo twig_escape_filter($this->env, ((array_key_exists("additional_classes", $context)) ? (_twig_default_filter((isset($context["additional_classes"]) ? $context["additional_classes"] : $this->getContext($context, "additional_classes")), "")) : ("")), "html", null, true); + echo "\" "; + echo ((array_key_exists("block_attrs", $context)) ? (_twig_default_filter((isset($context["block_attrs"]) ? $context["block_attrs"] : $this->getContext($context, "block_attrs")), "")) : ("")); + echo "> + "; + // line 2 + if (( !array_key_exists("link", $context) || (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")))) { + echo "env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "panel" => (isset($context["name"]) ? $context["name"] : $this->getContext($context, "name")))), "html", null, true); + echo "\">"; + } + // line 3 + echo "
    "; + echo twig_escape_filter($this->env, ((array_key_exists("icon", $context)) ? (_twig_default_filter((isset($context["icon"]) ? $context["icon"] : $this->getContext($context, "icon")), "")) : ("")), "html", null, true); + echo "
    + "; + // line 4 + if (((array_key_exists("link", $context)) ? (_twig_default_filter((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), false)) : (false))) { + echo "
    "; + } + // line 5 + echo "
    "; + echo twig_escape_filter($this->env, ((array_key_exists("text", $context)) ? (_twig_default_filter((isset($context["text"]) ? $context["text"] : $this->getContext($context, "text")), "")) : ("")), "html", null, true); + echo "
    +
    +"; + + $__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e->leave($__internal_4cbb29225bde97ea472bb2f444373e44ae182587668a879b5a5e36419c82164e_prof); + + + $__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c->leave($__internal_60b4ae7f66bb8d0a7f7407aeb01751d9c6af12a544fcacb2473a4a560daac91c_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar_item.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 51 => 5, 47 => 4, 42 => 3, 36 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    + {% if link is not defined or link %}{% endif %} +
    {{ icon|default('') }}
    + {% if link|default(false) %}
    {% endif %} +
    {{ text|default('') }}
    +
    +", "@WebProfiler/Profiler/toolbar_item.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar_item.html.twig"); + } +} diff --git a/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php b/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php new file mode 100644 index 0000000000000000000000000000000000000000..276198b96051d0e4369ce28e23c39643197dcd22 --- /dev/null +++ b/var/cache/dev/twig/e9/e9514f8af168cd092a3c00c3acc18e905369826016c015c2b18db5579cf7e319.php @@ -0,0 +1,405 @@ +parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Debug/Profiler/dump.html.twig", 1); + $this->blocks = array( + 'toolbar' => array($this, 'block_toolbar'), + 'menu' => array($this, 'block_menu'), + 'panel' => array($this, 'block_panel'), + ); + } + + protected function doGetParent(array $context) + { + return "@WebProfiler/Profiler/layout.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8->enter($__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Debug/Profiler/dump.html.twig")); + + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce->enter($__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@Debug/Profiler/dump.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8->leave($__internal_8867180becebeaf70d7d1fce97a60b4cd54eb57ea4348d7626db8eb7f84acfa8_prof); + + + $__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce->leave($__internal_ab962779e199b209e255c8ae61780426bda2c19478ef38411615d1e798e6c1ce_prof); + + } + + // line 3 + public function block_toolbar($context, array $blocks = array()) + { + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0->enter($__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e->enter($__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "toolbar")); + + // line 4 + echo " "; + if ($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array())) { + // line 5 + echo " "; + ob_start(); + // line 6 + echo " "; + echo twig_include($this->env, $context, "@Debug/Profiler/icon.svg"); + echo " + "; + // line 7 + echo twig_escape_filter($this->env, $this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()), "html", null, true); + echo " + "; + $context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 9 + echo " + "; + // line 10 + ob_start(); + // line 11 + echo " "; + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); + foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { + // line 12 + echo "
    + + "; + // line 14 + if ($this->getAttribute($context["dump"], "file", array())) { + // line 15 + echo " "; + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); + // line 16 + echo " "; + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + // line 17 + echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } else { + // line 19 + echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 21 + echo " "; + } else { + // line 22 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 24 + echo " + line "; + // line 25 + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); + echo " + + "; + // line 27 + echo $this->getAttribute($context["dump"], "data", array()); + echo " +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + // line 30 + echo " "; + $context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); + // line 31 + echo " + "; + // line 32 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", array("link" => true)); + echo " + "; + } + + $__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e->leave($__internal_4cdb8e4c6a74471c0bd376765d6f4f0823dc31a7dbd03d7b336b94b297eec97e_prof); + + + $__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0->leave($__internal_02f26048e760b9ce3e6cf6b1ce46b6e81b6befadc87fcacb88bf4f125561ffe0_prof); + + } + + // line 36 + public function block_menu($context, array $blocks = array()) + { + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9->enter($__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d->enter($__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "menu")); + + // line 37 + echo " getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "dumpsCount", array()) == 0)) ? ("disabled") : ("")); + echo "\"> + "; + // line 38 + echo twig_include($this->env, $context, "@Debug/Profiler/icon.svg"); + echo " + Debug + +"; + + $__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d->leave($__internal_453b045620014158fdf258dcc02fff2d139749cf6ca0d8b37f0b0707b0d2e24d_prof); + + + $__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9->leave($__internal_c875b696507ca7cc0721e16d5c3d92acf10cfc1adce060a62af38d8f68a263c9_prof); + + } + + // line 43 + public function block_panel($context, array $blocks = array()) + { + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645->enter($__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d->enter($__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "panel")); + + // line 44 + echo "

    Dumped Contents

    + + "; + // line 46 + $context['_parent'] = $context; + $context['_seq'] = twig_ensure_traversable($this->getAttribute((isset($context["collector"]) ? $context["collector"] : $this->getContext($context, "collector")), "getDumps", array(0 => "html"), "method")); + $context['_iterated'] = false; + $context['loop'] = array( + 'parent' => $context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, + ); + if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof Countable)) { + $length = count($context['_seq']); + $context['loop']['revindex0'] = $length - 1; + $context['loop']['revindex'] = $length; + $context['loop']['length'] = $length; + $context['loop']['last'] = 1 === $length; + } + foreach ($context['_seq'] as $context["_key"] => $context["dump"]) { + // line 47 + echo "
    + In + "; + // line 49 + if ($this->getAttribute($context["dump"], "line", array())) { + // line 50 + echo " "; + $context["link"] = $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->getFileLink($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())); + // line 51 + echo " "; + if ((isset($context["link"]) ? $context["link"] : $this->getContext($context, "link"))) { + // line 52 + echo " env, (isset($context["link"]) ? $context["link"] : $this->getContext($context, "link")), "html", null, true); + echo "\" title=\""; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } else { + // line 54 + echo " env, $this->getAttribute($context["dump"], "file", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 56 + echo " "; + } else { + // line 57 + echo " "; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "name", array()), "html", null, true); + echo " + "; + } + // line 59 + echo " line env, $this->getAttribute($context["loop"], "index0", array()), "html", null, true); + echo "\">"; + echo twig_escape_filter($this->env, $this->getAttribute($context["dump"], "line", array()), "html", null, true); + echo ": + + +
    env, $this->getAttribute($context["loop"], "index0", array()), "html", null, true); + echo "\"> +
    + "; + // line 64 + echo (($this->getAttribute($context["dump"], "fileExcerpt", array())) ? ($this->getAttribute($context["dump"], "fileExcerpt", array())) : ($this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->fileExcerpt($this->getAttribute($context["dump"], "file", array()), $this->getAttribute($context["dump"], "line", array())))); + echo " +
    +
    + + "; + // line 68 + echo $this->getAttribute($context["dump"], "data", array()); + echo " +
    + "; + $context['_iterated'] = true; + ++$context['loop']['index0']; + ++$context['loop']['index']; + $context['loop']['first'] = false; + if (isset($context['loop']['length'])) { + --$context['loop']['revindex0']; + --$context['loop']['revindex']; + $context['loop']['last'] = 0 === $context['loop']['revindex0']; + } + } + if (!$context['_iterated']) { + // line 71 + echo "
    +

    No content was dumped.

    +
    + "; + } + $_parent = $context['_parent']; + unset($context['_seq'], $context['_iterated'], $context['_key'], $context['dump'], $context['_parent'], $context['loop']); + $context = array_intersect_key($context, $_parent) + $_parent; + + $__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d->leave($__internal_04893459056267efc50eabe9d320803488b00e3735ef36193b4f535b0fb9428d_prof); + + + $__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645->leave($__internal_0d4e3178ba60c322084e8f458bf8048865db40d89a22e4caadfd4d004dc62645_prof); + + } + + public function getTemplateName() + { + return "@Debug/Profiler/dump.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 287 => 71, 271 => 68, 264 => 64, 259 => 62, 250 => 59, 244 => 57, 241 => 56, 233 => 54, 223 => 52, 220 => 51, 217 => 50, 215 => 49, 211 => 47, 193 => 46, 189 => 44, 180 => 43, 166 => 38, 161 => 37, 152 => 36, 139 => 32, 136 => 31, 133 => 30, 124 => 27, 119 => 25, 116 => 24, 110 => 22, 107 => 21, 99 => 19, 89 => 17, 86 => 16, 83 => 15, 81 => 14, 77 => 12, 72 => 11, 70 => 10, 67 => 9, 62 => 7, 57 => 6, 54 => 5, 51 => 4, 42 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %} + +{% block toolbar %} + {% if collector.dumpsCount %} + {% set icon %} + {{ include('@Debug/Profiler/icon.svg') }} + {{ collector.dumpsCount }} + {% endset %} + + {% set text %} + {% for dump in collector.getDumps('html') %} +
    + + {% if dump.file %} + {% set link = dump.file|file_link(dump.line) %} + {% if link %} + {{ dump.name }} + {% else %} + {{ dump.name }} + {% endif %} + {% else %} + {{ dump.name }} + {% endif %} + + line {{ dump.line }} + + {{ dump.data|raw }} +
    + {% endfor %} + {% endset %} + + {{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { 'link': true }) }} + {% endif %} +{% endblock %} + +{% block menu %} + + {{ include('@Debug/Profiler/icon.svg') }} + Debug + +{% endblock %} + +{% block panel %} +

    Dumped Contents

    + + {% for dump in collector.getDumps('html') %} +
    + In + {% if dump.line %} + {% set link = dump.file|file_link(dump.line) %} + {% if link %} + {{ dump.name }} + {% else %} + {{ dump.name }} + {% endif %} + {% else %} + {{ dump.name }} + {% endif %} + line {{ dump.line }}: + + +
    +
    + {{ dump.fileExcerpt ? dump.fileExcerpt|raw : dump.file|file_excerpt(dump.line) }} +
    +
    + + {{ dump.data|raw }} +
    + {% else %} +
    +

    No content was dumped.

    +
    + {% endfor %} +{% endblock %} +", "@Debug/Profiler/dump.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views/Profiler/dump.html.twig"); + } +} diff --git a/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php b/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php new file mode 100644 index 0000000000000000000000000000000000000000..5f10f982f4c908ac707575c40063b36f4f49bbe0 --- /dev/null +++ b/var/cache/dev/twig/f4/f48da3c2f75197267021d66472bab40a3626a746a51e7cc5139b9a7140e2c607.php @@ -0,0 +1,333 @@ +parent = false; + + $this->blocks = array( + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba->enter($__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_js.html.twig")); + + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa->enter($__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "@WebProfiler/Profiler/toolbar_js.html.twig")); + + // line 1 + echo "
    env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "\" class=\"sf-toolbar sf-display-none\">
    +"; + // line 2 + echo twig_include($this->env, $context, "@WebProfiler/Profiler/base_js.html.twig"); + echo " +getContext($context, "csp_script_nonce"))) { + echo " nonce="; + echo twig_escape_filter($this->env, (isset($context["csp_script_nonce"]) ? $context["csp_script_nonce"] : $this->getContext($context, "csp_script_nonce")), "html", null, true); + } + echo ">/*getContext($context, "position")))) { + // line 6 + echo " var sfwdt = document.getElementById('sfwdt"; + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'); + document.body.insertBefore( + document.body.removeChild(sfwdt), + document.body.firstChild + ); + "; + } + // line 12 + echo " + Sfjs.load( + 'sfwdt"; + // line 14 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "', + '"; + // line 15 + echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_wdt", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "', + function(xhr, el) { + + /* Evaluate embedded scripts inside the toolbar */ + var i, scripts = [].slice.call(el.querySelectorAll('script')); + + for (i = 0; i < scripts.length; ++i) { + eval(scripts[i].firstChild.nodeValue); + } + + el.style.display = -1 !== xhr.responseText.indexOf('sf-toolbarreset') ? 'block' : 'none'; + + if (el.style.display == 'none') { + return; + } + + if (Sfjs.getPreference('toolbar/displayState') == 'none') { + document.getElementById('sfToolbarMainContent-"; + // line 32 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfToolbarClearer-"; + // line 33 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfMiniToolbar-"; + // line 34 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-"; + // line 36 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfToolbarClearer-"; + // line 37 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfMiniToolbar-"; + // line 38 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + } + + Sfjs.renderAjaxRequests(); + + /* Handle toolbar-info position */ + var toolbarBlocks = [].slice.call(el.querySelectorAll('.sf-toolbar-block')); + for (i = 0; i < toolbarBlocks.length; ++i) { + toolbarBlocks[i].onmouseover = function () { + var toolbarInfo = this.querySelectorAll('.sf-toolbar-info')[0]; + var pageWidth = document.body.clientWidth; + var elementWidth = toolbarInfo.offsetWidth; + var leftValue = (elementWidth + this.offsetLeft) - pageWidth; + var rightValue = (elementWidth + (pageWidth - this.offsetLeft)) - pageWidth; + + /* Reset right and left value, useful on window resize */ + toolbarInfo.style.right = ''; + toolbarInfo.style.left = ''; + + if (elementWidth > pageWidth) { + toolbarInfo.style.left = 0; + } + else if (leftValue > 0 && rightValue > 0) { + toolbarInfo.style.right = (rightValue * -1) + 'px'; + } else if (leftValue < 0) { + toolbarInfo.style.left = 0; + } else { + toolbarInfo.style.right = '0px'; + } + }; + } + Sfjs.addEventListener(document.getElementById('sfToolbarHideButton-"; + // line 69 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'), 'click', function (event) { + event.preventDefault(); + + var p = this.parentNode; + p.style.display = 'none'; + (p.previousElementSibling || p.previousSibling).style.display = 'none'; + document.getElementById('sfMiniToolbar-"; + // line 75 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + Sfjs.setPreference('toolbar/displayState', 'none'); + }); + Sfjs.addEventListener(document.getElementById('sfToolbarMiniToggler-"; + // line 78 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "'), 'click', function (event) { + event.preventDefault(); + + var elem = this.parentNode; + if (elem.style.display == 'none') { + document.getElementById('sfToolbarMainContent-"; + // line 83 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + document.getElementById('sfToolbarClearer-"; + // line 84 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'none'; + elem.style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-"; + // line 87 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + document.getElementById('sfToolbarClearer-"; + // line 88 + echo twig_escape_filter($this->env, (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")), "html", null, true); + echo "').style.display = 'block'; + elem.style.display = 'none' + } + + Sfjs.setPreference('toolbar/displayState', 'block'); + }) + }, + function(xhr) { + if (xhr.status !== 0) { + confirm('An error occurred while loading the web debug toolbar (' + xhr.status + ': ' + xhr.statusText + ').\\n\\nDo you want to open the profiler?') && (window.location = '"; + // line 97 + echo twig_escape_filter($this->env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\RoutingExtension')->getPath("_profiler", array("token" => (isset($context["token"]) ? $context["token"] : $this->getContext($context, "token")))), "html", null, true); + echo "'); + } + }, + { maxTries: 5 } + ); + })(); +/*]]>*/ +"; + + $__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba->leave($__internal_55106a2a5bcee49e41c7ceeb81fea0460219ec027e4229dd9934ca0fbd6141ba_prof); + + + $__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa->leave($__internal_54d4e7861cfff207c1fe44d22b8f0cd7412ac4a9e3b0d94c61f637ca233de9aa_prof); + + } + + public function getTemplateName() + { + return "@WebProfiler/Profiler/toolbar_js.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 186 => 97, 174 => 88, 170 => 87, 164 => 84, 160 => 83, 152 => 78, 146 => 75, 137 => 69, 103 => 38, 99 => 37, 95 => 36, 90 => 34, 86 => 33, 82 => 32, 62 => 15, 58 => 14, 54 => 12, 44 => 6, 42 => 5, 34 => 3, 30 => 2, 25 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("
    +{{ include('@WebProfiler/Profiler/base_js.html.twig') }} +/* pageWidth) { + toolbarInfo.style.left = 0; + } + else if (leftValue > 0 && rightValue > 0) { + toolbarInfo.style.right = (rightValue * -1) + 'px'; + } else if (leftValue < 0) { + toolbarInfo.style.left = 0; + } else { + toolbarInfo.style.right = '0px'; + } + }; + } + Sfjs.addEventListener(document.getElementById('sfToolbarHideButton-{{ token }}'), 'click', function (event) { + event.preventDefault(); + + var p = this.parentNode; + p.style.display = 'none'; + (p.previousElementSibling || p.previousSibling).style.display = 'none'; + document.getElementById('sfMiniToolbar-{{ token }}').style.display = 'block'; + Sfjs.setPreference('toolbar/displayState', 'none'); + }); + Sfjs.addEventListener(document.getElementById('sfToolbarMiniToggler-{{ token }}'), 'click', function (event) { + event.preventDefault(); + + var elem = this.parentNode; + if (elem.style.display == 'none') { + document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'none'; + document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'none'; + elem.style.display = 'block'; + } else { + document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'block'; + document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'block'; + elem.style.display = 'none' + } + + Sfjs.setPreference('toolbar/displayState', 'block'); + }) + }, + function(xhr) { + if (xhr.status !== 0) { + confirm('An error occurred while loading the web debug toolbar (' + xhr.status + ': ' + xhr.statusText + ').\\n\\nDo you want to open the profiler?') && (window.location = '{{ path(\"_profiler\", { \"token\": token }) }}'); + } + }, + { maxTries: 5 } + ); + })(); +/*]]>*/ +", "@WebProfiler/Profiler/toolbar_js.html.twig", "/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar_js.html.twig"); + } +} diff --git a/var/cache/test/annotations.map b/var/cache/test/annotations.map new file mode 100644 index 0000000000000000000000000000000000000000..ebe5ef70dec53eaf0784740aa10c1ebc1c943eb1 --- /dev/null +++ b/var/cache/test/annotations.map @@ -0,0 +1,3 @@ + 'Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller', +); \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainer.php b/var/cache/test/appTestDebugProjectContainer.php new file mode 100644 index 0000000000000000000000000000000000000000..88d49e1eeb1928389ea1b8a7947099f1b2ef6359 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.php @@ -0,0 +1,4330 @@ +targetDirs[$i] = $dir = dirname($dir); + } + $this->parameters = $this->getDefaultParameters(); + + $this->services = array(); + $this->methodMap = array( + 'annotation_reader' => 'getAnnotationReaderService', + 'annotations.reader' => 'getAnnotations_ReaderService', + 'assets.context' => 'getAssets_ContextService', + 'assets.packages' => 'getAssets_PackagesService', + 'cache.annotations' => 'getCache_AnnotationsService', + 'cache.app' => 'getCache_AppService', + 'cache.default_clearer' => 'getCache_DefaultClearerService', + 'cache.system' => 'getCache_SystemService', + 'cache_clearer' => 'getCacheClearerService', + 'cache_warmer' => 'getCacheWarmerService', + 'config_cache_factory' => 'getConfigCacheFactoryService', + 'controller_name_converter' => 'getControllerNameConverterService', + 'data_collector.dump' => 'getDataCollector_DumpService', + 'data_collector.form' => 'getDataCollector_FormService', + 'data_collector.form.extractor' => 'getDataCollector_Form_ExtractorService', + 'data_collector.request' => 'getDataCollector_RequestService', + 'data_collector.router' => 'getDataCollector_RouterService', + 'debug.argument_resolver' => 'getDebug_ArgumentResolverService', + 'debug.controller_resolver' => 'getDebug_ControllerResolverService', + 'debug.debug_handlers_listener' => 'getDebug_DebugHandlersListenerService', + 'debug.dump_listener' => 'getDebug_DumpListenerService', + 'debug.event_dispatcher' => 'getDebug_EventDispatcherService', + 'debug.file_link_formatter' => 'getDebug_FileLinkFormatterService', + 'debug.log_processor' => 'getDebug_LogProcessorService', + 'debug.security.access.decision_manager' => 'getDebug_Security_Access_DecisionManagerService', + 'debug.stopwatch' => 'getDebug_StopwatchService', + 'doctrine' => 'getDoctrineService', + 'doctrine.dbal.connection_factory' => 'getDoctrine_Dbal_ConnectionFactoryService', + 'doctrine.dbal.default_connection' => 'getDoctrine_Dbal_DefaultConnectionService', + 'doctrine.dbal.logger.profiling.default' => 'getDoctrine_Dbal_Logger_Profiling_DefaultService', + 'doctrine.orm.default_entity_listener_resolver' => 'getDoctrine_Orm_DefaultEntityListenerResolverService', + 'doctrine.orm.default_entity_manager' => 'getDoctrine_Orm_DefaultEntityManagerService', + 'doctrine.orm.default_entity_manager.property_info_extractor' => 'getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService', + 'doctrine.orm.default_listeners.attach_entity_listeners' => 'getDoctrine_Orm_DefaultListeners_AttachEntityListenersService', + 'doctrine.orm.default_manager_configurator' => 'getDoctrine_Orm_DefaultManagerConfiguratorService', + 'doctrine.orm.validator.unique' => 'getDoctrine_Orm_Validator_UniqueService', + 'doctrine.orm.validator_initializer' => 'getDoctrine_Orm_ValidatorInitializerService', + 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService', + 'doctrine_cache.providers.doctrine.orm.default_query_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService', + 'doctrine_cache.providers.doctrine.orm.default_result_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService', + 'file_locator' => 'getFileLocatorService', + 'filesystem' => 'getFilesystemService', + 'form.factory' => 'getForm_FactoryService', + 'form.registry' => 'getForm_RegistryService', + 'form.resolved_type_factory' => 'getForm_ResolvedTypeFactoryService', + 'form.server_params' => 'getForm_ServerParamsService', + 'form.type.birthday' => 'getForm_Type_BirthdayService', + 'form.type.button' => 'getForm_Type_ButtonService', + 'form.type.checkbox' => 'getForm_Type_CheckboxService', + 'form.type.choice' => 'getForm_Type_ChoiceService', + 'form.type.collection' => 'getForm_Type_CollectionService', + 'form.type.country' => 'getForm_Type_CountryService', + 'form.type.currency' => 'getForm_Type_CurrencyService', + 'form.type.date' => 'getForm_Type_DateService', + 'form.type.datetime' => 'getForm_Type_DatetimeService', + 'form.type.email' => 'getForm_Type_EmailService', + 'form.type.entity' => 'getForm_Type_EntityService', + 'form.type.file' => 'getForm_Type_FileService', + 'form.type.form' => 'getForm_Type_FormService', + 'form.type.hidden' => 'getForm_Type_HiddenService', + 'form.type.integer' => 'getForm_Type_IntegerService', + 'form.type.language' => 'getForm_Type_LanguageService', + 'form.type.locale' => 'getForm_Type_LocaleService', + 'form.type.money' => 'getForm_Type_MoneyService', + 'form.type.number' => 'getForm_Type_NumberService', + 'form.type.password' => 'getForm_Type_PasswordService', + 'form.type.percent' => 'getForm_Type_PercentService', + 'form.type.radio' => 'getForm_Type_RadioService', + 'form.type.range' => 'getForm_Type_RangeService', + 'form.type.repeated' => 'getForm_Type_RepeatedService', + 'form.type.reset' => 'getForm_Type_ResetService', + 'form.type.search' => 'getForm_Type_SearchService', + 'form.type.submit' => 'getForm_Type_SubmitService', + 'form.type.text' => 'getForm_Type_TextService', + 'form.type.textarea' => 'getForm_Type_TextareaService', + 'form.type.time' => 'getForm_Type_TimeService', + 'form.type.timezone' => 'getForm_Type_TimezoneService', + 'form.type.url' => 'getForm_Type_UrlService', + 'form.type_extension.csrf' => 'getForm_TypeExtension_CsrfService', + 'form.type_extension.form.data_collector' => 'getForm_TypeExtension_Form_DataCollectorService', + 'form.type_extension.form.http_foundation' => 'getForm_TypeExtension_Form_HttpFoundationService', + 'form.type_extension.form.validator' => 'getForm_TypeExtension_Form_ValidatorService', + 'form.type_extension.repeated.validator' => 'getForm_TypeExtension_Repeated_ValidatorService', + 'form.type_extension.submit.validator' => 'getForm_TypeExtension_Submit_ValidatorService', + 'form.type_extension.upload.validator' => 'getForm_TypeExtension_Upload_ValidatorService', + 'form.type_guesser.doctrine' => 'getForm_TypeGuesser_DoctrineService', + 'form.type_guesser.validator' => 'getForm_TypeGuesser_ValidatorService', + 'fragment.handler' => 'getFragment_HandlerService', + 'fragment.listener' => 'getFragment_ListenerService', + 'fragment.renderer.esi' => 'getFragment_Renderer_EsiService', + 'fragment.renderer.hinclude' => 'getFragment_Renderer_HincludeService', + 'fragment.renderer.inline' => 'getFragment_Renderer_InlineService', + 'fragment.renderer.ssi' => 'getFragment_Renderer_SsiService', + 'http_kernel' => 'getHttpKernelService', + 'kernel' => 'getKernelService', + 'kernel.class_cache.cache_warmer' => 'getKernel_ClassCache_CacheWarmerService', + 'locale_listener' => 'getLocaleListenerService', + 'logger' => 'getLoggerService', + 'monolog.activation_strategy.not_found' => 'getMonolog_ActivationStrategy_NotFoundService', + 'monolog.handler.console' => 'getMonolog_Handler_ConsoleService', + 'monolog.handler.fingers_crossed.error_level_activation_strategy' => 'getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService', + 'monolog.handler.main' => 'getMonolog_Handler_MainService', + 'monolog.handler.null_internal' => 'getMonolog_Handler_NullInternalService', + 'monolog.logger.cache' => 'getMonolog_Logger_CacheService', + 'monolog.logger.doctrine' => 'getMonolog_Logger_DoctrineService', + 'monolog.logger.event' => 'getMonolog_Logger_EventService', + 'monolog.logger.php' => 'getMonolog_Logger_PhpService', + 'monolog.logger.profiler' => 'getMonolog_Logger_ProfilerService', + 'monolog.logger.request' => 'getMonolog_Logger_RequestService', + 'monolog.logger.router' => 'getMonolog_Logger_RouterService', + 'monolog.logger.security' => 'getMonolog_Logger_SecurityService', + 'monolog.logger.templating' => 'getMonolog_Logger_TemplatingService', + 'monolog.logger.translation' => 'getMonolog_Logger_TranslationService', + 'monolog.processor.psr_log_message' => 'getMonolog_Processor_PsrLogMessageService', + 'profiler' => 'getProfilerService', + 'profiler_listener' => 'getProfilerListenerService', + 'property_accessor' => 'getPropertyAccessorService', + 'request_stack' => 'getRequestStackService', + 'response_listener' => 'getResponseListenerService', + 'router' => 'getRouterService', + 'router.request_context' => 'getRouter_RequestContextService', + 'router_listener' => 'getRouterListenerService', + 'routing.loader' => 'getRouting_LoaderService', + 'security.authentication.guard_handler' => 'getSecurity_Authentication_GuardHandlerService', + 'security.authentication.manager' => 'getSecurity_Authentication_ManagerService', + 'security.authentication.trust_resolver' => 'getSecurity_Authentication_TrustResolverService', + 'security.authentication_utils' => 'getSecurity_AuthenticationUtilsService', + 'security.authorization_checker' => 'getSecurity_AuthorizationCheckerService', + 'security.csrf.token_manager' => 'getSecurity_Csrf_TokenManagerService', + 'security.encoder_factory' => 'getSecurity_EncoderFactoryService', + 'security.firewall' => 'getSecurity_FirewallService', + 'security.firewall.map' => 'getSecurity_Firewall_MapService', + 'security.firewall.map.context.dev' => 'getSecurity_Firewall_Map_Context_DevService', + 'security.firewall.map.context.main' => 'getSecurity_Firewall_Map_Context_MainService', + 'security.logout_url_generator' => 'getSecurity_LogoutUrlGeneratorService', + 'security.password_encoder' => 'getSecurity_PasswordEncoderService', + 'security.rememberme.response_listener' => 'getSecurity_Rememberme_ResponseListenerService', + 'security.role_hierarchy' => 'getSecurity_RoleHierarchyService', + 'security.token_storage' => 'getSecurity_TokenStorageService', + 'security.validator.user_password' => 'getSecurity_Validator_UserPasswordService', + 'sensio_distribution.security_checker' => 'getSensioDistribution_SecurityCheckerService', + 'sensio_distribution.security_checker.command' => 'getSensioDistribution_SecurityChecker_CommandService', + 'sensio_framework_extra.cache.listener' => 'getSensioFrameworkExtra_Cache_ListenerService', + 'sensio_framework_extra.controller.listener' => 'getSensioFrameworkExtra_Controller_ListenerService', + 'sensio_framework_extra.converter.datetime' => 'getSensioFrameworkExtra_Converter_DatetimeService', + 'sensio_framework_extra.converter.doctrine.orm' => 'getSensioFrameworkExtra_Converter_Doctrine_OrmService', + 'sensio_framework_extra.converter.listener' => 'getSensioFrameworkExtra_Converter_ListenerService', + 'sensio_framework_extra.converter.manager' => 'getSensioFrameworkExtra_Converter_ManagerService', + 'sensio_framework_extra.security.listener' => 'getSensioFrameworkExtra_Security_ListenerService', + 'sensio_framework_extra.view.guesser' => 'getSensioFrameworkExtra_View_GuesserService', + 'sensio_framework_extra.view.listener' => 'getSensioFrameworkExtra_View_ListenerService', + 'service_container' => 'getServiceContainerService', + 'session' => 'getSessionService', + 'session.handler' => 'getSession_HandlerService', + 'session.save_listener' => 'getSession_SaveListenerService', + 'session.storage.filesystem' => 'getSession_Storage_FilesystemService', + 'session.storage.metadata_bag' => 'getSession_Storage_MetadataBagService', + 'session.storage.native' => 'getSession_Storage_NativeService', + 'session.storage.php_bridge' => 'getSession_Storage_PhpBridgeService', + 'session_listener' => 'getSessionListenerService', + 'streamed_response_listener' => 'getStreamedResponseListenerService', + 'swiftmailer.email_sender.listener' => 'getSwiftmailer_EmailSender_ListenerService', + 'swiftmailer.mailer.default' => 'getSwiftmailer_Mailer_DefaultService', + 'swiftmailer.mailer.default.plugin.messagelogger' => 'getSwiftmailer_Mailer_Default_Plugin_MessageloggerService', + 'swiftmailer.mailer.default.spool' => 'getSwiftmailer_Mailer_Default_SpoolService', + 'swiftmailer.mailer.default.transport' => 'getSwiftmailer_Mailer_Default_TransportService', + 'swiftmailer.mailer.default.transport.eventdispatcher' => 'getSwiftmailer_Mailer_Default_Transport_EventdispatcherService', + 'swiftmailer.mailer.default.transport.real' => 'getSwiftmailer_Mailer_Default_Transport_RealService', + 'templating' => 'getTemplatingService', + 'templating.filename_parser' => 'getTemplating_FilenameParserService', + 'templating.helper.logout_url' => 'getTemplating_Helper_LogoutUrlService', + 'templating.helper.security' => 'getTemplating_Helper_SecurityService', + 'templating.loader' => 'getTemplating_LoaderService', + 'templating.locator' => 'getTemplating_LocatorService', + 'templating.name_parser' => 'getTemplating_NameParserService', + 'test.client' => 'getTest_ClientService', + 'test.client.cookiejar' => 'getTest_Client_CookiejarService', + 'test.client.history' => 'getTest_Client_HistoryService', + 'test.session.listener' => 'getTest_Session_ListenerService', + 'translation.dumper.csv' => 'getTranslation_Dumper_CsvService', + 'translation.dumper.ini' => 'getTranslation_Dumper_IniService', + 'translation.dumper.json' => 'getTranslation_Dumper_JsonService', + 'translation.dumper.mo' => 'getTranslation_Dumper_MoService', + 'translation.dumper.php' => 'getTranslation_Dumper_PhpService', + 'translation.dumper.po' => 'getTranslation_Dumper_PoService', + 'translation.dumper.qt' => 'getTranslation_Dumper_QtService', + 'translation.dumper.res' => 'getTranslation_Dumper_ResService', + 'translation.dumper.xliff' => 'getTranslation_Dumper_XliffService', + 'translation.dumper.yml' => 'getTranslation_Dumper_YmlService', + 'translation.extractor' => 'getTranslation_ExtractorService', + 'translation.extractor.php' => 'getTranslation_Extractor_PhpService', + 'translation.loader' => 'getTranslation_LoaderService', + 'translation.loader.csv' => 'getTranslation_Loader_CsvService', + 'translation.loader.dat' => 'getTranslation_Loader_DatService', + 'translation.loader.ini' => 'getTranslation_Loader_IniService', + 'translation.loader.json' => 'getTranslation_Loader_JsonService', + 'translation.loader.mo' => 'getTranslation_Loader_MoService', + 'translation.loader.php' => 'getTranslation_Loader_PhpService', + 'translation.loader.po' => 'getTranslation_Loader_PoService', + 'translation.loader.qt' => 'getTranslation_Loader_QtService', + 'translation.loader.res' => 'getTranslation_Loader_ResService', + 'translation.loader.xliff' => 'getTranslation_Loader_XliffService', + 'translation.loader.yml' => 'getTranslation_Loader_YmlService', + 'translation.writer' => 'getTranslation_WriterService', + 'translator' => 'getTranslatorService', + 'translator.default' => 'getTranslator_DefaultService', + 'translator.selector' => 'getTranslator_SelectorService', + 'translator_listener' => 'getTranslatorListenerService', + 'twig' => 'getTwigService', + 'twig.controller.exception' => 'getTwig_Controller_ExceptionService', + 'twig.controller.preview_error' => 'getTwig_Controller_PreviewErrorService', + 'twig.exception_listener' => 'getTwig_ExceptionListenerService', + 'twig.form.renderer' => 'getTwig_Form_RendererService', + 'twig.loader' => 'getTwig_LoaderService', + 'twig.profile' => 'getTwig_ProfileService', + 'twig.runtime.httpkernel' => 'getTwig_Runtime_HttpkernelService', + 'twig.translation.extractor' => 'getTwig_Translation_ExtractorService', + 'uri_signer' => 'getUriSignerService', + 'validate_request_listener' => 'getValidateRequestListenerService', + 'validator' => 'getValidatorService', + 'validator.builder' => 'getValidator_BuilderService', + 'validator.email' => 'getValidator_EmailService', + 'validator.expression' => 'getValidator_ExpressionService', + 'var_dumper.cli_dumper' => 'getVarDumper_CliDumperService', + 'var_dumper.cloner' => 'getVarDumper_ClonerService', + 'web_profiler.controller.exception' => 'getWebProfiler_Controller_ExceptionService', + 'web_profiler.controller.profiler' => 'getWebProfiler_Controller_ProfilerService', + 'web_profiler.controller.router' => 'getWebProfiler_Controller_RouterService', + ); + $this->privates = array( + 'annotations.reader' => true, + 'cache.annotations' => true, + 'controller_name_converter' => true, + 'debug.file_link_formatter' => true, + 'debug.log_processor' => true, + 'debug.security.access.decision_manager' => true, + 'doctrine.dbal.logger.profiling.default' => true, + 'form.server_params' => true, + 'monolog.processor.psr_log_message' => true, + 'router.request_context' => true, + 'security.authentication.manager' => true, + 'security.authentication.trust_resolver' => true, + 'security.firewall.map' => true, + 'security.logout_url_generator' => true, + 'security.role_hierarchy' => true, + 'session.storage.metadata_bag' => true, + 'swiftmailer.mailer.default.transport.eventdispatcher' => true, + 'templating.locator' => true, + 'translator.selector' => true, + ); + $this->aliases = array( + 'cache.app_clearer' => 'cache.default_clearer', + 'console.command.sensiolabs_security_command_securitycheckercommand' => 'sensio_distribution.security_checker.command', + 'database_connection' => 'doctrine.dbal.default_connection', + 'doctrine.orm.default_metadata_cache' => 'doctrine_cache.providers.doctrine.orm.default_metadata_cache', + 'doctrine.orm.default_query_cache' => 'doctrine_cache.providers.doctrine.orm.default_query_cache', + 'doctrine.orm.default_result_cache' => 'doctrine_cache.providers.doctrine.orm.default_result_cache', + 'doctrine.orm.entity_manager' => 'doctrine.orm.default_entity_manager', + 'event_dispatcher' => 'debug.event_dispatcher', + 'mailer' => 'swiftmailer.mailer.default', + 'session.storage' => 'session.storage.filesystem', + 'swiftmailer.mailer' => 'swiftmailer.mailer.default', + 'swiftmailer.plugin.messagelogger' => 'swiftmailer.mailer.default.plugin.messagelogger', + 'swiftmailer.spool' => 'swiftmailer.mailer.default.spool', + 'swiftmailer.transport' => 'swiftmailer.mailer.default.transport', + 'swiftmailer.transport.real' => 'swiftmailer.mailer.default.transport.real', + ); + } + + /** + * {@inheritdoc} + */ + public function compile() + { + throw new LogicException('You cannot compile a dumped frozen container.'); + } + + /** + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + + /** + * Gets the 'annotation_reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Annotations\CachedReader A Doctrine\Common\Annotations\CachedReader instance + */ + protected function getAnnotationReaderService() + { + return $this->services['annotation_reader'] = new \Doctrine\Common\Annotations\CachedReader(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, new \Symfony\Component\Cache\DoctrineProvider(\Symfony\Component\Cache\Adapter\PhpArrayAdapter::create((__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'})), true); + } + + /** + * Gets the 'assets.context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Context\RequestStackContext A Symfony\Component\Asset\Context\RequestStackContext instance + */ + protected function getAssets_ContextService() + { + return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext($this->get('request_stack')); + } + + /** + * Gets the 'assets.packages' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Asset\Packages A Symfony\Component\Asset\Packages instance + */ + protected function getAssets_PackagesService() + { + return $this->services['assets.packages'] = new \Symfony\Component\Asset\Packages(new \Symfony\Component\Asset\PathPackage('', new \Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy(), $this->get('assets.context')), array()); + } + + /** + * Gets the 'cache.app' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\FilesystemAdapter A Symfony\Component\Cache\Adapter\FilesystemAdapter instance + */ + protected function getCache_AppService() + { + $this->services['cache.app'] = $instance = new \Symfony\Component\Cache\Adapter\FilesystemAdapter('0+VBWiRPDo', 0, (__DIR__.'/pools')); + + if ($this->has('monolog.logger.cache')) { + $instance->setLogger($this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + return $instance; + } + + /** + * Gets the 'cache.default_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer A Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer instance + */ + protected function getCache_DefaultClearerService() + { + $this->services['cache.default_clearer'] = $instance = new \Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer(); + + $instance->addPool($this->get('cache.app')); + $instance->addPool($this->get('cache.system')); + $instance->addPool(${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'cache.system' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_SystemService() + { + return $this->services['cache.system'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('vCVYJJz-Tw', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'cache_clearer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer A Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer instance + */ + protected function getCacheClearerService() + { + return $this->services['cache_clearer'] = new \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer(array(0 => $this->get('cache.default_clearer'))); + } + + /** + * Gets the 'cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate A Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate instance + */ + protected function getCacheWarmerService() + { + $a = $this->get('kernel'); + $b = $this->get('templating.filename_parser'); + + $c = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder($a, $b, ($this->targetDirs[3].'/app/Resources')); + + return $this->services['cache_warmer'] = new \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate(array(0 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer($c, ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}), 1 => $this->get('kernel.class_cache.cache_warmer'), 2 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer($this->get('translator')), 3 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer($this->get('validator.builder'), (__DIR__.'/validation.php'), \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('5TgWxoNxFc', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE))), 4 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer($this->get('router')), 5 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer(${($_ = isset($this->services['annotations.reader']) ? $this->services['annotations.reader'] : $this->getAnnotations_ReaderService()) && false ?: '_'}, (__DIR__.'/annotations.php'), ${($_ = isset($this->services['cache.annotations']) ? $this->services['cache.annotations'] : $this->getCache_AnnotationsService()) && false ?: '_'}), 6 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer($this, $c, array()), 7 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer($this->get('twig'), new \Symfony\Bundle\TwigBundle\TemplateIterator($a, ($this->targetDirs[3].'/app'), array())), 8 => new \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer($this->get('doctrine')))); + } + + /** + * Gets the 'config_cache_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Config\ResourceCheckerConfigCacheFactory A Symfony\Component\Config\ResourceCheckerConfigCacheFactory instance + */ + protected function getConfigCacheFactoryService() + { + return $this->services['config_cache_factory'] = new \Symfony\Component\Config\ResourceCheckerConfigCacheFactory(array(0 => new \Symfony\Component\Config\Resource\SelfCheckingResourceChecker())); + } + + /** + * Gets the 'data_collector.dump' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector A Symfony\Component\HttpKernel\DataCollector\DumpDataCollector instance + */ + protected function getDataCollector_DumpService() + { + return $this->services['data_collector.dump'] = new \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector($this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, 'UTF-8', NULL, NULL); + } + + /** + * Gets the 'data_collector.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataCollector A Symfony\Component\Form\Extension\DataCollector\FormDataCollector instance + */ + protected function getDataCollector_FormService() + { + return $this->services['data_collector.form'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataCollector($this->get('data_collector.form.extractor'), false); + } + + /** + * Gets the 'data_collector.form.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor A Symfony\Component\Form\Extension\DataCollector\FormDataExtractor instance + */ + protected function getDataCollector_Form_ExtractorService() + { + return $this->services['data_collector.form.extractor'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor(); + } + + /** + * Gets the 'data_collector.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector instance + */ + protected function getDataCollector_RequestService() + { + return $this->services['data_collector.request'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector(); + } + + /** + * Gets the 'data_collector.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector instance + */ + protected function getDataCollector_RouterService() + { + return $this->services['data_collector.router'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector(); + } + + /** + * Gets the 'debug.argument_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver A Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver instance + */ + protected function getDebug_ArgumentResolverService() + { + return $this->services['debug.argument_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableArgumentResolver(new \Symfony\Component\HttpKernel\Controller\ArgumentResolver(new \Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory(), array(0 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver(), 1 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver(), 2 => new \Symfony\Bundle\SecurityBundle\SecurityUserValueResolver($this->get('security.token_storage')), 3 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver(), 4 => new \Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver())), $this->get('debug.stopwatch')); + } + + /** + * Gets the 'debug.controller_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver A Symfony\Component\HttpKernel\Controller\TraceableControllerResolver instance + */ + protected function getDebug_ControllerResolverService() + { + return $this->services['debug.controller_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver(new \Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver($this, ${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)), $this->get('debug.stopwatch'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'debug.debug_handlers_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener A Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instance + */ + protected function getDebug_DebugHandlersListenerService() + { + return $this->services['debug.debug_handlers_listener'] = new \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener(NULL, $this->get('monolog.logger.php', ContainerInterface::NULL_ON_INVALID_REFERENCE), -1, -1, true, ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}, true); + } + + /** + * Gets the 'debug.dump_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\DumpListener A Symfony\Component\HttpKernel\EventListener\DumpListener instance + */ + protected function getDebug_DumpListenerService() + { + return $this->services['debug.dump_listener'] = new \Symfony\Component\HttpKernel\EventListener\DumpListener($this->get('var_dumper.cloner'), $this->get('var_dumper.cli_dumper')); + } + + /** + * Gets the 'debug.event_dispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher A Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher instance + */ + protected function getDebug_EventDispatcherService() + { + $this->services['debug.event_dispatcher'] = $instance = new \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher(new \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher($this), $this->get('debug.stopwatch'), $this->get('monolog.logger.event', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->addListenerService('kernel.controller', array(0 => 'data_collector.router', 1 => 'onKernelController'), 0); + $instance->addSubscriberService('response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener'); + $instance->addSubscriberService('streamed_response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener'); + $instance->addSubscriberService('locale_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener'); + $instance->addSubscriberService('validate_request_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener'); + $instance->addSubscriberService('translator_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\TranslatorListener'); + $instance->addSubscriberService('test.session.listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\TestSessionListener'); + $instance->addSubscriberService('session_listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener'); + $instance->addSubscriberService('session.save_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\SaveSessionListener'); + $instance->addSubscriberService('fragment.listener', 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener'); + $instance->addSubscriberService('profiler_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener'); + $instance->addSubscriberService('data_collector.request', 'Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RequestDataCollector'); + $instance->addSubscriberService('debug.debug_handlers_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener'); + $instance->addSubscriberService('router_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener'); + $instance->addSubscriberService('security.firewall', 'Symfony\\Component\\Security\\Http\\Firewall'); + $instance->addSubscriberService('security.rememberme.response_listener', 'Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener'); + $instance->addSubscriberService('twig.exception_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener'); + $instance->addSubscriberService('monolog.handler.console', 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler'); + $instance->addSubscriberService('swiftmailer.email_sender.listener', 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener'); + $instance->addSubscriberService('sensio_framework_extra.controller.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener'); + $instance->addSubscriberService('sensio_framework_extra.converter.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener'); + $instance->addSubscriberService('sensio_framework_extra.view.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener'); + $instance->addSubscriberService('sensio_framework_extra.cache.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener'); + $instance->addSubscriberService('sensio_framework_extra.security.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener'); + $instance->addSubscriberService('debug.dump_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener'); + + return $instance; + } + + /** + * Gets the 'debug.stopwatch' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Stopwatch\Stopwatch A Symfony\Component\Stopwatch\Stopwatch instance + */ + protected function getDebug_StopwatchService() + { + return $this->services['debug.stopwatch'] = new \Symfony\Component\Stopwatch\Stopwatch(); + } + + /** + * Gets the 'doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Registry A Doctrine\Bundle\DoctrineBundle\Registry instance + */ + protected function getDoctrineService() + { + return $this->services['doctrine'] = new \Doctrine\Bundle\DoctrineBundle\Registry($this, array('default' => 'doctrine.dbal.default_connection'), array('default' => 'doctrine.orm.default_entity_manager'), 'default', 'default'); + } + + /** + * Gets the 'doctrine.dbal.connection_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ConnectionFactory A Doctrine\Bundle\DoctrineBundle\ConnectionFactory instance + */ + protected function getDoctrine_Dbal_ConnectionFactoryService() + { + return $this->services['doctrine.dbal.connection_factory'] = new \Doctrine\Bundle\DoctrineBundle\ConnectionFactory(array()); + } + + /** + * Gets the 'doctrine.dbal.default_connection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\DBAL\Connection A Doctrine\DBAL\Connection instance + */ + protected function getDoctrine_Dbal_DefaultConnectionService() + { + $a = new \Doctrine\DBAL\Logging\LoggerChain(); + $a->addLogger(new \Symfony\Bridge\Doctrine\Logger\DbalLogger($this->get('monolog.logger.doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $a->addLogger(${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $b = new \Doctrine\DBAL\Configuration(); + $b->setSQLLogger($a); + + $c = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this); + $c->addEventListener(array(0 => 'loadClassMetadata'), $this->get('doctrine.orm.default_listeners.attach_entity_listeners')); + + return $this->services['doctrine.dbal.default_connection'] = $this->get('doctrine.dbal.connection_factory')->createConnection(array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => NULL, 'dbname' => 'symfony', 'user' => 'root', 'password' => NULL, 'charset' => 'UTF8', 'driverOptions' => array(), 'defaultTableOptions' => array()), $b, $c, array()); + } + + /** + * Gets the 'doctrine.orm.default_entity_listener_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver A Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver instance + */ + protected function getDoctrine_Orm_DefaultEntityListenerResolverService() + { + return $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver($this); + } + + /** + * Gets the 'doctrine.orm.default_entity_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @param bool $lazyLoad whether to try lazy-loading the service with a proxy + * + * @return \Doctrine\ORM\EntityManager A Doctrine\ORM\EntityManager instance + */ + protected function getDoctrine_Orm_DefaultEntityManagerService($lazyLoad = true) + { + $a = new \Doctrine\ORM\Configuration(); + $a->setEntityNamespaces(array()); + $a->setMetadataCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_metadata_cache')); + $a->setQueryCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_query_cache')); + $a->setResultCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_result_cache')); + $a->setMetadataDriverImpl(new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain()); + $a->setProxyDir((__DIR__.'/doctrine/orm/Proxies')); + $a->setProxyNamespace('Proxies'); + $a->setAutoGenerateProxyClasses(true); + $a->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory'); + $a->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository'); + $a->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy()); + $a->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy()); + $a->setEntityListenerResolver($this->get('doctrine.orm.default_entity_listener_resolver')); + + $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($this->get('doctrine.dbal.default_connection'), $a); + + $this->get('doctrine.orm.default_manager_configurator')->configure($instance); + + return $instance; + } + + /** + * Gets the 'doctrine.orm.default_entity_manager.property_info_extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor A Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor instance + */ + protected function getDoctrine_Orm_DefaultEntityManager_PropertyInfoExtractorService() + { + return $this->services['doctrine.orm.default_entity_manager.property_info_extractor'] = new \Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor($this->get('doctrine.orm.default_entity_manager')->getMetadataFactory()); + } + + /** + * Gets the 'doctrine.orm.default_listeners.attach_entity_listeners' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\ORM\Tools\AttachEntityListenersListener A Doctrine\ORM\Tools\AttachEntityListenersListener instance + */ + protected function getDoctrine_Orm_DefaultListeners_AttachEntityListenersService() + { + return $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] = new \Doctrine\ORM\Tools\AttachEntityListenersListener(); + } + + /** + * Gets the 'doctrine.orm.default_manager_configurator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator A Doctrine\Bundle\DoctrineBundle\ManagerConfigurator instance + */ + protected function getDoctrine_Orm_DefaultManagerConfiguratorService() + { + return $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array()); + } + + /** + * Gets the 'doctrine.orm.validator.unique' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator A Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator instance + */ + protected function getDoctrine_Orm_Validator_UniqueService() + { + return $this->services['doctrine.orm.validator.unique'] = new \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator($this->get('doctrine')); + } + + /** + * Gets the 'doctrine.orm.validator_initializer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer A Symfony\Bridge\Doctrine\Validator\DoctrineInitializer instance + */ + protected function getDoctrine_Orm_ValidatorInitializerService() + { + return $this->services['doctrine.orm.validator_initializer'] = new \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer($this->get('doctrine')); + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_query_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'doctrine_cache.providers.doctrine.orm.default_result_cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance + */ + protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService() + { + $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache(); + + $instance->setNamespace('sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80'); + + return $instance; + } + + /** + * Gets the 'file_locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Config\FileLocator A Symfony\Component\HttpKernel\Config\FileLocator instance + */ + protected function getFileLocatorService() + { + return $this->services['file_locator'] = new \Symfony\Component\HttpKernel\Config\FileLocator($this->get('kernel'), ($this->targetDirs[3].'/app/Resources')); + } + + /** + * Gets the 'filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Filesystem\Filesystem A Symfony\Component\Filesystem\Filesystem instance + */ + protected function getFilesystemService() + { + return $this->services['filesystem'] = new \Symfony\Component\Filesystem\Filesystem(); + } + + /** + * Gets the 'form.factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormFactory A Symfony\Component\Form\FormFactory instance + */ + protected function getForm_FactoryService() + { + return $this->services['form.factory'] = new \Symfony\Component\Form\FormFactory($this->get('form.registry'), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.registry' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\FormRegistry A Symfony\Component\Form\FormRegistry instance + */ + protected function getForm_RegistryService() + { + return $this->services['form.registry'] = new \Symfony\Component\Form\FormRegistry(array(0 => new \Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension($this, array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => 'form.type.form', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => 'form.type.choice', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType' => 'form.type.entity'), array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => array(0 => 'form.type_extension.form.http_foundation', 1 => 'form.type_extension.form.validator', 2 => 'form.type_extension.upload.validator', 3 => 'form.type_extension.csrf', 4 => 'form.type_extension.form.data_collector'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => array(0 => 'form.type_extension.repeated.validator'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => array(0 => 'form.type_extension.submit.validator')), array(0 => 'form.type_guesser.validator', 1 => 'form.type_guesser.doctrine'))), $this->get('form.resolved_type_factory')); + } + + /** + * Gets the 'form.resolved_type_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy A Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy instance + */ + protected function getForm_ResolvedTypeFactoryService() + { + return $this->services['form.resolved_type_factory'] = new \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy(new \Symfony\Component\Form\ResolvedFormTypeFactory(), $this->get('data_collector.form')); + } + + /** + * Gets the 'form.type.birthday' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\BirthdayType A Symfony\Component\Form\Extension\Core\Type\BirthdayType instance + * + * @deprecated The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_BirthdayService() + { + @trigger_error('The "form.type.birthday" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.birthday'] = new \Symfony\Component\Form\Extension\Core\Type\BirthdayType(); + } + + /** + * Gets the 'form.type.button' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ButtonType A Symfony\Component\Form\Extension\Core\Type\ButtonType instance + * + * @deprecated The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ButtonService() + { + @trigger_error('The "form.type.button" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.button'] = new \Symfony\Component\Form\Extension\Core\Type\ButtonType(); + } + + /** + * Gets the 'form.type.checkbox' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CheckboxType A Symfony\Component\Form\Extension\Core\Type\CheckboxType instance + * + * @deprecated The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CheckboxService() + { + @trigger_error('The "form.type.checkbox" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.checkbox'] = new \Symfony\Component\Form\Extension\Core\Type\CheckboxType(); + } + + /** + * Gets the 'form.type.choice' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ChoiceType A Symfony\Component\Form\Extension\Core\Type\ChoiceType instance + */ + protected function getForm_Type_ChoiceService() + { + return $this->services['form.type.choice'] = new \Symfony\Component\Form\Extension\Core\Type\ChoiceType(new \Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator(new \Symfony\Component\Form\ChoiceList\Factory\PropertyAccessDecorator(new \Symfony\Component\Form\ChoiceList\Factory\DefaultChoiceListFactory(), $this->get('property_accessor')))); + } + + /** + * Gets the 'form.type.collection' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CollectionType A Symfony\Component\Form\Extension\Core\Type\CollectionType instance + * + * @deprecated The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CollectionService() + { + @trigger_error('The "form.type.collection" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.collection'] = new \Symfony\Component\Form\Extension\Core\Type\CollectionType(); + } + + /** + * Gets the 'form.type.country' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CountryType A Symfony\Component\Form\Extension\Core\Type\CountryType instance + * + * @deprecated The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CountryService() + { + @trigger_error('The "form.type.country" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.country'] = new \Symfony\Component\Form\Extension\Core\Type\CountryType(); + } + + /** + * Gets the 'form.type.currency' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\CurrencyType A Symfony\Component\Form\Extension\Core\Type\CurrencyType instance + * + * @deprecated The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_CurrencyService() + { + @trigger_error('The "form.type.currency" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.currency'] = new \Symfony\Component\Form\Extension\Core\Type\CurrencyType(); + } + + /** + * Gets the 'form.type.date' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateType A Symfony\Component\Form\Extension\Core\Type\DateType instance + * + * @deprecated The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DateService() + { + @trigger_error('The "form.type.date" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.date'] = new \Symfony\Component\Form\Extension\Core\Type\DateType(); + } + + /** + * Gets the 'form.type.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\DateTimeType A Symfony\Component\Form\Extension\Core\Type\DateTimeType instance + * + * @deprecated The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_DatetimeService() + { + @trigger_error('The "form.type.datetime" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.datetime'] = new \Symfony\Component\Form\Extension\Core\Type\DateTimeType(); + } + + /** + * Gets the 'form.type.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\EmailType A Symfony\Component\Form\Extension\Core\Type\EmailType instance + * + * @deprecated The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_EmailService() + { + @trigger_error('The "form.type.email" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.email'] = new \Symfony\Component\Form\Extension\Core\Type\EmailType(); + } + + /** + * Gets the 'form.type.entity' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\Type\EntityType A Symfony\Bridge\Doctrine\Form\Type\EntityType instance + */ + protected function getForm_Type_EntityService() + { + return $this->services['form.type.entity'] = new \Symfony\Bridge\Doctrine\Form\Type\EntityType($this->get('doctrine')); + } + + /** + * Gets the 'form.type.file' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FileType A Symfony\Component\Form\Extension\Core\Type\FileType instance + * + * @deprecated The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_FileService() + { + @trigger_error('The "form.type.file" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.file'] = new \Symfony\Component\Form\Extension\Core\Type\FileType(); + } + + /** + * Gets the 'form.type.form' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\FormType A Symfony\Component\Form\Extension\Core\Type\FormType instance + */ + protected function getForm_Type_FormService() + { + return $this->services['form.type.form'] = new \Symfony\Component\Form\Extension\Core\Type\FormType($this->get('property_accessor')); + } + + /** + * Gets the 'form.type.hidden' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\HiddenType A Symfony\Component\Form\Extension\Core\Type\HiddenType instance + * + * @deprecated The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_HiddenService() + { + @trigger_error('The "form.type.hidden" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.hidden'] = new \Symfony\Component\Form\Extension\Core\Type\HiddenType(); + } + + /** + * Gets the 'form.type.integer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\IntegerType A Symfony\Component\Form\Extension\Core\Type\IntegerType instance + * + * @deprecated The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_IntegerService() + { + @trigger_error('The "form.type.integer" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.integer'] = new \Symfony\Component\Form\Extension\Core\Type\IntegerType(); + } + + /** + * Gets the 'form.type.language' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LanguageType A Symfony\Component\Form\Extension\Core\Type\LanguageType instance + * + * @deprecated The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LanguageService() + { + @trigger_error('The "form.type.language" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.language'] = new \Symfony\Component\Form\Extension\Core\Type\LanguageType(); + } + + /** + * Gets the 'form.type.locale' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\LocaleType A Symfony\Component\Form\Extension\Core\Type\LocaleType instance + * + * @deprecated The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_LocaleService() + { + @trigger_error('The "form.type.locale" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.locale'] = new \Symfony\Component\Form\Extension\Core\Type\LocaleType(); + } + + /** + * Gets the 'form.type.money' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\MoneyType A Symfony\Component\Form\Extension\Core\Type\MoneyType instance + * + * @deprecated The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_MoneyService() + { + @trigger_error('The "form.type.money" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.money'] = new \Symfony\Component\Form\Extension\Core\Type\MoneyType(); + } + + /** + * Gets the 'form.type.number' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\NumberType A Symfony\Component\Form\Extension\Core\Type\NumberType instance + * + * @deprecated The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_NumberService() + { + @trigger_error('The "form.type.number" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.number'] = new \Symfony\Component\Form\Extension\Core\Type\NumberType(); + } + + /** + * Gets the 'form.type.password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PasswordType A Symfony\Component\Form\Extension\Core\Type\PasswordType instance + * + * @deprecated The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PasswordService() + { + @trigger_error('The "form.type.password" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.password'] = new \Symfony\Component\Form\Extension\Core\Type\PasswordType(); + } + + /** + * Gets the 'form.type.percent' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\PercentType A Symfony\Component\Form\Extension\Core\Type\PercentType instance + * + * @deprecated The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_PercentService() + { + @trigger_error('The "form.type.percent" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.percent'] = new \Symfony\Component\Form\Extension\Core\Type\PercentType(); + } + + /** + * Gets the 'form.type.radio' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RadioType A Symfony\Component\Form\Extension\Core\Type\RadioType instance + * + * @deprecated The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RadioService() + { + @trigger_error('The "form.type.radio" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.radio'] = new \Symfony\Component\Form\Extension\Core\Type\RadioType(); + } + + /** + * Gets the 'form.type.range' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RangeType A Symfony\Component\Form\Extension\Core\Type\RangeType instance + * + * @deprecated The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RangeService() + { + @trigger_error('The "form.type.range" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.range'] = new \Symfony\Component\Form\Extension\Core\Type\RangeType(); + } + + /** + * Gets the 'form.type.repeated' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\RepeatedType A Symfony\Component\Form\Extension\Core\Type\RepeatedType instance + * + * @deprecated The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_RepeatedService() + { + @trigger_error('The "form.type.repeated" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.repeated'] = new \Symfony\Component\Form\Extension\Core\Type\RepeatedType(); + } + + /** + * Gets the 'form.type.reset' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\ResetType A Symfony\Component\Form\Extension\Core\Type\ResetType instance + * + * @deprecated The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_ResetService() + { + @trigger_error('The "form.type.reset" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.reset'] = new \Symfony\Component\Form\Extension\Core\Type\ResetType(); + } + + /** + * Gets the 'form.type.search' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SearchType A Symfony\Component\Form\Extension\Core\Type\SearchType instance + * + * @deprecated The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SearchService() + { + @trigger_error('The "form.type.search" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.search'] = new \Symfony\Component\Form\Extension\Core\Type\SearchType(); + } + + /** + * Gets the 'form.type.submit' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\SubmitType A Symfony\Component\Form\Extension\Core\Type\SubmitType instance + * + * @deprecated The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_SubmitService() + { + @trigger_error('The "form.type.submit" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.submit'] = new \Symfony\Component\Form\Extension\Core\Type\SubmitType(); + } + + /** + * Gets the 'form.type.text' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextType A Symfony\Component\Form\Extension\Core\Type\TextType instance + * + * @deprecated The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextService() + { + @trigger_error('The "form.type.text" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.text'] = new \Symfony\Component\Form\Extension\Core\Type\TextType(); + } + + /** + * Gets the 'form.type.textarea' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TextareaType A Symfony\Component\Form\Extension\Core\Type\TextareaType instance + * + * @deprecated The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TextareaService() + { + @trigger_error('The "form.type.textarea" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.textarea'] = new \Symfony\Component\Form\Extension\Core\Type\TextareaType(); + } + + /** + * Gets the 'form.type.time' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimeType A Symfony\Component\Form\Extension\Core\Type\TimeType instance + * + * @deprecated The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimeService() + { + @trigger_error('The "form.type.time" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.time'] = new \Symfony\Component\Form\Extension\Core\Type\TimeType(); + } + + /** + * Gets the 'form.type.timezone' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\TimezoneType A Symfony\Component\Form\Extension\Core\Type\TimezoneType instance + * + * @deprecated The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_TimezoneService() + { + @trigger_error('The "form.type.timezone" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.timezone'] = new \Symfony\Component\Form\Extension\Core\Type\TimezoneType(); + } + + /** + * Gets the 'form.type.url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Core\Type\UrlType A Symfony\Component\Form\Extension\Core\Type\UrlType instance + * + * @deprecated The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0. + */ + protected function getForm_Type_UrlService() + { + @trigger_error('The "form.type.url" service is deprecated since Symfony 3.1 and will be removed in 4.0.', E_USER_DEPRECATED); + + return $this->services['form.type.url'] = new \Symfony\Component\Form\Extension\Core\Type\UrlType(); + } + + /** + * Gets the 'form.type_extension.csrf' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension A Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension instance + */ + protected function getForm_TypeExtension_CsrfService() + { + return $this->services['form.type_extension.csrf'] = new \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension($this->get('security.csrf.token_manager'), true, '_token', $this->get('translator.default'), 'validators', ${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'}); + } + + /** + * Gets the 'form.type_extension.form.data_collector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension A Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension instance + */ + protected function getForm_TypeExtension_Form_DataCollectorService() + { + return $this->services['form.type_extension.form.data_collector'] = new \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension($this->get('data_collector.form')); + } + + /** + * Gets the 'form.type_extension.form.http_foundation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension A Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension instance + */ + protected function getForm_TypeExtension_Form_HttpFoundationService() + { + return $this->services['form.type_extension.form.http_foundation'] = new \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension(new \Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler(${($_ = isset($this->services['form.server_params']) ? $this->services['form.server_params'] : $this->getForm_ServerParamsService()) && false ?: '_'})); + } + + /** + * Gets the 'form.type_extension.form.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Form_ValidatorService() + { + return $this->services['form.type_extension.form.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension($this->get('validator')); + } + + /** + * Gets the 'form.type_extension.repeated.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Repeated_ValidatorService() + { + return $this->services['form.type_extension.repeated.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.submit.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension instance + */ + protected function getForm_TypeExtension_Submit_ValidatorService() + { + return $this->services['form.type_extension.submit.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension(); + } + + /** + * Gets the 'form.type_extension.upload.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension instance + */ + protected function getForm_TypeExtension_Upload_ValidatorService() + { + return $this->services['form.type_extension.upload.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\UploadValidatorExtension($this->get('translator'), 'validators'); + } + + /** + * Gets the 'form.type_guesser.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser A Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser instance + */ + protected function getForm_TypeGuesser_DoctrineService() + { + return $this->services['form.type_guesser.doctrine'] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser($this->get('doctrine')); + } + + /** + * Gets the 'form.type_guesser.validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser A Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser instance + */ + protected function getForm_TypeGuesser_ValidatorService() + { + return $this->services['form.type_guesser.validator'] = new \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser($this->get('validator')); + } + + /** + * Gets the 'fragment.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler A Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler instance + */ + protected function getFragment_HandlerService() + { + $this->services['fragment.handler'] = $instance = new \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler($this, $this->get('request_stack'), true); + + $instance->addRendererService('inline', 'fragment.renderer.inline'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('hinclude', 'fragment.renderer.hinclude'); + $instance->addRendererService('esi', 'fragment.renderer.esi'); + $instance->addRendererService('ssi', 'fragment.renderer.ssi'); + + return $instance; + } + + /** + * Gets the 'fragment.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\FragmentListener A Symfony\Component\HttpKernel\EventListener\FragmentListener instance + */ + protected function getFragment_ListenerService() + { + return $this->services['fragment.listener'] = new \Symfony\Component\HttpKernel\EventListener\FragmentListener($this->get('uri_signer'), '/_fragment'); + } + + /** + * Gets the 'fragment.renderer.esi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer instance + */ + protected function getFragment_Renderer_EsiService() + { + $this->services['fragment.renderer.esi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.hinclude' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer A Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer instance + */ + protected function getFragment_Renderer_HincludeService() + { + $this->services['fragment.renderer.hinclude'] = $instance = new \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer($this->get('twig'), $this->get('uri_signer'), NULL); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.inline' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer A Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer instance + */ + protected function getFragment_Renderer_InlineService() + { + $this->services['fragment.renderer.inline'] = $instance = new \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer($this->get('http_kernel'), $this->get('debug.event_dispatcher')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'fragment.renderer.ssi' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer instance + */ + protected function getFragment_Renderer_SsiService() + { + $this->services['fragment.renderer.ssi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer')); + + $instance->setFragmentPath('/_fragment'); + + return $instance; + } + + /** + * Gets the 'http_kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance + */ + protected function getHttpKernelService() + { + return $this->services['http_kernel'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('debug.event_dispatcher'), $this->get('debug.controller_resolver'), $this->get('request_stack'), $this->get('debug.argument_resolver')); + } + + /** + * Gets the 'kernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getKernelService() + { + throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'kernel.class_cache.cache_warmer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer A Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer instance + */ + protected function getKernel_ClassCache_CacheWarmerService() + { + return $this->services['kernel.class_cache.cache_warmer'] = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer(array(0 => 'Symfony\\Component\\HttpFoundation\\ParameterBag', 1 => 'Symfony\\Component\\HttpFoundation\\HeaderBag', 2 => 'Symfony\\Component\\HttpFoundation\\FileBag', 3 => 'Symfony\\Component\\HttpFoundation\\ServerBag', 4 => 'Symfony\\Component\\HttpFoundation\\Request', 5 => 'Symfony\\Component\\HttpKernel\\Kernel', 6 => 'Symfony\\Component\\ClassLoader\\ClassCollectionLoader', 7 => 'Symfony\\Component\\ClassLoader\\ApcClassLoader')); + } + + /** + * Gets the 'locale_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\LocaleListener A Symfony\Component\HttpKernel\EventListener\LocaleListener instance + */ + protected function getLocaleListenerService() + { + return $this->services['locale_listener'] = new \Symfony\Component\HttpKernel\EventListener\LocaleListener($this->get('request_stack'), 'en', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'logger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getLoggerService() + { + $this->services['logger'] = $instance = new \Symfony\Bridge\Monolog\Logger('app'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->useMicrosecondTimestamps(true); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.activation_strategy.not_found' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy A Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy instance + */ + protected function getMonolog_ActivationStrategy_NotFoundService() + { + return $this->services['monolog.activation_strategy.not_found'] = new \Symfony\Bridge\Monolog\Handler\FingersCrossed\NotFoundActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.console' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Handler\ConsoleHandler A Symfony\Bridge\Monolog\Handler\ConsoleHandler instance + */ + protected function getMonolog_Handler_ConsoleService() + { + $this->services['monolog.handler.console'] = $instance = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler(NULL, true, array()); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.fingers_crossed.error_level_activation_strategy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy A Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy instance + */ + protected function getMonolog_Handler_FingersCrossed_ErrorLevelActivationStrategyService() + { + return $this->services['monolog.handler.fingers_crossed.error_level_activation_strategy'] = new \Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy(); + } + + /** + * Gets the 'monolog.handler.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance + */ + protected function getMonolog_Handler_MainService() + { + $this->services['monolog.handler.main'] = $instance = new \Monolog\Handler\StreamHandler(($this->targetDirs[2].'/logs/test.log'), 100, true, NULL); + + $instance->pushProcessor(${($_ = isset($this->services['monolog.processor.psr_log_message']) ? $this->services['monolog.processor.psr_log_message'] : $this->getMonolog_Processor_PsrLogMessageService()) && false ?: '_'}); + + return $instance; + } + + /** + * Gets the 'monolog.handler.null_internal' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Monolog\Handler\NullHandler A Monolog\Handler\NullHandler instance + */ + protected function getMonolog_Handler_NullInternalService() + { + return $this->services['monolog.handler.null_internal'] = new \Monolog\Handler\NullHandler(); + } + + /** + * Gets the 'monolog.logger.cache' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_CacheService() + { + $this->services['monolog.logger.cache'] = $instance = new \Symfony\Bridge\Monolog\Logger('cache'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.doctrine' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_DoctrineService() + { + $this->services['monolog.logger.doctrine'] = $instance = new \Symfony\Bridge\Monolog\Logger('doctrine'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.event' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_EventService() + { + $this->services['monolog.logger.event'] = $instance = new \Symfony\Bridge\Monolog\Logger('event'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.null_internal')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_PhpService() + { + $this->services['monolog.logger.php'] = $instance = new \Symfony\Bridge\Monolog\Logger('php'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_ProfilerService() + { + $this->services['monolog.logger.profiler'] = $instance = new \Symfony\Bridge\Monolog\Logger('profiler'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.request' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RequestService() + { + $this->services['monolog.logger.request'] = $instance = new \Symfony\Bridge\Monolog\Logger('request'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_RouterService() + { + $this->services['monolog.logger.router'] = $instance = new \Symfony\Bridge\Monolog\Logger('router'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_SecurityService() + { + $this->services['monolog.logger.security'] = $instance = new \Symfony\Bridge\Monolog\Logger('security'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TemplatingService() + { + $this->services['monolog.logger.templating'] = $instance = new \Symfony\Bridge\Monolog\Logger('templating'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'monolog.logger.translation' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance + */ + protected function getMonolog_Logger_TranslationService() + { + $this->services['monolog.logger.translation'] = $instance = new \Symfony\Bridge\Monolog\Logger('translation'); + + $instance->pushProcessor(${($_ = isset($this->services['debug.log_processor']) ? $this->services['debug.log_processor'] : $this->getDebug_LogProcessorService()) && false ?: '_'}); + $instance->pushHandler($this->get('monolog.handler.console')); + $instance->pushHandler($this->get('monolog.handler.main')); + + return $instance; + } + + /** + * Gets the 'profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\Profiler\Profiler A Symfony\Component\HttpKernel\Profiler\Profiler instance + */ + protected function getProfilerService() + { + $a = $this->get('monolog.logger.profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $c = new \Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector($this->get('doctrine')); + $c->addLogger('default', ${($_ = isset($this->services['doctrine.dbal.logger.profiling.default']) ? $this->services['doctrine.dbal.logger.profiling.default'] : $this->getDoctrine_Dbal_Logger_Profiling_DefaultService()) && false ?: '_'}); + + $d = new \Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector(); + if ($this->has('kernel')) { + $d->setKernel($b); + } + + $this->services['profiler'] = $instance = new \Symfony\Component\HttpKernel\Profiler\Profiler(new \Symfony\Component\HttpKernel\Profiler\FileProfilerStorage(('file:'.__DIR__.'/profiler')), $a); + + $instance->disable(); + $instance->add($this->get('data_collector.request')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\TimeDataCollector($b, $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector()); + $instance->add($this->get('data_collector.form')); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector()); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector($a)); + $instance->add(new \Symfony\Component\HttpKernel\DataCollector\EventDataCollector($this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->add($this->get('data_collector.router')); + $instance->add(new \Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, ${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, ${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'})); + $instance->add(new \Symfony\Bridge\Twig\DataCollector\TwigDataCollector($this->get('twig.profile'))); + $instance->add($c); + $instance->add(new \Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector($this)); + $instance->add($this->get('data_collector.dump')); + $instance->add($d); + + return $instance; + } + + /** + * Gets the 'profiler_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ProfilerListener A Symfony\Component\HttpKernel\EventListener\ProfilerListener instance + */ + protected function getProfilerListenerService() + { + return $this->services['profiler_listener'] = new \Symfony\Component\HttpKernel\EventListener\ProfilerListener($this->get('profiler'), $this->get('request_stack'), NULL, false, false); + } + + /** + * Gets the 'property_accessor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\PropertyAccess\PropertyAccessor A Symfony\Component\PropertyAccess\PropertyAccessor instance + */ + protected function getPropertyAccessorService() + { + return $this->services['property_accessor'] = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, false, new \Symfony\Component\Cache\Adapter\ArrayAdapter(0, false)); + } + + /** + * Gets the 'request_stack' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance + */ + protected function getRequestStackService() + { + return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack(); + } + + /** + * Gets the 'response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ResponseListener A Symfony\Component\HttpKernel\EventListener\ResponseListener instance + */ + protected function getResponseListenerService() + { + return $this->services['response_listener'] = new \Symfony\Component\HttpKernel\EventListener\ResponseListener('UTF-8'); + } + + /** + * Gets the 'router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\Router A Symfony\Bundle\FrameworkBundle\Routing\Router instance + */ + protected function getRouterService() + { + $this->services['router'] = $instance = new \Symfony\Bundle\FrameworkBundle\Routing\Router($this, ($this->targetDirs[3].'/app/config/routing_dev.yml'), array('cache_dir' => __DIR__, 'debug' => true, 'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', 'generator_cache_class' => 'appTestDebugProjectContainerUrlGenerator', 'matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', 'matcher_cache_class' => 'appTestDebugProjectContainerUrlMatcher', 'strict_requirements' => true), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'router_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance + */ + protected function getRouterListenerService() + { + return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('request_stack'), ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'}, $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'routing.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader A Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader instance + */ + protected function getRouting_LoaderService() + { + $a = $this->get('file_locator'); + $b = $this->get('annotation_reader'); + + $c = new \Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader($b); + + $d = new \Symfony\Component\Config\Loader\LoaderResolver(); + $d->addLoader(new \Symfony\Component\Routing\Loader\XmlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\YamlFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\PhpFileLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DirectoryLoader($a)); + $d->addLoader(new \Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader($this)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationDirectoryLoader($a, $c)); + $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationFileLoader($a, $c)); + $d->addLoader($c); + + return $this->services['routing.loader'] = new \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader(${($_ = isset($this->services['controller_name_converter']) ? $this->services['controller_name_converter'] : $this->getControllerNameConverterService()) && false ?: '_'}, $d); + } + + /** + * Gets the 'security.authentication.guard_handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Guard\GuardAuthenticatorHandler A Symfony\Component\Security\Guard\GuardAuthenticatorHandler instance + */ + protected function getSecurity_Authentication_GuardHandlerService() + { + return $this->services['security.authentication.guard_handler'] = new \Symfony\Component\Security\Guard\GuardAuthenticatorHandler($this->get('security.token_storage'), $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.authentication_utils' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Authentication\AuthenticationUtils A Symfony\Component\Security\Http\Authentication\AuthenticationUtils instance + */ + protected function getSecurity_AuthenticationUtilsService() + { + return $this->services['security.authentication_utils'] = new \Symfony\Component\Security\Http\Authentication\AuthenticationUtils($this->get('request_stack')); + } + + /** + * Gets the 'security.authorization_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authorization\AuthorizationChecker A Symfony\Component\Security\Core\Authorization\AuthorizationChecker instance + */ + protected function getSecurity_AuthorizationCheckerService() + { + return $this->services['security.authorization_checker'] = new \Symfony\Component\Security\Core\Authorization\AuthorizationChecker($this->get('security.token_storage'), ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, false); + } + + /** + * Gets the 'security.csrf.token_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Csrf\CsrfTokenManager A Symfony\Component\Security\Csrf\CsrfTokenManager instance + */ + protected function getSecurity_Csrf_TokenManagerService() + { + return $this->services['security.csrf.token_manager'] = new \Symfony\Component\Security\Csrf\CsrfTokenManager(new \Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator(), new \Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage($this->get('session'))); + } + + /** + * Gets the 'security.encoder_factory' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\EncoderFactory A Symfony\Component\Security\Core\Encoder\EncoderFactory instance + */ + protected function getSecurity_EncoderFactoryService() + { + return $this->services['security.encoder_factory'] = new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array()); + } + + /** + * Gets the 'security.firewall' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\Firewall A Symfony\Component\Security\Http\Firewall instance + */ + protected function getSecurity_FirewallService() + { + return $this->services['security.firewall'] = new \Symfony\Component\Security\Http\Firewall(${($_ = isset($this->services['security.firewall.map']) ? $this->services['security.firewall.map'] : $this->getSecurity_Firewall_MapService()) && false ?: '_'}, $this->get('debug.event_dispatcher')); + } + + /** + * Gets the 'security.firewall.map.context.dev' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_DevService() + { + return $this->services['security.firewall.map.context.dev'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(), NULL, new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('dev', 'security.user_checker', 'security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d', false, '', '', '', '', '', '', array())); + } + + /** + * Gets the 'security.firewall.map.context.main' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance + */ + protected function getSecurity_Firewall_Map_Context_MainService() + { + $a = $this->get('monolog.logger.security', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = $this->get('security.token_storage'); + $c = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + $d = ${($_ = isset($this->services['security.authentication.manager']) ? $this->services['security.authentication.manager'] : $this->getSecurity_Authentication_ManagerService()) && false ?: '_'}; + $e = $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE); + + $f = new \Symfony\Component\Security\Http\AccessMap(); + + return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($f, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE), $c), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '58c46f5d35aaf5.09366842', $a, $d), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, ${($_ = isset($this->services['debug.security.access.decision_manager']) ? $this->services['debug.security.access.decision_manager'] : $this->getDebug_Security_Access_DecisionManagerService()) && false ?: '_'}, $f, $d)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $c, new \Symfony\Component\Security\Http\HttpUtils($e, $e), 'main', NULL, NULL, NULL, $a, false), new \Symfony\Bundle\SecurityBundle\Security\FirewallConfig('main', 'security.user_checker', NULL, true, false, 'security.user.provider.concrete.in_memory', 'main', NULL, NULL, NULL, array(0 => 'anonymous'))); + } + + /** + * Gets the 'security.password_encoder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder A Symfony\Component\Security\Core\Encoder\UserPasswordEncoder instance + */ + protected function getSecurity_PasswordEncoderService() + { + return $this->services['security.password_encoder'] = new \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder($this->get('security.encoder_factory')); + } + + /** + * Gets the 'security.rememberme.response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Http\RememberMe\ResponseListener A Symfony\Component\Security\Http\RememberMe\ResponseListener instance + */ + protected function getSecurity_Rememberme_ResponseListenerService() + { + return $this->services['security.rememberme.response_listener'] = new \Symfony\Component\Security\Http\RememberMe\ResponseListener(); + } + + /** + * Gets the 'security.token_storage' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage A Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage instance + */ + protected function getSecurity_TokenStorageService() + { + return $this->services['security.token_storage'] = new \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage(); + } + + /** + * Gets the 'security.validator.user_password' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator A Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator instance + */ + protected function getSecurity_Validator_UserPasswordService() + { + return $this->services['security.validator.user_password'] = new \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator($this->get('security.token_storage'), $this->get('security.encoder_factory')); + } + + /** + * Gets the 'sensio_distribution.security_checker' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\SecurityChecker A SensioLabs\Security\SecurityChecker instance + */ + protected function getSensioDistribution_SecurityCheckerService() + { + return $this->services['sensio_distribution.security_checker'] = new \SensioLabs\Security\SecurityChecker(); + } + + /** + * Gets the 'sensio_distribution.security_checker.command' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \SensioLabs\Security\Command\SecurityCheckerCommand A SensioLabs\Security\Command\SecurityCheckerCommand instance + */ + protected function getSensioDistribution_SecurityChecker_CommandService() + { + return $this->services['sensio_distribution.security_checker.command'] = new \SensioLabs\Security\Command\SecurityCheckerCommand($this->get('sensio_distribution.security_checker')); + } + + /** + * Gets the 'sensio_framework_extra.cache.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener instance + */ + protected function getSensioFrameworkExtra_Cache_ListenerService() + { + return $this->services['sensio_framework_extra.cache.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener(); + } + + /** + * Gets the 'sensio_framework_extra.controller.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener instance + */ + protected function getSensioFrameworkExtra_Controller_ListenerService() + { + return $this->services['sensio_framework_extra.controller.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener($this->get('annotation_reader')); + } + + /** + * Gets the 'sensio_framework_extra.converter.datetime' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_DatetimeService() + { + return $this->services['sensio_framework_extra.converter.datetime'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter(); + } + + /** + * Gets the 'sensio_framework_extra.converter.doctrine.orm' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter instance + */ + protected function getSensioFrameworkExtra_Converter_Doctrine_OrmService() + { + return $this->services['sensio_framework_extra.converter.doctrine.orm'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter($this->get('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.converter.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener instance + */ + protected function getSensioFrameworkExtra_Converter_ListenerService() + { + return $this->services['sensio_framework_extra.converter.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener($this->get('sensio_framework_extra.converter.manager'), true); + } + + /** + * Gets the 'sensio_framework_extra.converter.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager instance + */ + protected function getSensioFrameworkExtra_Converter_ManagerService() + { + $this->services['sensio_framework_extra.converter.manager'] = $instance = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager(); + + $instance->add($this->get('sensio_framework_extra.converter.doctrine.orm'), 0, 'doctrine.orm'); + $instance->add($this->get('sensio_framework_extra.converter.datetime'), 0, 'datetime'); + + return $instance; + } + + /** + * Gets the 'sensio_framework_extra.security.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener instance + */ + protected function getSensioFrameworkExtra_Security_ListenerService() + { + return $this->services['sensio_framework_extra.security.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener(NULL, new \Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage(), ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}, $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'sensio_framework_extra.view.guesser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser A Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser instance + */ + protected function getSensioFrameworkExtra_View_GuesserService() + { + return $this->services['sensio_framework_extra.view.guesser'] = new \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser($this->get('kernel')); + } + + /** + * Gets the 'sensio_framework_extra.view.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener instance + */ + protected function getSensioFrameworkExtra_View_ListenerService() + { + return $this->services['sensio_framework_extra.view.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener($this); + } + + /** + * Gets the 'service_container' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @throws RuntimeException always since this service is expected to be injected dynamically + */ + protected function getServiceContainerService() + { + throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.'); + } + + /** + * Gets the 'session' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Session A Symfony\Component\HttpFoundation\Session\Session instance + */ + protected function getSessionService() + { + return $this->services['session'] = new \Symfony\Component\HttpFoundation\Session\Session($this->get('session.storage.filesystem'), new \Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag(), new \Symfony\Component\HttpFoundation\Session\Flash\FlashBag()); + } + + /** + * Gets the 'session.handler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler A Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler instance + */ + protected function getSession_HandlerService() + { + return $this->services['session.handler'] = new \Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler(($this->targetDirs[3].'/app/../var/sessions/test')); + } + + /** + * Gets the 'session.save_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\SaveSessionListener A Symfony\Component\HttpKernel\EventListener\SaveSessionListener instance + */ + protected function getSession_SaveListenerService() + { + return $this->services['session.save_listener'] = new \Symfony\Component\HttpKernel\EventListener\SaveSessionListener(); + } + + /** + * Gets the 'session.storage.filesystem' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage instance + */ + protected function getSession_Storage_FilesystemService() + { + return $this->services['session.storage.filesystem'] = new \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage((__DIR__.'/sessions'), 'MOCKSESSID', ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.native' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage instance + */ + protected function getSession_Storage_NativeService() + { + return $this->services['session.storage.native'] = new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage(array('cookie_httponly' => true, 'gc_probability' => 1), $this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session.storage.php_bridge' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage instance + */ + protected function getSession_Storage_PhpBridgeService() + { + return $this->services['session.storage.php_bridge'] = new \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage($this->get('session.handler'), ${($_ = isset($this->services['session.storage.metadata_bag']) ? $this->services['session.storage.metadata_bag'] : $this->getSession_Storage_MetadataBagService()) && false ?: '_'}); + } + + /** + * Gets the 'session_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener A Symfony\Bundle\FrameworkBundle\EventListener\SessionListener instance + */ + protected function getSessionListenerService() + { + return $this->services['session_listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener($this); + } + + /** + * Gets the 'streamed_response_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener A Symfony\Component\HttpKernel\EventListener\StreamedResponseListener instance + */ + protected function getStreamedResponseListenerService() + { + return $this->services['streamed_response_listener'] = new \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener(); + } + + /** + * Gets the 'swiftmailer.email_sender.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener A Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener instance + */ + protected function getSwiftmailer_EmailSender_ListenerService() + { + return $this->services['swiftmailer.email_sender.listener'] = new \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener($this, $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'swiftmailer.mailer.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Mailer A Swift_Mailer instance + */ + protected function getSwiftmailer_Mailer_DefaultService() + { + return $this->services['swiftmailer.mailer.default'] = new \Swift_Mailer($this->get('swiftmailer.mailer.default.transport')); + } + + /** + * Gets the 'swiftmailer.mailer.default.plugin.messagelogger' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Plugins_MessageLogger A Swift_Plugins_MessageLogger instance + */ + protected function getSwiftmailer_Mailer_Default_Plugin_MessageloggerService() + { + return $this->services['swiftmailer.mailer.default.plugin.messagelogger'] = new \Swift_Plugins_MessageLogger(); + } + + /** + * Gets the 'swiftmailer.mailer.default.spool' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_MemorySpool A Swift_MemorySpool instance + */ + protected function getSwiftmailer_Mailer_Default_SpoolService() + { + return $this->services['swiftmailer.mailer.default.spool'] = new \Swift_MemorySpool(); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_SpoolTransport A Swift_Transport_SpoolTransport instance + */ + protected function getSwiftmailer_Mailer_Default_TransportService() + { + $this->services['swiftmailer.mailer.default.transport'] = $instance = new \Swift_Transport_SpoolTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}, $this->get('swiftmailer.mailer.default.spool')); + + $instance->registerPlugin($this->get('swiftmailer.mailer.default.plugin.messagelogger')); + + return $instance; + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.real' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Swift_Transport_NullTransport A Swift_Transport_NullTransport instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_RealService() + { + return $this->services['swiftmailer.mailer.default.transport.real'] = new \Swift_Transport_NullTransport(${($_ = isset($this->services['swiftmailer.mailer.default.transport.eventdispatcher']) ? $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] : $this->getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()) && false ?: '_'}); + } + + /** + * Gets the 'templating' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\TwigEngine A Symfony\Bundle\TwigBundle\TwigEngine instance + */ + protected function getTemplatingService() + { + return $this->services['templating'] = new \Symfony\Bundle\TwigBundle\TwigEngine($this->get('twig'), $this->get('templating.name_parser'), ${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.filename_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser instance + */ + protected function getTemplating_FilenameParserService() + { + return $this->services['templating.filename_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser(); + } + + /** + * Gets the 'templating.helper.logout_url' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper instance + */ + protected function getTemplating_Helper_LogoutUrlService() + { + return $this->services['templating.helper.logout_url'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.helper.security' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper instance + */ + protected function getTemplating_Helper_SecurityService() + { + return $this->services['templating.helper.security'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'templating.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader A Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader instance + */ + protected function getTemplating_LoaderService() + { + return $this->services['templating.loader'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}); + } + + /** + * Gets the 'templating.name_parser' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser instance + */ + protected function getTemplating_NameParserService() + { + return $this->services['templating.name_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser($this->get('kernel')); + } + + /** + * Gets the 'test.client' service. + * + * @return \Symfony\Bundle\FrameworkBundle\Client A Symfony\Bundle\FrameworkBundle\Client instance + */ + protected function getTest_ClientService() + { + return new \Symfony\Bundle\FrameworkBundle\Client($this->get('kernel'), array(), new \Symfony\Component\BrowserKit\History(), new \Symfony\Component\BrowserKit\CookieJar()); + } + + /** + * Gets the 'test.client.cookiejar' service. + * + * @return \Symfony\Component\BrowserKit\CookieJar A Symfony\Component\BrowserKit\CookieJar instance + */ + protected function getTest_Client_CookiejarService() + { + return new \Symfony\Component\BrowserKit\CookieJar(); + } + + /** + * Gets the 'test.client.history' service. + * + * @return \Symfony\Component\BrowserKit\History A Symfony\Component\BrowserKit\History instance + */ + protected function getTest_Client_HistoryService() + { + return new \Symfony\Component\BrowserKit\History(); + } + + /** + * Gets the 'test.session.listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener A Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener instance + */ + protected function getTest_Session_ListenerService() + { + return $this->services['test.session.listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener($this); + } + + /** + * Gets the 'translation.dumper.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\CsvFileDumper A Symfony\Component\Translation\Dumper\CsvFileDumper instance + */ + protected function getTranslation_Dumper_CsvService() + { + return $this->services['translation.dumper.csv'] = new \Symfony\Component\Translation\Dumper\CsvFileDumper(); + } + + /** + * Gets the 'translation.dumper.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IniFileDumper A Symfony\Component\Translation\Dumper\IniFileDumper instance + */ + protected function getTranslation_Dumper_IniService() + { + return $this->services['translation.dumper.ini'] = new \Symfony\Component\Translation\Dumper\IniFileDumper(); + } + + /** + * Gets the 'translation.dumper.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\JsonFileDumper A Symfony\Component\Translation\Dumper\JsonFileDumper instance + */ + protected function getTranslation_Dumper_JsonService() + { + return $this->services['translation.dumper.json'] = new \Symfony\Component\Translation\Dumper\JsonFileDumper(); + } + + /** + * Gets the 'translation.dumper.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\MoFileDumper A Symfony\Component\Translation\Dumper\MoFileDumper instance + */ + protected function getTranslation_Dumper_MoService() + { + return $this->services['translation.dumper.mo'] = new \Symfony\Component\Translation\Dumper\MoFileDumper(); + } + + /** + * Gets the 'translation.dumper.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PhpFileDumper A Symfony\Component\Translation\Dumper\PhpFileDumper instance + */ + protected function getTranslation_Dumper_PhpService() + { + return $this->services['translation.dumper.php'] = new \Symfony\Component\Translation\Dumper\PhpFileDumper(); + } + + /** + * Gets the 'translation.dumper.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\PoFileDumper A Symfony\Component\Translation\Dumper\PoFileDumper instance + */ + protected function getTranslation_Dumper_PoService() + { + return $this->services['translation.dumper.po'] = new \Symfony\Component\Translation\Dumper\PoFileDumper(); + } + + /** + * Gets the 'translation.dumper.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\QtFileDumper A Symfony\Component\Translation\Dumper\QtFileDumper instance + */ + protected function getTranslation_Dumper_QtService() + { + return $this->services['translation.dumper.qt'] = new \Symfony\Component\Translation\Dumper\QtFileDumper(); + } + + /** + * Gets the 'translation.dumper.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\IcuResFileDumper A Symfony\Component\Translation\Dumper\IcuResFileDumper instance + */ + protected function getTranslation_Dumper_ResService() + { + return $this->services['translation.dumper.res'] = new \Symfony\Component\Translation\Dumper\IcuResFileDumper(); + } + + /** + * Gets the 'translation.dumper.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\XliffFileDumper A Symfony\Component\Translation\Dumper\XliffFileDumper instance + */ + protected function getTranslation_Dumper_XliffService() + { + return $this->services['translation.dumper.xliff'] = new \Symfony\Component\Translation\Dumper\XliffFileDumper(); + } + + /** + * Gets the 'translation.dumper.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Dumper\YamlFileDumper A Symfony\Component\Translation\Dumper\YamlFileDumper instance + */ + protected function getTranslation_Dumper_YmlService() + { + return $this->services['translation.dumper.yml'] = new \Symfony\Component\Translation\Dumper\YamlFileDumper(); + } + + /** + * Gets the 'translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Extractor\ChainExtractor A Symfony\Component\Translation\Extractor\ChainExtractor instance + */ + protected function getTranslation_ExtractorService() + { + $this->services['translation.extractor'] = $instance = new \Symfony\Component\Translation\Extractor\ChainExtractor(); + + $instance->addExtractor('php', $this->get('translation.extractor.php')); + $instance->addExtractor('twig', $this->get('twig.translation.extractor')); + + return $instance; + } + + /** + * Gets the 'translation.extractor.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor A Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor instance + */ + protected function getTranslation_Extractor_PhpService() + { + return $this->services['translation.extractor.php'] = new \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor(); + } + + /** + * Gets the 'translation.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader A Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader instance + */ + protected function getTranslation_LoaderService() + { + $a = $this->get('translation.loader.xliff'); + + $this->services['translation.loader'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader(); + + $instance->addLoader('php', $this->get('translation.loader.php')); + $instance->addLoader('yml', $this->get('translation.loader.yml')); + $instance->addLoader('xlf', $a); + $instance->addLoader('xliff', $a); + $instance->addLoader('po', $this->get('translation.loader.po')); + $instance->addLoader('mo', $this->get('translation.loader.mo')); + $instance->addLoader('ts', $this->get('translation.loader.qt')); + $instance->addLoader('csv', $this->get('translation.loader.csv')); + $instance->addLoader('res', $this->get('translation.loader.res')); + $instance->addLoader('dat', $this->get('translation.loader.dat')); + $instance->addLoader('ini', $this->get('translation.loader.ini')); + $instance->addLoader('json', $this->get('translation.loader.json')); + + return $instance; + } + + /** + * Gets the 'translation.loader.csv' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\CsvFileLoader A Symfony\Component\Translation\Loader\CsvFileLoader instance + */ + protected function getTranslation_Loader_CsvService() + { + return $this->services['translation.loader.csv'] = new \Symfony\Component\Translation\Loader\CsvFileLoader(); + } + + /** + * Gets the 'translation.loader.dat' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuDatFileLoader A Symfony\Component\Translation\Loader\IcuDatFileLoader instance + */ + protected function getTranslation_Loader_DatService() + { + return $this->services['translation.loader.dat'] = new \Symfony\Component\Translation\Loader\IcuDatFileLoader(); + } + + /** + * Gets the 'translation.loader.ini' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IniFileLoader A Symfony\Component\Translation\Loader\IniFileLoader instance + */ + protected function getTranslation_Loader_IniService() + { + return $this->services['translation.loader.ini'] = new \Symfony\Component\Translation\Loader\IniFileLoader(); + } + + /** + * Gets the 'translation.loader.json' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\JsonFileLoader A Symfony\Component\Translation\Loader\JsonFileLoader instance + */ + protected function getTranslation_Loader_JsonService() + { + return $this->services['translation.loader.json'] = new \Symfony\Component\Translation\Loader\JsonFileLoader(); + } + + /** + * Gets the 'translation.loader.mo' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\MoFileLoader A Symfony\Component\Translation\Loader\MoFileLoader instance + */ + protected function getTranslation_Loader_MoService() + { + return $this->services['translation.loader.mo'] = new \Symfony\Component\Translation\Loader\MoFileLoader(); + } + + /** + * Gets the 'translation.loader.php' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PhpFileLoader A Symfony\Component\Translation\Loader\PhpFileLoader instance + */ + protected function getTranslation_Loader_PhpService() + { + return $this->services['translation.loader.php'] = new \Symfony\Component\Translation\Loader\PhpFileLoader(); + } + + /** + * Gets the 'translation.loader.po' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\PoFileLoader A Symfony\Component\Translation\Loader\PoFileLoader instance + */ + protected function getTranslation_Loader_PoService() + { + return $this->services['translation.loader.po'] = new \Symfony\Component\Translation\Loader\PoFileLoader(); + } + + /** + * Gets the 'translation.loader.qt' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\QtFileLoader A Symfony\Component\Translation\Loader\QtFileLoader instance + */ + protected function getTranslation_Loader_QtService() + { + return $this->services['translation.loader.qt'] = new \Symfony\Component\Translation\Loader\QtFileLoader(); + } + + /** + * Gets the 'translation.loader.res' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\IcuResFileLoader A Symfony\Component\Translation\Loader\IcuResFileLoader instance + */ + protected function getTranslation_Loader_ResService() + { + return $this->services['translation.loader.res'] = new \Symfony\Component\Translation\Loader\IcuResFileLoader(); + } + + /** + * Gets the 'translation.loader.xliff' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\XliffFileLoader A Symfony\Component\Translation\Loader\XliffFileLoader instance + */ + protected function getTranslation_Loader_XliffService() + { + return $this->services['translation.loader.xliff'] = new \Symfony\Component\Translation\Loader\XliffFileLoader(); + } + + /** + * Gets the 'translation.loader.yml' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Loader\YamlFileLoader A Symfony\Component\Translation\Loader\YamlFileLoader instance + */ + protected function getTranslation_Loader_YmlService() + { + return $this->services['translation.loader.yml'] = new \Symfony\Component\Translation\Loader\YamlFileLoader(); + } + + /** + * Gets the 'translation.writer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\Writer\TranslationWriter A Symfony\Component\Translation\Writer\TranslationWriter instance + */ + protected function getTranslation_WriterService() + { + $this->services['translation.writer'] = $instance = new \Symfony\Component\Translation\Writer\TranslationWriter(); + + $instance->addDumper('php', $this->get('translation.dumper.php')); + $instance->addDumper('xlf', $this->get('translation.dumper.xliff')); + $instance->addDumper('po', $this->get('translation.dumper.po')); + $instance->addDumper('mo', $this->get('translation.dumper.mo')); + $instance->addDumper('yml', $this->get('translation.dumper.yml')); + $instance->addDumper('ts', $this->get('translation.dumper.qt')); + $instance->addDumper('csv', $this->get('translation.dumper.csv')); + $instance->addDumper('ini', $this->get('translation.dumper.ini')); + $instance->addDumper('json', $this->get('translation.dumper.json')); + $instance->addDumper('res', $this->get('translation.dumper.res')); + + return $instance; + } + + /** + * Gets the 'translator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Translation\IdentityTranslator A Symfony\Component\Translation\IdentityTranslator instance + */ + protected function getTranslatorService() + { + return $this->services['translator'] = new \Symfony\Component\Translation\IdentityTranslator(${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}); + } + + /** + * Gets the 'translator.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\FrameworkBundle\Translation\Translator A Symfony\Bundle\FrameworkBundle\Translation\Translator instance + */ + protected function getTranslator_DefaultService() + { + $this->services['translator.default'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\Translator($this, ${($_ = isset($this->services['translator.selector']) ? $this->services['translator.selector'] : $this->getTranslator_SelectorService()) && false ?: '_'}, array('translation.loader.php' => array(0 => 'php'), 'translation.loader.yml' => array(0 => 'yml'), 'translation.loader.xliff' => array(0 => 'xlf', 1 => 'xliff'), 'translation.loader.po' => array(0 => 'po'), 'translation.loader.mo' => array(0 => 'mo'), 'translation.loader.qt' => array(0 => 'ts'), 'translation.loader.csv' => array(0 => 'csv'), 'translation.loader.res' => array(0 => 'res'), 'translation.loader.dat' => array(0 => 'dat'), 'translation.loader.ini' => array(0 => 'ini'), 'translation.loader.json' => array(0 => 'json')), array('cache_dir' => (__DIR__.'/translations'), 'debug' => true), array()); + + $instance->setConfigCacheFactory($this->get('config_cache_factory')); + + return $instance; + } + + /** + * Gets the 'translator_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\TranslatorListener A Symfony\Component\HttpKernel\EventListener\TranslatorListener instance + */ + protected function getTranslatorListenerService() + { + return $this->services['translator_listener'] = new \Symfony\Component\HttpKernel\EventListener\TranslatorListener($this->get('translator'), $this->get('request_stack')); + } + + /** + * Gets the 'twig' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Environment A Twig_Environment instance + */ + protected function getTwigService() + { + $a = $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE); + $b = ${($_ = isset($this->services['debug.file_link_formatter']) ? $this->services['debug.file_link_formatter'] : $this->getDebug_FileLinkFormatterService()) && false ?: '_'}; + $c = $this->get('request_stack'); + + $d = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 0); + if ($this->has('debug.file_link_formatter')) { + $d->setDisplayOptions(array('fileLinkFormat' => $b)); + } + + $e = new \Symfony\Component\VarDumper\Dumper\HtmlDumper(NULL, 'UTF-8', 1); + $e->setDisplayOptions(array('maxStringLength' => 4096, 'fileLinkFormat' => $b)); + + $f = new \Symfony\Bridge\Twig\AppVariable(); + $f->setEnvironment('test'); + $f->setDebug(true); + if ($this->has('security.token_storage')) { + $f->setTokenStorage($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + if ($this->has('request_stack')) { + $f->setRequestStack($c); + } + + $this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), array('debug' => true, 'strict_variables' => true, 'exception_controller' => 'twig.controller.exception:showAction', 'form_themes' => array(0 => 'form_div_layout.html.twig'), 'autoescape' => 'name', 'cache' => (__DIR__.'/twig'), 'charset' => 'UTF-8', 'paths' => array(), 'date' => array('format' => 'F j, Y H:i', 'interval_format' => '%d days', 'timezone' => NULL), 'number_format' => array('decimals' => 0, 'decimal_point' => '.', 'thousands_separator' => ','))); + + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\LogoutUrlExtension(${($_ = isset($this->services['security.logout_url_generator']) ? $this->services['security.logout_url_generator'] : $this->getSecurity_LogoutUrlGeneratorService()) && false ?: '_'})); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\SecurityExtension($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ProfilerExtension($this->get('twig.profile'), $a)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\TranslationExtension($this->get('translator'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\AssetExtension($this->get('assets.packages'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\CodeExtension($b, ($this->targetDirs[3].'/app'), 'UTF-8')); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\RoutingExtension($this->get('router'))); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\StopwatchExtension($a, true)); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ExpressionExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpKernelExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpFoundationExtension($c, ${($_ = isset($this->services['router.request_context']) ? $this->services['router.request_context'] : $this->getRouter_RequestContextService()) && false ?: '_'})); + $instance->addExtension(new \Twig_Extension_Debug()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(array(0 => $this, 1 => 'twig.form.renderer'))); + $instance->addExtension(new \Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension()); + $instance->addExtension(new \Symfony\Bridge\Twig\Extension\DumpExtension($this->get('var_dumper.cloner'), $d)); + $instance->addExtension(new \Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension($e)); + $instance->addGlobal('app', $f); + $instance->addRuntimeLoader(new \Symfony\Bundle\TwigBundle\ContainerAwareRuntimeLoader($this, array('Symfony\\Bridge\\Twig\\Extension\\HttpKernelRuntime' => 'twig.runtime.httpkernel', 'Symfony\\Bridge\\Twig\\Form\\TwigRenderer' => 'twig.form.renderer'), $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE))); + (new \Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator('F j, Y H:i', '%d days', NULL, 0, '.', ','))->configure($instance); + + return $instance; + } + + /** + * Gets the 'twig.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\ExceptionController A Symfony\Bundle\TwigBundle\Controller\ExceptionController instance + */ + protected function getTwig_Controller_ExceptionService() + { + return $this->services['twig.controller.exception'] = new \Symfony\Bundle\TwigBundle\Controller\ExceptionController($this->get('twig'), true); + } + + /** + * Gets the 'twig.controller.preview_error' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController A Symfony\Bundle\TwigBundle\Controller\PreviewErrorController instance + */ + protected function getTwig_Controller_PreviewErrorService() + { + return $this->services['twig.controller.preview_error'] = new \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController($this->get('http_kernel'), 'twig.controller.exception:showAction'); + } + + /** + * Gets the 'twig.exception_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ExceptionListener A Symfony\Component\HttpKernel\EventListener\ExceptionListener instance + */ + protected function getTwig_ExceptionListenerService() + { + return $this->services['twig.exception_listener'] = new \Symfony\Component\HttpKernel\EventListener\ExceptionListener('twig.controller.exception:showAction', $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.form.renderer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Form\TwigRenderer A Symfony\Bridge\Twig\Form\TwigRenderer instance + */ + protected function getTwig_Form_RendererService() + { + return $this->services['twig.form.renderer'] = new \Symfony\Bridge\Twig\Form\TwigRenderer(new \Symfony\Bridge\Twig\Form\TwigRendererEngine(array(0 => 'form_div_layout.html.twig'), $this->get('twig')), $this->get('security.csrf.token_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'twig.loader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader A Symfony\Bundle\TwigBundle\Loader\FilesystemLoader instance + */ + protected function getTwig_LoaderService() + { + $this->services['twig.loader'] = $instance = new \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader(${($_ = isset($this->services['templating.locator']) ? $this->services['templating.locator'] : $this->getTemplating_LocatorService()) && false ?: '_'}, $this->get('templating.name_parser'), $this->targetDirs[3]); + + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views'), 'Framework'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views'), 'Security'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views'), 'Twig'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle/Resources/views'), 'Swiftmailer'); + $instance->addPath(($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle/Resources/views'), 'Doctrine'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views'), 'Debug'); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views'), 'WebProfiler'); + $instance->addPath(($this->targetDirs[3].'/app/Resources/views')); + $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form')); + + return $instance; + } + + /** + * Gets the 'twig.profile' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Twig_Profiler_Profile A Twig_Profiler_Profile instance + */ + protected function getTwig_ProfileService() + { + return $this->services['twig.profile'] = new \Twig_Profiler_Profile(); + } + + /** + * Gets the 'twig.runtime.httpkernel' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Extension\HttpKernelRuntime A Symfony\Bridge\Twig\Extension\HttpKernelRuntime instance + */ + protected function getTwig_Runtime_HttpkernelService() + { + return $this->services['twig.runtime.httpkernel'] = new \Symfony\Bridge\Twig\Extension\HttpKernelRuntime($this->get('fragment.handler')); + } + + /** + * Gets the 'twig.translation.extractor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bridge\Twig\Translation\TwigExtractor A Symfony\Bridge\Twig\Translation\TwigExtractor instance + */ + protected function getTwig_Translation_ExtractorService() + { + return $this->services['twig.translation.extractor'] = new \Symfony\Bridge\Twig\Translation\TwigExtractor($this->get('twig')); + } + + /** + * Gets the 'uri_signer' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\UriSigner A Symfony\Component\HttpKernel\UriSigner instance + */ + protected function getUriSignerService() + { + return $this->services['uri_signer'] = new \Symfony\Component\HttpKernel\UriSigner('d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb'); + } + + /** + * Gets the 'validate_request_listener' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener A Symfony\Component\HttpKernel\EventListener\ValidateRequestListener instance + */ + protected function getValidateRequestListenerService() + { + return $this->services['validate_request_listener'] = new \Symfony\Component\HttpKernel\EventListener\ValidateRequestListener(); + } + + /** + * Gets the 'validator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Validator\ValidatorInterface A Symfony\Component\Validator\Validator\ValidatorInterface instance + */ + protected function getValidatorService() + { + return $this->services['validator'] = $this->get('validator.builder')->getValidator(); + } + + /** + * Gets the 'validator.builder' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\ValidatorBuilderInterface A Symfony\Component\Validator\ValidatorBuilderInterface instance + */ + protected function getValidator_BuilderService() + { + $this->services['validator.builder'] = $instance = \Symfony\Component\Validator\Validation::createValidatorBuilder(); + + $instance->setConstraintValidatorFactory(new \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory($this, array('validator.expression' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\ExpressionValidator' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\EmailValidator' => 'validator.email', 'security.validator.user_password' => 'security.validator.user_password', 'Symfony\\Component\\Security\\Core\\Validator\\Constraints\\UserPasswordValidator' => 'security.validator.user_password', 'doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique', 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator' => 'doctrine.orm.validator.unique'))); + $instance->setTranslator($this->get('translator')); + $instance->setTranslationDomain('validators'); + $instance->addXmlMappings(array(0 => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml'))); + $instance->enableAnnotationMapping($this->get('annotation_reader')); + $instance->addMethodMapping('loadValidatorMetadata'); + $instance->addObjectInitializers(array(0 => $this->get('doctrine.orm.validator_initializer'))); + + return $instance; + } + + /** + * Gets the 'validator.email' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\EmailValidator A Symfony\Component\Validator\Constraints\EmailValidator instance + */ + protected function getValidator_EmailService() + { + return $this->services['validator.email'] = new \Symfony\Component\Validator\Constraints\EmailValidator(false); + } + + /** + * Gets the 'validator.expression' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\Validator\Constraints\ExpressionValidator A Symfony\Component\Validator\Constraints\ExpressionValidator instance + */ + protected function getValidator_ExpressionService() + { + return $this->services['validator.expression'] = new \Symfony\Component\Validator\Constraints\ExpressionValidator(); + } + + /** + * Gets the 'var_dumper.cli_dumper' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Dumper\CliDumper A Symfony\Component\VarDumper\Dumper\CliDumper instance + */ + protected function getVarDumper_CliDumperService() + { + return $this->services['var_dumper.cli_dumper'] = new \Symfony\Component\VarDumper\Dumper\CliDumper(NULL, 'UTF-8', 0); + } + + /** + * Gets the 'var_dumper.cloner' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Component\VarDumper\Cloner\VarCloner A Symfony\Component\VarDumper\Cloner\VarCloner instance + */ + protected function getVarDumper_ClonerService() + { + $this->services['var_dumper.cloner'] = $instance = new \Symfony\Component\VarDumper\Cloner\VarCloner(); + + $instance->setMaxItems(2500); + $instance->setMaxString(-1); + + return $instance; + } + + /** + * Gets the 'web_profiler.controller.exception' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController A Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController instance + */ + protected function getWebProfiler_Controller_ExceptionService() + { + return $this->services['web_profiler.controller.exception'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), true); + } + + /** + * Gets the 'web_profiler.controller.profiler' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController A Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController instance + */ + protected function getWebProfiler_Controller_ProfilerService() + { + return $this->services['web_profiler.controller.profiler'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController($this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), array('data_collector.request' => array(0 => 'request', 1 => '@WebProfiler/Collector/request.html.twig'), 'data_collector.time' => array(0 => 'time', 1 => '@WebProfiler/Collector/time.html.twig'), 'data_collector.memory' => array(0 => 'memory', 1 => '@WebProfiler/Collector/memory.html.twig'), 'data_collector.ajax' => array(0 => 'ajax', 1 => '@WebProfiler/Collector/ajax.html.twig'), 'data_collector.form' => array(0 => 'form', 1 => '@WebProfiler/Collector/form.html.twig'), 'data_collector.exception' => array(0 => 'exception', 1 => '@WebProfiler/Collector/exception.html.twig'), 'data_collector.logger' => array(0 => 'logger', 1 => '@WebProfiler/Collector/logger.html.twig'), 'data_collector.events' => array(0 => 'events', 1 => '@WebProfiler/Collector/events.html.twig'), 'data_collector.router' => array(0 => 'router', 1 => '@WebProfiler/Collector/router.html.twig'), 'data_collector.security' => array(0 => 'security', 1 => '@Security/Collector/security.html.twig'), 'data_collector.twig' => array(0 => 'twig', 1 => '@WebProfiler/Collector/twig.html.twig'), 'data_collector.doctrine' => array(0 => 'db', 1 => '@Doctrine/Collector/db.html.twig'), 'swiftmailer.data_collector' => array(0 => 'swiftmailer', 1 => '@Swiftmailer/Collector/swiftmailer.html.twig'), 'data_collector.dump' => array(0 => 'dump', 1 => '@Debug/Profiler/dump.html.twig'), 'data_collector.config' => array(0 => 'config', 1 => '@WebProfiler/Collector/config.html.twig')), 'bottom', new \Symfony\Bundle\WebProfilerBundle\Csp\ContentSecurityPolicyHandler(new \Symfony\Bundle\WebProfilerBundle\Csp\NonceGenerator()), $this->targetDirs[3]); + } + + /** + * Gets the 'web_profiler.controller.router' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * @return \Symfony\Bundle\WebProfilerBundle\Controller\RouterController A Symfony\Bundle\WebProfilerBundle\Controller\RouterController instance + */ + protected function getWebProfiler_Controller_RouterService() + { + return $this->services['web_profiler.controller.router'] = new \Symfony\Bundle\WebProfilerBundle\Controller\RouterController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'annotations.reader' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\Common\Annotations\AnnotationReader A Doctrine\Common\Annotations\AnnotationReader instance + */ + protected function getAnnotations_ReaderService() + { + return $this->services['annotations.reader'] = new \Doctrine\Common\Annotations\AnnotationReader(); + } + + /** + * Gets the 'cache.annotations' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Cache\Adapter\AdapterInterface A Symfony\Component\Cache\Adapter\AdapterInterface instance + */ + protected function getCache_AnnotationsService() + { + return $this->services['cache.annotations'] = \Symfony\Component\Cache\Adapter\AbstractAdapter::createSystemCache('4uFr9CTb+t', 0, '5lkHnNUKPaJsHkP2j3wMW+', (__DIR__.'/pools'), $this->get('monolog.logger.cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'controller_name_converter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser A Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser instance + */ + protected function getControllerNameConverterService() + { + return $this->services['controller_name_converter'] = new \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser($this->get('kernel')); + } + + /** + * Gets the 'debug.file_link_formatter' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpKernel\Debug\FileLinkFormatter A Symfony\Component\HttpKernel\Debug\FileLinkFormatter instance + */ + protected function getDebug_FileLinkFormatterService() + { + return $this->services['debug.file_link_formatter'] = new \Symfony\Component\HttpKernel\Debug\FileLinkFormatter(NULL, $this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->targetDirs[3], '/_profiler/open?file=%f&line=%l#line%l'); + } + + /** + * Gets the 'debug.log_processor' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bridge\Monolog\Processor\DebugProcessor A Symfony\Bridge\Monolog\Processor\DebugProcessor instance + */ + protected function getDebug_LogProcessorService() + { + return $this->services['debug.log_processor'] = new \Symfony\Bridge\Monolog\Processor\DebugProcessor(); + } + + /** + * Gets the 'debug.security.access.decision_manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager A Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager instance + */ + protected function getDebug_Security_Access_DecisionManagerService() + { + $a = ${($_ = isset($this->services['security.authentication.trust_resolver']) ? $this->services['security.authentication.trust_resolver'] : $this->getSecurity_Authentication_TrustResolverService()) && false ?: '_'}; + + $this->services['debug.security.access.decision_manager'] = $instance = new \Symfony\Component\Security\Core\Authorization\DebugAccessDecisionManager(new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager(array(), 'affirmative', false, true)); + + $instance->setVoters(array(0 => new \Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter($a), 1 => new \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter(), 2 => new \Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter(new \Symfony\Component\Security\Core\Authorization\ExpressionLanguage(), $a, ${($_ = isset($this->services['security.role_hierarchy']) ? $this->services['security.role_hierarchy'] : $this->getSecurity_RoleHierarchyService()) && false ?: '_'}))); + + return $instance; + } + + /** + * Gets the 'doctrine.dbal.logger.profiling.default' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Doctrine\DBAL\Logging\DebugStack A Doctrine\DBAL\Logging\DebugStack instance + */ + protected function getDoctrine_Dbal_Logger_Profiling_DefaultService() + { + return $this->services['doctrine.dbal.logger.profiling.default'] = new \Doctrine\DBAL\Logging\DebugStack(); + } + + /** + * Gets the 'form.server_params' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Form\Util\ServerParams A Symfony\Component\Form\Util\ServerParams instance + */ + protected function getForm_ServerParamsService() + { + return $this->services['form.server_params'] = new \Symfony\Component\Form\Util\ServerParams($this->get('request_stack')); + } + + /** + * Gets the 'monolog.processor.psr_log_message' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Monolog\Processor\PsrLogMessageProcessor A Monolog\Processor\PsrLogMessageProcessor instance + */ + protected function getMonolog_Processor_PsrLogMessageService() + { + return $this->services['monolog.processor.psr_log_message'] = new \Monolog\Processor\PsrLogMessageProcessor(); + } + + /** + * Gets the 'router.request_context' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Routing\RequestContext A Symfony\Component\Routing\RequestContext instance + */ + protected function getRouter_RequestContextService() + { + return $this->services['router.request_context'] = new \Symfony\Component\Routing\RequestContext('', 'GET', 'localhost', 'http', 80, 443); + } + + /** + * Gets the 'security.authentication.manager' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager A Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager instance + */ + protected function getSecurity_Authentication_ManagerService() + { + $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('58c46f5d35aaf5.09366842')), true); + + $instance->setEventDispatcher($this->get('debug.event_dispatcher')); + + return $instance; + } + + /** + * Gets the 'security.authentication.trust_resolver' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver A Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver instance + */ + protected function getSecurity_Authentication_TrustResolverService() + { + return $this->services['security.authentication.trust_resolver'] = new \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver('Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken'); + } + + /** + * Gets the 'security.firewall.map' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\SecurityBundle\Security\FirewallMap A Symfony\Bundle\SecurityBundle\Security\FirewallMap instance + */ + protected function getSecurity_Firewall_MapService() + { + return $this->services['security.firewall.map'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallMap($this, array('security.firewall.map.context.dev' => new \Symfony\Component\HttpFoundation\RequestMatcher('^/(_(profiler|wdt)|css|images|js)/'), 'security.firewall.map.context.main' => NULL)); + } + + /** + * Gets the 'security.logout_url_generator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator A Symfony\Component\Security\Http\Logout\LogoutUrlGenerator instance + */ + protected function getSecurity_LogoutUrlGeneratorService() + { + return $this->services['security.logout_url_generator'] = new \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator($this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE)); + } + + /** + * Gets the 'security.role_hierarchy' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Security\Core\Role\RoleHierarchy A Symfony\Component\Security\Core\Role\RoleHierarchy instance + */ + protected function getSecurity_RoleHierarchyService() + { + return $this->services['security.role_hierarchy'] = new \Symfony\Component\Security\Core\Role\RoleHierarchy(array()); + } + + /** + * Gets the 'session.storage.metadata_bag' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag A Symfony\Component\HttpFoundation\Session\Storage\MetadataBag instance + */ + protected function getSession_Storage_MetadataBagService() + { + return $this->services['session.storage.metadata_bag'] = new \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag('_sf2_meta', '0'); + } + + /** + * Gets the 'swiftmailer.mailer.default.transport.eventdispatcher' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Swift_Events_SimpleEventDispatcher A Swift_Events_SimpleEventDispatcher instance + */ + protected function getSwiftmailer_Mailer_Default_Transport_EventdispatcherService() + { + return $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] = new \Swift_Events_SimpleEventDispatcher(); + } + + /** + * Gets the 'templating.locator' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator A Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator instance + */ + protected function getTemplating_LocatorService() + { + return $this->services['templating.locator'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator($this->get('file_locator'), __DIR__); + } + + /** + * Gets the 'translator.selector' service. + * + * This service is shared. + * This method always returns the same instance of the service. + * + * This service is private. + * If you want to be able to request this service from the container directly, + * make it public, otherwise you might end up with broken code. + * + * @return \Symfony\Component\Translation\MessageSelector A Symfony\Component\Translation\MessageSelector instance + */ + protected function getTranslator_SelectorService() + { + return $this->services['translator.selector'] = new \Symfony\Component\Translation\MessageSelector(); + } + + /** + * {@inheritdoc} + */ + public function getParameter($name) + { + $name = strtolower($name); + + if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) { + throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name)); + } + if (isset($this->loadedDynamicParameters[$name])) { + return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + + return $this->parameters[$name]; + } + + /** + * {@inheritdoc} + */ + public function hasParameter($name) + { + $name = strtolower($name); + + return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]); + } + + /** + * {@inheritdoc} + */ + public function setParameter($name, $value) + { + throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); + } + + /** + * {@inheritdoc} + */ + public function getParameterBag() + { + if (null === $this->parameterBag) { + $parameters = $this->parameters; + foreach ($this->loadedDynamicParameters as $name => $loaded) { + $parameters[$name] = $loaded ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name); + } + $this->parameterBag = new FrozenParameterBag($parameters); + } + + return $this->parameterBag; + } + + private $loadedDynamicParameters = array( + 'kernel.root_dir' => false, + 'kernel.logs_dir' => false, + 'kernel.bundles_metadata' => false, + 'session.save_path' => false, + 'router.resource' => false, + ); + private $dynamicParameters = array(); + + /** + * Computes a dynamic parameter. + * + * @param string The name of the dynamic parameter to load + * + * @return mixed The value of the dynamic parameter + * + * @throws InvalidArgumentException When the dynamic parameter does not exist + */ + private function getDynamicParameter($name) + { + switch ($name) { + case 'kernel.root_dir': $value = ($this->targetDirs[3].'/app'); break; + case 'kernel.logs_dir': $value = ($this->targetDirs[2].'/logs'); break; + case 'kernel.bundles_metadata': $value = array( + 'FrameworkBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle'), + 'namespace' => 'Symfony\\Bundle\\FrameworkBundle', + ), + 'SecurityBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle'), + 'namespace' => 'Symfony\\Bundle\\SecurityBundle', + ), + 'TwigBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle'), + 'namespace' => 'Symfony\\Bundle\\TwigBundle', + ), + 'MonologBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/monolog-bundle'), + 'namespace' => 'Symfony\\Bundle\\MonologBundle', + ), + 'SwiftmailerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle'), + 'namespace' => 'Symfony\\Bundle\\SwiftmailerBundle', + ), + 'DoctrineBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle'), + 'namespace' => 'Doctrine\\Bundle\\DoctrineBundle', + ), + 'SensioFrameworkExtraBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/framework-extra-bundle'), + 'namespace' => 'Sensio\\Bundle\\FrameworkExtraBundle', + ), + 'AppBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/src/AppBundle'), + 'namespace' => 'AppBundle', + ), + 'DebugBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle'), + 'namespace' => 'Symfony\\Bundle\\DebugBundle', + ), + 'WebProfilerBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle'), + 'namespace' => 'Symfony\\Bundle\\WebProfilerBundle', + ), + 'SensioDistributionBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/distribution-bundle'), + 'namespace' => 'Sensio\\Bundle\\DistributionBundle', + ), + 'SensioGeneratorBundle' => array( + 'parent' => NULL, + 'path' => ($this->targetDirs[3].'/vendor/sensio/generator-bundle'), + 'namespace' => 'Sensio\\Bundle\\GeneratorBundle', + ), + ); break; + case 'session.save_path': $value = ($this->targetDirs[3].'/app/../var/sessions/test'); break; + case 'router.resource': $value = ($this->targetDirs[3].'/app/config/routing_dev.yml'); break; + default: throw new InvalidArgumentException(sprintf('The dynamic parameter "%s" must be defined.', $name)); + } + $this->loadedDynamicParameters[$name] = true; + + return $this->dynamicParameters[$name] = $value; + } + + /** + * Gets the default parameters. + * + * @return array An array of the default parameters + */ + protected function getDefaultParameters() + { + return array( + 'kernel.environment' => 'test', + 'kernel.debug' => true, + 'kernel.name' => 'app', + 'kernel.cache_dir' => __DIR__, + 'kernel.bundles' => array( + 'FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle', + 'SecurityBundle' => 'Symfony\\Bundle\\SecurityBundle\\SecurityBundle', + 'TwigBundle' => 'Symfony\\Bundle\\TwigBundle\\TwigBundle', + 'MonologBundle' => 'Symfony\\Bundle\\MonologBundle\\MonologBundle', + 'SwiftmailerBundle' => 'Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle', + 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle', + 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle', + 'AppBundle' => 'AppBundle\\AppBundle', + 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle', + 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle', + 'SensioDistributionBundle' => 'Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle', + 'SensioGeneratorBundle' => 'Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle', + ), + 'kernel.charset' => 'UTF-8', + 'kernel.container_class' => 'appTestDebugProjectContainer', + 'database_host' => '127.0.0.1', + 'database_port' => NULL, + 'database_name' => 'symfony', + 'database_user' => 'root', + 'database_password' => NULL, + 'mailer_transport' => 'smtp', + 'mailer_host' => '127.0.0.1', + 'mailer_user' => NULL, + 'mailer_password' => NULL, + 'secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'locale' => 'en', + 'fragment.renderer.hinclude.global_template' => NULL, + 'fragment.path' => '/_fragment', + 'kernel.secret' => 'd6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb', + 'kernel.http_method_override' => true, + 'kernel.trusted_hosts' => array( + + ), + 'kernel.trusted_proxies' => array( + + ), + 'kernel.default_locale' => 'en', + 'templating.helper.code.file_link_format' => NULL, + 'debug.file_link_format' => NULL, + 'test.client.parameters' => array( + + ), + 'session.metadata.storage_key' => '_sf2_meta', + 'session.storage.options' => array( + 'cookie_httponly' => true, + 'gc_probability' => 1, + ), + 'session.metadata.update_threshold' => '0', + 'form.type_extension.csrf.enabled' => true, + 'form.type_extension.csrf.field_name' => '_token', + 'templating.loader.cache.path' => NULL, + 'templating.engines' => array( + 0 => 'twig', + ), + 'validator.mapping.cache.prefix' => '', + 'validator.mapping.cache.file' => (__DIR__.'/validation.php'), + 'validator.translation_domain' => 'validators', + 'profiler_listener.only_exceptions' => false, + 'profiler_listener.only_master_requests' => false, + 'profiler.storage.dsn' => ('file:'.__DIR__.'/profiler'), + 'debug.error_handler.throw_at' => -1, + 'debug.container.dump' => (__DIR__.'/appTestDebugProjectContainer.xml'), + 'router.options.generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 'router.options.generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', + 'router.options.matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 'router.options.matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', + 'router.options.matcher.cache_class' => 'appTestDebugProjectContainerUrlMatcher', + 'router.options.generator.cache_class' => 'appTestDebugProjectContainerUrlGenerator', + 'router.request_context.host' => 'localhost', + 'router.request_context.scheme' => 'http', + 'router.request_context.base_url' => '', + 'router.cache_class_prefix' => 'appTestDebugProjectContainer', + 'request_listener.http_port' => 80, + 'request_listener.https_port' => 443, + 'security.authentication.trust_resolver.anonymous_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', + 'security.authentication.trust_resolver.rememberme_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken', + 'security.role_hierarchy.roles' => array( + + ), + 'security.access.denied_url' => NULL, + 'security.authentication.manager.erase_credentials' => true, + 'security.authentication.session_strategy.strategy' => 'migrate', + 'security.access.always_authenticate_before_granting' => false, + 'security.authentication.hide_user_not_found' => true, + 'twig.exception_listener.controller' => 'twig.controller.exception:showAction', + 'twig.form.resources' => array( + 0 => 'form_div_layout.html.twig', + ), + 'monolog.use_microseconds' => true, + 'monolog.swift_mailer.handlers' => array( + + ), + 'monolog.handlers_to_channels' => array( + 'monolog.handler.console' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + 1 => 'doctrine', + ), + ), + 'monolog.handler.main' => array( + 'type' => 'exclusive', + 'elements' => array( + 0 => 'event', + ), + ), + ), + 'swiftmailer.class' => 'Swift_Mailer', + 'swiftmailer.transport.sendmail.class' => 'Swift_Transport_SendmailTransport', + 'swiftmailer.transport.mail.class' => 'Swift_Transport_MailTransport', + 'swiftmailer.transport.failover.class' => 'Swift_Transport_FailoverTransport', + 'swiftmailer.plugin.redirecting.class' => 'Swift_Plugins_RedirectingPlugin', + 'swiftmailer.plugin.impersonate.class' => 'Swift_Plugins_ImpersonatePlugin', + 'swiftmailer.plugin.messagelogger.class' => 'Swift_Plugins_MessageLogger', + 'swiftmailer.plugin.antiflood.class' => 'Swift_Plugins_AntiFloodPlugin', + 'swiftmailer.transport.smtp.class' => 'Swift_Transport_EsmtpTransport', + 'swiftmailer.plugin.blackhole.class' => 'Swift_Plugins_BlackholePlugin', + 'swiftmailer.spool.file.class' => 'Swift_FileSpool', + 'swiftmailer.spool.memory.class' => 'Swift_MemorySpool', + 'swiftmailer.email_sender.listener.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener', + 'swiftmailer.data_collector.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\DataCollector\\MessageDataCollector', + 'swiftmailer.mailer.default.transport.name' => 'null', + 'swiftmailer.mailer.default.transport.smtp.encryption' => NULL, + 'swiftmailer.mailer.default.transport.smtp.port' => 25, + 'swiftmailer.mailer.default.transport.smtp.host' => '127.0.0.1', + 'swiftmailer.mailer.default.transport.smtp.username' => NULL, + 'swiftmailer.mailer.default.transport.smtp.password' => NULL, + 'swiftmailer.mailer.default.transport.smtp.auth_mode' => NULL, + 'swiftmailer.mailer.default.transport.smtp.timeout' => 30, + 'swiftmailer.mailer.default.transport.smtp.source_ip' => NULL, + 'swiftmailer.mailer.default.transport.smtp.local_domain' => NULL, + 'swiftmailer.spool.default.memory.path' => (__DIR__.'/swiftmailer/spool/default'), + 'swiftmailer.mailer.default.spool.enabled' => true, + 'swiftmailer.mailer.default.plugin.impersonate' => NULL, + 'swiftmailer.mailer.default.single_address' => NULL, + 'swiftmailer.mailer.default.delivery.enabled' => false, + 'swiftmailer.spool.enabled' => true, + 'swiftmailer.delivery.enabled' => false, + 'swiftmailer.single_address' => NULL, + 'swiftmailer.mailers' => array( + 'default' => 'swiftmailer.mailer.default', + ), + 'swiftmailer.default_mailer' => 'default', + 'doctrine_cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine_cache.apcu.class' => 'Doctrine\\Common\\Cache\\ApcuCache', + 'doctrine_cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine_cache.chain.class' => 'Doctrine\\Common\\Cache\\ChainCache', + 'doctrine_cache.couchbase.class' => 'Doctrine\\Common\\Cache\\CouchbaseCache', + 'doctrine_cache.couchbase.connection.class' => 'Couchbase', + 'doctrine_cache.couchbase.hostnames' => 'localhost:8091', + 'doctrine_cache.file_system.class' => 'Doctrine\\Common\\Cache\\FilesystemCache', + 'doctrine_cache.php_file.class' => 'Doctrine\\Common\\Cache\\PhpFileCache', + 'doctrine_cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine_cache.memcache.connection.class' => 'Memcache', + 'doctrine_cache.memcache.host' => 'localhost', + 'doctrine_cache.memcache.port' => 11211, + 'doctrine_cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine_cache.memcached.connection.class' => 'Memcached', + 'doctrine_cache.memcached.host' => 'localhost', + 'doctrine_cache.memcached.port' => 11211, + 'doctrine_cache.mongodb.class' => 'Doctrine\\Common\\Cache\\MongoDBCache', + 'doctrine_cache.mongodb.collection.class' => 'MongoCollection', + 'doctrine_cache.mongodb.connection.class' => 'MongoClient', + 'doctrine_cache.mongodb.server' => 'localhost:27017', + 'doctrine_cache.predis.client.class' => 'Predis\\Client', + 'doctrine_cache.predis.scheme' => 'tcp', + 'doctrine_cache.predis.host' => 'localhost', + 'doctrine_cache.predis.port' => 6379, + 'doctrine_cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine_cache.redis.connection.class' => 'Redis', + 'doctrine_cache.redis.host' => 'localhost', + 'doctrine_cache.redis.port' => 6379, + 'doctrine_cache.riak.class' => 'Doctrine\\Common\\Cache\\RiakCache', + 'doctrine_cache.riak.bucket.class' => 'Riak\\Bucket', + 'doctrine_cache.riak.connection.class' => 'Riak\\Connection', + 'doctrine_cache.riak.bucket_property_list.class' => 'Riak\\BucketPropertyList', + 'doctrine_cache.riak.host' => 'localhost', + 'doctrine_cache.riak.port' => 8087, + 'doctrine_cache.sqlite3.class' => 'Doctrine\\Common\\Cache\\SQLite3Cache', + 'doctrine_cache.sqlite3.connection.class' => 'SQLite3', + 'doctrine_cache.void.class' => 'Doctrine\\Common\\Cache\\VoidCache', + 'doctrine_cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine_cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine_cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine_cache.security.acl.cache.class' => 'Doctrine\\Bundle\\DoctrineCacheBundle\\Acl\\Model\\AclCache', + 'doctrine.dbal.logger.chain.class' => 'Doctrine\\DBAL\\Logging\\LoggerChain', + 'doctrine.dbal.logger.profiling.class' => 'Doctrine\\DBAL\\Logging\\DebugStack', + 'doctrine.dbal.logger.class' => 'Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger', + 'doctrine.dbal.configuration.class' => 'Doctrine\\DBAL\\Configuration', + 'doctrine.data_collector.class' => 'Doctrine\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', + 'doctrine.dbal.connection.event_manager.class' => 'Symfony\\Bridge\\Doctrine\\ContainerAwareEventManager', + 'doctrine.dbal.connection_factory.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ConnectionFactory', + 'doctrine.dbal.events.mysql_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit', + 'doctrine.dbal.events.oracle_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit', + 'doctrine.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 'doctrine.entity_managers' => array( + 'default' => 'doctrine.orm.default_entity_manager', + ), + 'doctrine.default_entity_manager' => 'default', + 'doctrine.dbal.connection_factory.types' => array( + + ), + 'doctrine.connections' => array( + 'default' => 'doctrine.dbal.default_connection', + ), + 'doctrine.default_connection' => 'default', + 'doctrine.orm.configuration.class' => 'Doctrine\\ORM\\Configuration', + 'doctrine.orm.entity_manager.class' => 'Doctrine\\ORM\\EntityManager', + 'doctrine.orm.manager_configurator.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ManagerConfigurator', + 'doctrine.orm.cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache', + 'doctrine.orm.cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache', + 'doctrine.orm.cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache', + 'doctrine.orm.cache.memcache_host' => 'localhost', + 'doctrine.orm.cache.memcache_port' => 11211, + 'doctrine.orm.cache.memcache_instance.class' => 'Memcache', + 'doctrine.orm.cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache', + 'doctrine.orm.cache.memcached_host' => 'localhost', + 'doctrine.orm.cache.memcached_port' => 11211, + 'doctrine.orm.cache.memcached_instance.class' => 'Memcached', + 'doctrine.orm.cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache', + 'doctrine.orm.cache.redis_host' => 'localhost', + 'doctrine.orm.cache.redis_port' => 6379, + 'doctrine.orm.cache.redis_instance.class' => 'Redis', + 'doctrine.orm.cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache', + 'doctrine.orm.cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache', + 'doctrine.orm.cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache', + 'doctrine.orm.metadata.driver_chain.class' => 'Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriverChain', + 'doctrine.orm.metadata.annotation.class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', + 'doctrine.orm.metadata.xml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver', + 'doctrine.orm.metadata.yml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedYamlDriver', + 'doctrine.orm.metadata.php.class' => 'Doctrine\\ORM\\Mapping\\Driver\\PHPDriver', + 'doctrine.orm.metadata.staticphp.class' => 'Doctrine\\ORM\\Mapping\\Driver\\StaticPHPDriver', + 'doctrine.orm.proxy_cache_warmer.class' => 'Symfony\\Bridge\\Doctrine\\CacheWarmer\\ProxyCacheWarmer', + 'form.type_guesser.doctrine.class' => 'Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmTypeGuesser', + 'doctrine.orm.validator.unique.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator', + 'doctrine.orm.validator_initializer.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\DoctrineInitializer', + 'doctrine.orm.security.user.provider.class' => 'Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider', + 'doctrine.orm.listeners.resolve_target_entity.class' => 'Doctrine\\ORM\\Tools\\ResolveTargetEntityListener', + 'doctrine.orm.listeners.attach_entity_listeners.class' => 'Doctrine\\ORM\\Tools\\AttachEntityListenersListener', + 'doctrine.orm.naming_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultNamingStrategy', + 'doctrine.orm.naming_strategy.underscore.class' => 'Doctrine\\ORM\\Mapping\\UnderscoreNamingStrategy', + 'doctrine.orm.quote_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultQuoteStrategy', + 'doctrine.orm.quote_strategy.ansi.class' => 'Doctrine\\ORM\\Mapping\\AnsiQuoteStrategy', + 'doctrine.orm.entity_listener_resolver.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Mapping\\ContainerAwareEntityListenerResolver', + 'doctrine.orm.second_level_cache.default_cache_factory.class' => 'Doctrine\\ORM\\Cache\\DefaultCacheFactory', + 'doctrine.orm.second_level_cache.default_region.class' => 'Doctrine\\ORM\\Cache\\Region\\DefaultRegion', + 'doctrine.orm.second_level_cache.filelock_region.class' => 'Doctrine\\ORM\\Cache\\Region\\FileLockRegion', + 'doctrine.orm.second_level_cache.logger_chain.class' => 'Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain', + 'doctrine.orm.second_level_cache.logger_statistics.class' => 'Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger', + 'doctrine.orm.second_level_cache.cache_configuration.class' => 'Doctrine\\ORM\\Cache\\CacheConfiguration', + 'doctrine.orm.second_level_cache.regions_configuration.class' => 'Doctrine\\ORM\\Cache\\RegionsConfiguration', + 'doctrine.orm.auto_generate_proxy_classes' => true, + 'doctrine.orm.proxy_dir' => (__DIR__.'/doctrine/orm/Proxies'), + 'doctrine.orm.proxy_namespace' => 'Proxies', + 'sensio_framework_extra.view.guesser.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Templating\\TemplateGuesser', + 'sensio_framework_extra.controller.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 'sensio_framework_extra.routing.loader.annot_dir.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader', + 'sensio_framework_extra.routing.loader.annot_file.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader', + 'sensio_framework_extra.routing.loader.annot_class.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Routing\\AnnotatedRouteControllerLoader', + 'sensio_framework_extra.converter.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 'sensio_framework_extra.converter.manager.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 'sensio_framework_extra.converter.doctrine.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 'sensio_framework_extra.converter.datetime.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 'sensio_framework_extra.view.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 'web_profiler.debug_toolbar.position' => 'bottom', + 'data_collector.templates' => array( + 'data_collector.request' => array( + 0 => 'request', + 1 => '@WebProfiler/Collector/request.html.twig', + ), + 'data_collector.time' => array( + 0 => 'time', + 1 => '@WebProfiler/Collector/time.html.twig', + ), + 'data_collector.memory' => array( + 0 => 'memory', + 1 => '@WebProfiler/Collector/memory.html.twig', + ), + 'data_collector.ajax' => array( + 0 => 'ajax', + 1 => '@WebProfiler/Collector/ajax.html.twig', + ), + 'data_collector.form' => array( + 0 => 'form', + 1 => '@WebProfiler/Collector/form.html.twig', + ), + 'data_collector.exception' => array( + 0 => 'exception', + 1 => '@WebProfiler/Collector/exception.html.twig', + ), + 'data_collector.logger' => array( + 0 => 'logger', + 1 => '@WebProfiler/Collector/logger.html.twig', + ), + 'data_collector.events' => array( + 0 => 'events', + 1 => '@WebProfiler/Collector/events.html.twig', + ), + 'data_collector.router' => array( + 0 => 'router', + 1 => '@WebProfiler/Collector/router.html.twig', + ), + 'data_collector.security' => array( + 0 => 'security', + 1 => '@Security/Collector/security.html.twig', + ), + 'data_collector.twig' => array( + 0 => 'twig', + 1 => '@WebProfiler/Collector/twig.html.twig', + ), + 'data_collector.doctrine' => array( + 0 => 'db', + 1 => '@Doctrine/Collector/db.html.twig', + ), + 'swiftmailer.data_collector' => array( + 0 => 'swiftmailer', + 1 => '@Swiftmailer/Collector/swiftmailer.html.twig', + ), + 'data_collector.dump' => array( + 0 => 'dump', + 1 => '@Debug/Profiler/dump.html.twig', + ), + 'data_collector.config' => array( + 0 => 'config', + 1 => '@WebProfiler/Collector/config.html.twig', + ), + ), + 'console.command.ids' => array( + 0 => 'sensio_distribution.security_checker.command', + ), + ); + } +} diff --git a/var/cache/test/appTestDebugProjectContainer.php.meta b/var/cache/test/appTestDebugProjectContainer.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..40073fccc2cf73e9418f0cf525ae3ab08582c878 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.php.meta @@ -0,0 +1 @@ +a:211:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":52:{s:44:"/home/c2i/git/Symphony_S_A/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":113:{s:104:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":111:{s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":82:{s:74:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/MonologBundle.php";}i:10;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:12;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:16;C:46:"Symfony\Component\Config\Resource\FileResource":62:{s:54:"/home/c2i/git/Symphony_S_A/src/AppBundle/AppBundle.php";}i:18;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:22;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/SensioDistributionBundle.php";}i:24;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/SensioGeneratorBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:27;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:28;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:30;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:31;C:46:"Symfony\Component\Config\Resource\FileResource":157:{s:148:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddAnnotationsCachedReaderPass.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":155:{s:146:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:33;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:34;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:36;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:37;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:39;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:40;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PropertyInfoPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/DataCollectorTranslatorPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ControllerArgumentValueResolverPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ValidateWorkflowsPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolClearerPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddDebugLogProcessorPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":156:{s:147:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ConfigCachePass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/RuntimeLoaderPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/FixEmptyLoggerPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:70;C:46:"Symfony\Component\Config\Resource\FileResource":116:{s:107:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/config_test.yml";}i:73;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/config_dev.yml";}i:74;C:46:"Symfony\Component\Config\Resource\FileResource":56:{s:48:"/home/c2i/git/Symphony_S_A/app/config/config.yml";}i:75;C:46:"Symfony\Component\Config\Resource\FileResource":60:{s:52:"/home/c2i/git/Symphony_S_A/app/config/parameters.yml";}i:76;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/security.yml";}i:77;C:46:"Symfony\Component\Config\Resource\FileResource":58:{s:50:"/home/c2i/git/Symphony_S_A/app/config/services.yml";}i:78;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:79;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:80;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:81;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:120;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:121;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:122;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:123;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:124;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/FactoryReturnTypePass.php";}i:125;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:126;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:127;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:128;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php";}i:129;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:130;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:131;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:136;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:137;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:138;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:140;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":123:{s:114:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:153;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:154;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/test.xml";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:163;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:164;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:167;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:168;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:169;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:170;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:171;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:172;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:173;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:176;C:46:"Symfony\Component\Config\Resource\FileResource":134:{s:125:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php";}i:177;C:46:"Symfony\Component\Config\Resource\FileResource":122:{s:113:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:178;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:179;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:180;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:181;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:182;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:183;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml";}i:184;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_debug.xml";}i:185;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:188;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:189;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:190;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/form.xml";}i:191;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/templating.xml";}i:192;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":88:{a:2:{i:0;s:62:"/home/c2i/git/Symphony_S_A/app/Resources/FrameworkBundle/views";i:1;b:0;}}i:193;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":127:{a:2:{i:0;s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views";i:1;b:1;}}i:194;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/SecurityBundle/views";i:1;b:0;}}i:195;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views";i:1;b:1;}}i:196;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":83:{a:2:{i:0;s:57:"/home/c2i/git/Symphony_S_A/app/Resources/TwigBundle/views";i:1;b:0;}}i:197;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":121:{a:2:{i:0;s:95:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views";i:1;b:1;}}i:198;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":86:{a:2:{i:0;s:60:"/home/c2i/git/Symphony_S_A/app/Resources/MonologBundle/views";i:1;b:0;}}i:199;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":98:{a:2:{i:0;s:72:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/views";i:1;b:0;}}i:200;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/SwiftmailerBundle/views";i:1;b:0;}}i:201;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views";i:1;b:1;}}i:202;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":87:{a:2:{i:0;s:61:"/home/c2i/git/Symphony_S_A/app/Resources/DoctrineBundle/views";i:1;b:0;}}i:203;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":100:{a:2:{i:0;s:74:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views";i:1;b:1;}}i:204;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/app/Resources/SensioFrameworkExtraBundle/views";i:1;b:0;}}i:205;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":105:{a:2:{i:0;s:79:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/views";i:1;b:0;}}i:206;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/app/Resources/AppBundle/views";i:1;b:0;}}i:207;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":82:{a:2:{i:0;s:56:"/home/c2i/git/Symphony_S_A/src/AppBundle/Resources/views";i:1;b:0;}}i:208;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":84:{a:2:{i:0;s:58:"/home/c2i/git/Symphony_S_A/app/Resources/DebugBundle/views";i:1;b:0;}}i:209;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":122:{a:2:{i:0;s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views";i:1;b:1;}}i:210;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":90:{a:2:{i:0;s:64:"/home/c2i/git/Symphony_S_A/app/Resources/WebProfilerBundle/views";i:1;b:0;}}i:211;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views";i:1;b:1;}}i:212;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":97:{a:2:{i:0;s:71:"/home/c2i/git/Symphony_S_A/app/Resources/SensioDistributionBundle/views";i:1;b:0;}}i:213;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":102:{a:2:{i:0;s:76:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/views";i:1;b:0;}}i:214;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":94:{a:2:{i:0;s:68:"/home/c2i/git/Symphony_S_A/app/Resources/SensioGeneratorBundle/views";i:1;b:0;}}i:215;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":99:{a:2:{i:0;s:73:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources/views";i:1;b:0;}}i:216;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":72:{a:2:{i:0;s:46:"/home/c2i/git/Symphony_S_A/app/Resources/views";i:1;b:1;}}i:217;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:221;C:46:"Symfony\Component\Config\Resource\FileResource":93:{s:85:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:222;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":106:{s:98:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/DependencyInjection/Configuration.php";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:227;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:228;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/DependencyInjection/Configuration.php";}i:232;C:46:"Symfony\Component\Config\Resource\FileResource":102:{s:94:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-cache-bundle/Resources/config/services.xml";}i:233;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":87:{s:79:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle/Resources/config";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":64:{s:56:"/home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle";}i:243;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/config";}i:244;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":83:{s:75:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/config";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":66:{s:58:"/home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle";}i:247;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config";}i:248;C:46:"Symfony\Component\Config\Resource\FileResource":71:{s:63:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":48:{s:40:"/home/c2i/git/Symphony_S_A/src/AppBundle";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":105:{s:97:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:253;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:254;C:46:"Symfony\Component\Config\Resource\FileResource":85:{s:77:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":68:{s:60:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle";}i:256;C:46:"Symfony\Component\Config\Resource\FileResource":75:{s:67:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle/Resources";}i:257;C:46:"Symfony\Component\Config\Resource\FileResource":65:{s:57:"/home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle";}i:258;C:46:"Symfony\Component\Config\Resource\FileResource":126:{s:117:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:261;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:262;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:263;C:46:"Symfony\Component\Config\Resource\FileResource":104:{s:96:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:264;C:46:"Symfony\Component\Config\Resource\FileResource":100:{s:92:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:265;C:46:"Symfony\Component\Config\Resource\FileResource":103:{s:95:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:266;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:267;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:268;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:269;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:271;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Configuration.php";}i:272;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:273;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:275;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:276;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:277;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/DependencyInjection/SensioDistributionExtension.php";}i:280;C:46:"Symfony\Component\Config\Resource\FileResource":98:{s:90:"/home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle/Resources/config/security.xml";}i:281;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":55:{a:2:{i:0;s:29:"Symfony\Component\Yaml\Parser";i:1;b:1;}}i:282;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":63:{a:2:{i:0;s:37:"Symfony\Component\Stopwatch\Stopwatch";i:1;b:1;}}i:283;C:56:"Symfony\Component\Config\Resource\ClassExistenceResource":81:{a:2:{i:0;s:55:"Symfony\Component\ExpressionLanguage\ExpressionLanguage";i:1;b:1;}}i:284;C:46:"Symfony\Component\Config\Resource\FileResource":89:{s:81:"/home/c2i/git/Symphony_S_A/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php";}} \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainer.xml b/var/cache/test/appTestDebugProjectContainer.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3333d30650cb0cc86c8b08ad218738ecdeeceb1 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainer.xml @@ -0,0 +1,2753 @@ + + + + /home/c2i/git/Symphony_S_A/app + test + true + app + /home/c2i/git/Symphony_S_A/var/cache/test + /home/c2i/git/Symphony_S_A/var/logs + + Symfony\Bundle\FrameworkBundle\FrameworkBundle + Symfony\Bundle\SecurityBundle\SecurityBundle + Symfony\Bundle\TwigBundle\TwigBundle + Symfony\Bundle\MonologBundle\MonologBundle + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle + Doctrine\Bundle\DoctrineBundle\DoctrineBundle + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle + AppBundle\AppBundle + Symfony\Bundle\DebugBundle\DebugBundle + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle + Sensio\Bundle\DistributionBundle\SensioDistributionBundle + Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle + + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle + Symfony\Bundle\FrameworkBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle + Symfony\Bundle\SecurityBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle + Symfony\Bundle\TwigBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/monolog-bundle + Symfony\Bundle\MonologBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle + Symfony\Bundle\SwiftmailerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle + Doctrine\Bundle\DoctrineBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/framework-extra-bundle + Sensio\Bundle\FrameworkExtraBundle + + + null + /home/c2i/git/Symphony_S_A/src/AppBundle + AppBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle + Symfony\Bundle\DebugBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle + Symfony\Bundle\WebProfilerBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/distribution-bundle + Sensio\Bundle\DistributionBundle + + + null + /home/c2i/git/Symphony_S_A/vendor/sensio/generator-bundle + Sensio\Bundle\GeneratorBundle + + + UTF-8 + appTestDebugProjectContainer + 127.0.0.1 + null + symfony + root + null + smtp + 127.0.0.1 + null + null + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + en + null + /_fragment + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + true + + + en + null + null + + _sf2_meta + + true + 1 + + /home/c2i/git/Symphony_S_A/app/../var/sessions/test + 0 + true + _token + null + + twig + + + /home/c2i/git/Symphony_S_A/var/cache/test/validation.php + validators + false + false + file:/home/c2i/git/Symphony_S_A/var/cache/test/profiler + -1 + /home/c2i/git/Symphony_S_A/var/cache/test/appTestDebugProjectContainer.xml + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appTestDebugProjectContainerUrlMatcher + appTestDebugProjectContainerUrlGenerator + localhost + http + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + appTestDebugProjectContainer + 80 + 443 + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + null + true + migrate + false + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + true + + + + exclusive + + event + doctrine + + + + exclusive + + event + + + + Swift_Mailer + Swift_Transport_SendmailTransport + Swift_Transport_MailTransport + Swift_Transport_FailoverTransport + Swift_Plugins_RedirectingPlugin + Swift_Plugins_ImpersonatePlugin + Swift_Plugins_MessageLogger + Swift_Plugins_AntiFloodPlugin + Swift_Transport_EsmtpTransport + Swift_Plugins_BlackholePlugin + Swift_FileSpool + Swift_MemorySpool + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector + null + null + 25 + 127.0.0.1 + null + null + null + 30 + null + null + /home/c2i/git/Symphony_S_A/var/cache/test/swiftmailer/spool/default + true + null + null + false + true + false + null + + swiftmailer.mailer.default + + default + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\ApcuCache + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ChainCache + Doctrine\Common\Cache\CouchbaseCache + Couchbase + localhost:8091 + Doctrine\Common\Cache\FilesystemCache + Doctrine\Common\Cache\PhpFileCache + Doctrine\Common\Cache\MemcacheCache + Memcache + localhost + 11211 + Doctrine\Common\Cache\MemcachedCache + Memcached + localhost + 11211 + Doctrine\Common\Cache\MongoDBCache + MongoCollection + MongoClient + localhost:27017 + Predis\Client + tcp + localhost + 6379 + Doctrine\Common\Cache\RedisCache + Redis + localhost + 6379 + Doctrine\Common\Cache\RiakCache + Riak\Bucket + Riak\Connection + Riak\BucketPropertyList + localhost + 8087 + Doctrine\Common\Cache\SQLite3Cache + SQLite3 + Doctrine\Common\Cache\VoidCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Bundle\DoctrineCacheBundle\Acl\Model\AclCache + Doctrine\DBAL\Logging\LoggerChain + Doctrine\DBAL\Logging\DebugStack + Symfony\Bridge\Doctrine\Logger\DbalLogger + Doctrine\DBAL\Configuration + Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector + Symfony\Bridge\Doctrine\ContainerAwareEventManager + Doctrine\Bundle\DoctrineBundle\ConnectionFactory + Doctrine\DBAL\Event\Listeners\MysqlSessionInit + Doctrine\DBAL\Event\Listeners\OracleSessionInit + Doctrine\Bundle\DoctrineBundle\Registry + + doctrine.orm.default_entity_manager + + default + + + doctrine.dbal.default_connection + + default + Doctrine\ORM\Configuration + Doctrine\ORM\EntityManager + Doctrine\Bundle\DoctrineBundle\ManagerConfigurator + Doctrine\Common\Cache\ArrayCache + Doctrine\Common\Cache\ApcCache + Doctrine\Common\Cache\MemcacheCache + localhost + 11211 + Memcache + Doctrine\Common\Cache\MemcachedCache + localhost + 11211 + Memcached + Doctrine\Common\Cache\RedisCache + localhost + 6379 + Redis + Doctrine\Common\Cache\XcacheCache + Doctrine\Common\Cache\WinCacheCache + Doctrine\Common\Cache\ZendDataCache + Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain + Doctrine\ORM\Mapping\Driver\AnnotationDriver + Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver + Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver + Doctrine\ORM\Mapping\Driver\PHPDriver + Doctrine\ORM\Mapping\Driver\StaticPHPDriver + Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer + Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser + Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator + Symfony\Bridge\Doctrine\Validator\DoctrineInitializer + Symfony\Bridge\Doctrine\Security\User\EntityUserProvider + Doctrine\ORM\Tools\ResolveTargetEntityListener + Doctrine\ORM\Tools\AttachEntityListenersListener + Doctrine\ORM\Mapping\DefaultNamingStrategy + Doctrine\ORM\Mapping\UnderscoreNamingStrategy + Doctrine\ORM\Mapping\DefaultQuoteStrategy + Doctrine\ORM\Mapping\AnsiQuoteStrategy + Doctrine\Bundle\DoctrineBundle\Mapping\ContainerAwareEntityListenerResolver + Doctrine\ORM\Cache\DefaultCacheFactory + Doctrine\ORM\Cache\Region\DefaultRegion + Doctrine\ORM\Cache\Region\FileLockRegion + Doctrine\ORM\Cache\Logging\CacheLoggerChain + Doctrine\ORM\Cache\Logging\StatisticsCacheLogger + Doctrine\ORM\Cache\CacheConfiguration + Doctrine\ORM\Cache\RegionsConfiguration + true + /home/c2i/git/Symphony_S_A/var/cache/test/doctrine/orm/Proxies + Proxies + Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + Symfony\Component\Routing\Loader\AnnotationDirectoryLoader + Symfony\Component\Routing\Loader\AnnotationFileLoader + Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter + Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + bottom + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + + sensio_distribution.security_checker.command + + + + + + + + + + UTF-8 + + + + + + + + en + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/validation.php + + + + + 5TgWxoNxFc + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/annotations.php + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + + + + + + + + + + + + + + + + + Symfony\Component\HttpFoundation\ParameterBag + Symfony\Component\HttpFoundation\HeaderBag + Symfony\Component\HttpFoundation\FileBag + Symfony\Component\HttpFoundation\ServerBag + Symfony\Component\HttpFoundation\Request + Symfony\Component\HttpKernel\Kernel + Symfony\Component\ClassLoader\ClassCollectionLoader + Symfony\Component\ClassLoader\ApcClassLoader + + + + + + + + + Symfony\Component\DependencyInjection\ContainerInterface + Symfony\Component\DependencyInjection\Container + + + + + + /home/c2i/git/Symphony_S_A/app/Resources + + + d6fbf2d659c3fc14f77e4e680d7cf02c2bd41ccb + + + + + + + + + + + + + + true + + inline + fragment.renderer.inline + + + hinclude + fragment.renderer.hinclude + + + hinclude + fragment.renderer.hinclude + + + esi + fragment.renderer.esi + + + ssi + fragment.renderer.ssi + + + + + + + + /_fragment + + + + + + + + null + + /_fragment + + + + + null + + + + /_fragment + + + + + null + + + + /_fragment + + + + false + false + + + 0 + false + + + + + + + 0+VBWiRPDo + 0 + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + vCVYJJz-Tw + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + 4uFr9CTb+t + 0 + 5lkHnNUKPaJsHkP2j3wMW+ + /home/c2i/git/Symphony_S_A/var/cache/test/pools + + + + + + + + + + + + + + + + + + + + + php + + + yml + + + xlf + xliff + + + po + + + mo + + + ts + + + csv + + + res + + + dat + + + ini + + + json + + + + /home/c2i/git/Symphony_S_A/var/cache/test/translations + true + + + + + + Symfony\Component\Translation\TranslatorInterface + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + php + + + + yml + + + + xlf + + + + xliff + + + + po + + + + mo + + + + ts + + + + csv + + + + res + + + + dat + + + + ini + + + + json + + + + + + php + + + + twig + + + + + + php + + + + xlf + + + + po + + + + mo + + + + yml + + + + ts + + + + csv + + + + ini + + + + json + + + + res + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _sf2_meta + 0 + + + + true + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + form.type.form + form.type.choice + form.type.entity + + + + form.type_extension.form.http_foundation + form.type_extension.form.validator + form.type_extension.upload.validator + form.type_extension.csrf + form.type_extension.form.data_collector + + + form.type_extension.repeated.validator + + + form.type_extension.submit.validator + + + + form.type_guesser.validator + form.type_guesser.doctrine + + + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + The "%service_id%" service is deprecated since Symfony 3.1 and will be removed in 4.0. + + + + + + + + + + + + + + + + + + + + + + + + + + validators + + + + + true + _token + + validators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test + + + + + + + + + + + validator.expression + validator.expression + validator.email + security.validator.user_password + security.validator.user_password + doctrine.orm.validator.unique + doctrine.orm.validator.unique + + + + + + + + + validators + + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml + + + + + + + loadValidatorMetadata + + + + + + + + + + + + + + false + + + + + /_fragment + + + + + + file:/home/c2i/git/Symphony_S_A/var/cache/test/profiler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + false + false + + + + + + + + + + + + + + + + + + false + + + + + null + + -1 + -1 + true + + true + + + + null + + /home/c2i/git/Symphony_S_A + /_profiler/open?file=%%f&line=%%l#line%%l + + + + + + + + + + + + kernel.controller + + data_collector.router + onKernelController + + 0 + + + response_listener + Symfony\Component\HttpKernel\EventListener\ResponseListener + + + streamed_response_listener + Symfony\Component\HttpKernel\EventListener\StreamedResponseListener + + + locale_listener + Symfony\Component\HttpKernel\EventListener\LocaleListener + + + validate_request_listener + Symfony\Component\HttpKernel\EventListener\ValidateRequestListener + + + translator_listener + Symfony\Component\HttpKernel\EventListener\TranslatorListener + + + test.session.listener + Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener + + + session_listener + Symfony\Bundle\FrameworkBundle\EventListener\SessionListener + + + session.save_listener + Symfony\Component\HttpKernel\EventListener\SaveSessionListener + + + fragment.listener + Symfony\Component\HttpKernel\EventListener\FragmentListener + + + profiler_listener + Symfony\Component\HttpKernel\EventListener\ProfilerListener + + + data_collector.request + Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector + + + debug.debug_handlers_listener + Symfony\Component\HttpKernel\EventListener\DebugHandlersListener + + + router_listener + Symfony\Component\HttpKernel\EventListener\RouterListener + + + security.firewall + Symfony\Component\Security\Http\Firewall + + + security.rememberme.response_listener + Symfony\Component\Security\Http\RememberMe\ResponseListener + + + twig.exception_listener + Symfony\Component\HttpKernel\EventListener\ExceptionListener + + + monolog.handler.console + Symfony\Bridge\Monolog\Handler\ConsoleHandler + + + swiftmailer.email_sender.listener + Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener + + + sensio_framework_extra.controller.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener + + + sensio_framework_extra.converter.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener + + + sensio_framework_extra.view.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener + + + sensio_framework_extra.cache.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener + + + sensio_framework_extra.security.listener + Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener + + + debug.dump_listener + Symfony\Component\HttpKernel\EventListener\DumpListener + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GET + localhost + http + 80 + 443 + + + + + + + + + + + Doctrine\Common\Annotations\Reader + + + + + + false + + + + + + + 58c46f5d35aaf5.09366842 + + + + true + + + + + + Symfony\Component\Security\Core\Authentication\Token\AnonymousToken + Symfony\Component\Security\Core\Authentication\Token\RememberMeToken + + + + + + + + + + + + + + + + + + ^/(_(profiler|wdt)|css|images|js)/ + + + null + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + affirmative + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + null + + + dev + security.user_checker + security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d + false + + + + + + + + + + + + + + + + + + + + + 80 + 443 + + + + + + + + + + + + + + main + + + + + + + + + 58c46f5d35aaf5.09366842 + + + + + + + + + + + + + + + + + + + + + + + + + + + main + null + null + null + + false + + + + + main + security.user_checker + null + true + false + security.user.provider.concrete.in_memory + main + null + null + null + + anonymous + + + + + + + + true + true + twig.controller.exception:showAction + + form_div_layout.html.twig + + name + /home/c2i/git/Symphony_S_A/var/cache/test/twig + UTF-8 + + + F j, Y H:i + %d days + null + + + 0 + . + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/app + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + twig.form.renderer + + + + + + + + + + + + + + + + + + + null + UTF-8 + 0 + + + + + + + + + + + + + + + + + null + UTF-8 + 1 + + + 4096 + + + + + + + + + + app + + + + test + + + true + + + + + + + + + + + + + + + + twig.runtime.httpkernel + twig.form.renderer + + + + + + + + F j, Y H:i + %d days + null + 0 + . + , + + + + + + + + + + + + + + + + twig.controller.exception:showAction + + + + + true + + + + twig.controller.exception:showAction + + + + + + + form_div_layout.html.twig + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/logs/test.log + 100 + true + null + + + + + + + null + true + + + + + + + + + + + + + + + + + + + + + + + + doctrine.dbal.default_connection + + + doctrine.orm.default_entity_manager + + default + default + + + + + pdo_mysql + 127.0.0.1 + null + symfony + root + null + UTF8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + loadClassMetadata + + + + + + + + + + + + + + + + + + + + + + + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + sf2orm_default_9df1c962d43a21d7e0a919b851e80876fba17e6f9b6bc05aefb9a1e903bd4e80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/doctrine/orm/Proxies + + + Proxies + + + true + + + Doctrine\ORM\Mapping\ClassMetadataFactory + + + Doctrine\ORM\EntityRepository + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + 0 + doctrine.orm + + + + 0 + datetime + + + + + + + + + + + + + + + + + + + null + + + + + + + + + + + + + UTF-8 + null + null + + + + + + + + + 2500 + + + -1 + + + + null + UTF-8 + 0 + + + + + + + + request + @WebProfiler/Collector/request.html.twig + + + time + @WebProfiler/Collector/time.html.twig + + + memory + @WebProfiler/Collector/memory.html.twig + + + ajax + @WebProfiler/Collector/ajax.html.twig + + + form + @WebProfiler/Collector/form.html.twig + + + exception + @WebProfiler/Collector/exception.html.twig + + + logger + @WebProfiler/Collector/logger.html.twig + + + events + @WebProfiler/Collector/events.html.twig + + + router + @WebProfiler/Collector/router.html.twig + + + security + @Security/Collector/security.html.twig + + + twig + @WebProfiler/Collector/twig.html.twig + + + db + @Doctrine/Collector/db.html.twig + + + swiftmailer + @Swiftmailer/Collector/swiftmailer.html.twig + + + dump + @Debug/Profiler/dump.html.twig + + + config + @WebProfiler/Collector/config.html.twig + + + bottom + + + + + + + + /home/c2i/git/Symphony_S_A + + + + + + + + + + true + + + + + + + + request + + + + + + + + + + + + cache + + + + + + + + + + + + translation + + + + + + + + + + + + templating + + + + + + + + + + + + profiler + + + + + + + + + + + + php + + + + + + + + + + + + event + + + + + + + + + router + + + + + + + + + + + + security + + + + + + + + + + + + doctrine + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/sessions + MOCKSESSID + + + + /home/c2i/git/Symphony_S_A/app/../var/sessions/test + + + + + + + + + Symfony\Component\Templating\EngineInterface + Symfony\Bundle\FrameworkBundle\Templating\EngineInterface + + + + + /home/c2i/git/Symphony_S_A/app/config/routing_dev.yml + + /home/c2i/git/Symphony_S_A/var/cache/test + true + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\UrlGenerator + Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper + appTestDebugProjectContainerUrlGenerator + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher + Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper + appTestDebugProjectContainerUrlMatcher + true + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A/var/cache/test/annotations.php + + + + + + + true + Doctrine\Common\Annotations\Reader + + + + + + + + + app + + + + + true + + + + + + + + Psr\Log\LoggerInterface + + + + + + + + + + + + + + + + + /home/c2i/git/Symphony_S_A + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views + Framework + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views + Security + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views + Twig + + + /home/c2i/git/Symphony_S_A/vendor/symfony/swiftmailer-bundle/Resources/views + Swiftmailer + + + /home/c2i/git/Symphony_S_A/vendor/doctrine/doctrine-bundle/Resources/views + Doctrine + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views + Debug + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views + WebProfiler + + + /home/c2i/git/Symphony_S_A/app/Resources/views + + + /home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form + + + + + + + + + + + + + + + + + + + diff --git a/var/cache/test/appTestDebugProjectContainerCompiler.log b/var/cache/test/appTestDebugProjectContainerCompiler.log new file mode 100644 index 0000000000000000000000000000000000000000..62ab73b857128749d110358a6220a3d340cb0669 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerCompiler.log @@ -0,0 +1,447 @@ +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.app" (parent: cache.adapter.filesystem). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.system" (parent: cache.adapter.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.validator" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.serializer" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "cache.annotations" (parent: cache.system). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.simple_form" (parent: security.authentication.listener.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.persistent" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.simplehash" (parent: security.authentication.rememberme.services.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.dev" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.config.main" (parent: security.firewall.config). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.main" (parent: security.authentication.listener.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.main" (parent: security.authentication.provider.anonymous). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.main" (parent: security.exception_listener). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.main" (parent: security.firewall.context). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.null" (parent: swiftmailer.transport.null.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.spool.memory" (parent: swiftmailer.spool.memory.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.spool" (parent: swiftmailer.transport.spool.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.cache" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype). +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.property_accessor"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.choice_list_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "cache.default_redis_provider"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.user_checker.main"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "controller_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "argument_resolver"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "security.access.decision_manager"; reason: private alias. +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session" previously pointing to "session.storage.mock_file" to "session.storage.filesystem". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.native" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "session.storage.php_bridge" previously pointing to "session.handler.native_file" to "session.handler". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.runtime_loader" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.spool" to "swiftmailer.mailer.default.transport". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.cached_reader" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.password_encoder" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory". +Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default.transport" previously pointing to "swiftmailer.mailer.default.spool.memory" to "swiftmailer.mailer.default.spool". +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.doctrine"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.filesystem"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.psr6"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "cache.adapter.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.config"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.ldap"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.ldap_bind"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.guard"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apcu"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.predis"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.sqlite3"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.void"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.mapping.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1" to "config_cache_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.property_access" to "property_accessor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.history" to "test.client". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "test.client.cookiejar" to "test.client". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1" to "form.resolved_type_factory". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.default" to "form.choice_list_factory.property_access". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.property_access" to "form.choice_list_factory.cached". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.choice_list_factory.cached" to "form.type.choice". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1" to "validator.mapping.cache.symfony". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2" to "validator.mapping.cache.doctrine.apc". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.controller_resolver.inner" to "debug.controller_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.argument_resolver.inner" to "debug.argument_resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.directory" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.service" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2" to "annotations.cache". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.main" to "security.authentication.manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.security.access.decision_manager.inner" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.simple_role_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "debug.security.access.decision_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.dev" to "security.firewall.map.context.dev". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.exception_listener.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map.config.main" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.runtime_loader" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_iterator" to "twig.template_cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.underscore" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_entity_manager.metadata_factory" to "doctrine.orm.default_entity_manager.property_info_extractor". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "var_dumper.html_dumper" to "twig.extension.dump". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "web_profiler.csp.handler" to "web_profiler.controller.profiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1" to "web_profiler.csp.handler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2" to "twig.extension.webprofiler". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_metadata_factory" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request_attribute" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.request" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user_value_resolver" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.default" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "argument_resolver.variadic" to "debug.argument_resolver.inner". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.cache" to "annotation_reader". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request_attribute"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.request"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "argument_resolver.variadic"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d1f00bf2fca59ed98bb335e364316cd1a4e4b2fe75187a9a93cdd7907dd3da2d_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.serializer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.choice_list_factory.cached"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "f4f149acb9d591f25d01c73467d33492171ad6e3e9dcc9a9a11d48c7cdd14e75_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.symfony"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.doctrine.apc"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "043a33c2a5273515ea4c95d0fd05cc55e498aab4ec0bf771e04141dce3aa9156_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "c66c8daa4fa4dead6a562ed2c4bdb322"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.property_access"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.directory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.service"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "ac7e99b0152d5e8601cdccf56b3731b0d2f25a93af33b0b6a5c341120042cd26_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.filesystem_cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.cache"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_value_resolver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user_checker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.simple_role_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.dev"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map.config.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.main"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_iterator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.runtime_loader"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.logstash"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_3"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "eb2defd359e69fdbcdaa56a789540c302930d14ab5f3053a5f0bd543c171b302_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_entity_manager.metadata_factory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "var_dumper.html_dumper"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_2"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "d67aa643931581a6138904fe0f90f7cbca9f11351692264f77f30172b1aa74ad_1"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "web_profiler.csp.handler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.controller_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.argument_resolver.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.security.access.decision_manager.inner"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "cache.validator" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main". +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "cache.validator"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory"; reason: unused. +Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "annotations.cached_reader" was defined on service(s) "annotation_reader", but was never used. +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.list_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.type_extractor"? +Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass: Tag "property_info.type_extractor" was defined on service(s) "doctrine.orm.default_entity_manager.property_info_extractor", but was never used. Did you mean "property_info.list_extractor"? \ No newline at end of file diff --git a/var/cache/test/appTestDebugProjectContainerUrlMatcher.php b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..a924f607053334a049e0a2be370c72e931d564e4 --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php @@ -0,0 +1,124 @@ +context = $context; + } + + public function match($pathinfo) + { + $allow = array(); + $pathinfo = rawurldecode($pathinfo); + $context = $this->context; + $request = $this->request; + + if (0 === strpos($pathinfo, '/_')) { + // _wdt + if (0 === strpos($pathinfo, '/_wdt') && preg_match('#^/_wdt/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_wdt')), array ( '_controller' => 'web_profiler.controller.profiler:toolbarAction',)); + } + + if (0 === strpos($pathinfo, '/_profiler')) { + // _profiler_home + if (rtrim($pathinfo, '/') === '/_profiler') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', '_profiler_home'); + } + + return array ( '_controller' => 'web_profiler.controller.profiler:homeAction', '_route' => '_profiler_home',); + } + + if (0 === strpos($pathinfo, '/_profiler/search')) { + // _profiler_search + if ($pathinfo === '/_profiler/search') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchAction', '_route' => '_profiler_search',); + } + + // _profiler_search_bar + if ($pathinfo === '/_profiler/search_bar') { + return array ( '_controller' => 'web_profiler.controller.profiler:searchBarAction', '_route' => '_profiler_search_bar',); + } + + } + + // _profiler_info + if (0 === strpos($pathinfo, '/_profiler/info') && preg_match('#^/_profiler/info/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_info')), array ( '_controller' => 'web_profiler.controller.profiler:infoAction',)); + } + + // _profiler_phpinfo + if ($pathinfo === '/_profiler/phpinfo') { + return array ( '_controller' => 'web_profiler.controller.profiler:phpinfoAction', '_route' => '_profiler_phpinfo',); + } + + // _profiler_search_results + if (preg_match('#^/_profiler/(?P[^/]++)/search/results$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_search_results')), array ( '_controller' => 'web_profiler.controller.profiler:searchResultsAction',)); + } + + // _profiler_open_file + if ($pathinfo === '/_profiler/open') { + return array ( '_controller' => 'web_profiler.controller.profiler:openAction', '_route' => '_profiler_open_file',); + } + + // _profiler + if (preg_match('#^/_profiler/(?P[^/]++)$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler')), array ( '_controller' => 'web_profiler.controller.profiler:panelAction',)); + } + + // _profiler_router + if (preg_match('#^/_profiler/(?P[^/]++)/router$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_router')), array ( '_controller' => 'web_profiler.controller.router:panelAction',)); + } + + // _profiler_exception + if (preg_match('#^/_profiler/(?P[^/]++)/exception$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception')), array ( '_controller' => 'web_profiler.controller.exception:showAction',)); + } + + // _profiler_exception_css + if (preg_match('#^/_profiler/(?P[^/]++)/exception\\.css$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_profiler_exception_css')), array ( '_controller' => 'web_profiler.controller.exception:cssAction',)); + } + + } + + // _twig_error_test + if (0 === strpos($pathinfo, '/_error') && preg_match('#^/_error/(?P\\d+)(?:\\.(?P<_format>[^/]++))?$#s', $pathinfo, $matches)) { + return $this->mergeDefaults(array_replace($matches, array('_route' => '_twig_error_test')), array ( '_controller' => 'twig.controller.preview_error:previewErrorPageAction', '_format' => 'html',)); + } + + } + + // homepage + if (rtrim($pathinfo, '/') === '') { + if (substr($pathinfo, -1) !== '/') { + return $this->redirect($pathinfo.'/', 'homepage'); + } + + return array ( '_controller' => 'AppBundle\\Controller\\DefaultController::indexAction', '_route' => 'homepage',); + } + + // app_hello_randomname + if ($pathinfo === '/helloRandom') { + return array ( '_controller' => 'AppBundle\\Controller\\HelloController::randomNameAction', '_route' => 'app_hello_randomname',); + } + + throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException(); + } +} diff --git a/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta new file mode 100644 index 0000000000000000000000000000000000000000..2a4d1eceba3284f8cb29c7c66a9fe447dd81a51a --- /dev/null +++ b/var/cache/test/appTestDebugProjectContainerUrlMatcher.php.meta @@ -0,0 +1 @@ +a:8:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":61:{s:53:"/home/c2i/git/Symphony_S_A/app/config/routing_dev.yml";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/wdt.xml";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":133:{s:124:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/routing/profiler.xml";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/routing/errors.xml";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":57:{s:49:"/home/c2i/git/Symphony_S_A/app/config/routing.yml";}i:5;C:51:"Symfony\Component\Config\Resource\DirectoryResource":88:{a:2:{i:0;s:51:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller";i:1;s:8:"/\.php$/";}}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":81:{s:73:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/DefaultController.php";}i:7;C:46:"Symfony\Component\Config\Resource\FileResource":79:{s:71:"/home/c2i/git/Symphony_S_A/src/AppBundle/Controller/HelloController.php";}} \ No newline at end of file diff --git a/var/cache/test/classes.map b/var/cache/test/classes.map new file mode 100644 index 0000000000000000000000000000000000000000..8a935d70d2e97e6a9248ebf35b9902b91d978b84 --- /dev/null +++ b/var/cache/test/classes.map @@ -0,0 +1,100 @@ + 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener', + 1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage', + 2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage', + 3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler', + 4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy', + 5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy', + 6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session', + 7 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\MockFileSessionStorage', + 8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables', + 9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference', + 10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser', + 11 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator', + 12 => 'Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', + 13 => 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', + 14 => 'Symfony\\Component\\Cache\\CacheItem', + 15 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', + 16 => 'Symfony\\Component\\Routing\\RequestContext', + 17 => 'Symfony\\Component\\Routing\\Router', + 18 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', + 19 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router', + 20 => 'Symfony\\Component\\Cache\\Adapter\\PhpArrayAdapter', + 21 => 'Symfony\\Component\\Cache\\DoctrineProvider', + 22 => 'Symfony\\Component\\Config\\ConfigCache', + 23 => 'Symfony\\Component\\Config\\FileLocator', + 24 => 'Symfony\\Component\\Debug\\ErrorHandler', + 25 => 'Symfony\\Component\\DependencyInjection\\ContainerAwareInterface', + 26 => 'Symfony\\Component\\DependencyInjection\\Container', + 27 => 'Symfony\\Component\\EventDispatcher\\Event', + 28 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher', + 29 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener', + 30 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener', + 31 => 'Symfony\\Component\\HttpKernel\\Bundle\\Bundle', + 32 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver', + 33 => 'Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver', + 34 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadata', + 35 => 'Symfony\\Component\\HttpKernel\\ControllerMetadata\\ArgumentMetadataFactory', + 36 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent', + 37 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent', + 38 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent', + 39 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent', + 40 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent', + 41 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent', + 42 => 'Symfony\\Component\\HttpKernel\\HttpKernel', + 43 => 'Symfony\\Component\\HttpKernel\\KernelEvents', + 44 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator', + 45 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser', + 46 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver', + 47 => 'Symfony\\Component\\Security\\Http\\Firewall', + 48 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface', + 49 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager', + 50 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage', + 51 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager', + 52 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker', + 53 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface', + 54 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallConfig', + 55 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap', + 56 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext', + 57 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher', + 58 => 'Twig_Environment', + 59 => 'Twig_Extension', + 60 => 'Twig_Extension_Core', + 61 => 'Twig_Extension_Escaper', + 62 => 'Twig_Extension_Optimizer', + 63 => 'Twig_LoaderInterface', + 64 => 'Twig_Markup', + 65 => 'Twig_Template', + 66 => 'Monolog\\Formatter\\FormatterInterface', + 67 => 'Monolog\\Formatter\\LineFormatter', + 68 => 'Monolog\\Handler\\HandlerInterface', + 69 => 'Monolog\\Handler\\AbstractHandler', + 70 => 'Monolog\\Handler\\AbstractProcessingHandler', + 71 => 'Monolog\\Handler\\StreamHandler', + 72 => 'Monolog\\Handler\\FingersCrossedHandler', + 73 => 'Monolog\\Handler\\FilterHandler', + 74 => 'Monolog\\Handler\\TestHandler', + 75 => 'Monolog\\Logger', + 76 => 'Symfony\\Bridge\\Monolog\\Logger', + 77 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface', + 78 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy', + 79 => 'Doctrine\\Common\\Annotations\\DocLexer', + 80 => 'Doctrine\\Common\\Annotations\\FileCacheReader', + 81 => 'Doctrine\\Common\\Annotations\\PhpParser', + 82 => 'Doctrine\\Common\\Annotations\\Reader', + 83 => 'Doctrine\\Common\\Lexer', + 84 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry', + 85 => 'Doctrine\\Common\\Persistence\\Proxy', + 86 => 'Doctrine\\Common\\Util\\ClassUtils', + 87 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry', + 88 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener', + 89 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener', + 90 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter', + 91 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter', + 92 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface', + 93 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager', + 94 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener', + 95 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener', + 96 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener', + 97 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- b/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- new file mode 100644 index 0000000000000000000000000000000000000000..de82f06fc3f9973c7aa664d71828eb62db96a00b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/-/T/SRcN35FwaCWWH9tK0m-- @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI b/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/2/6/CRI7S1AjyPr9MstQbuuI @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu b/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/2/W/raPtGWHWtaSEzFxm01Iu @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 b/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/3/1/M2m-0cV9jZG61T-4qO65 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar b/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar new file mode 100644 index 0000000000000000000000000000000000000000..de82f06fc3f9973c7aa664d71828eb62db96a00b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/4/A/MKnDXAZ6fdh1XLcYuZar @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE b/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/6/7/qHAiStv0eZviu4Am-BQE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A b/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/8/K/FAss4NgqR-Vbcd5a6y9A @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd b/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/8/Z/K4lCyRMH1Wqhb0QcbkTd @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI b/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/A/L/16CeewTeVnw1NJvvngOI @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ b/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/A/S/X65GKAJJLFZbqEzGBqi+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U b/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/+/DTjt6S0keIlNWmYpHj3U @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt b/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/F/bgrMO+mLhQ5crEfC14mt @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 b/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/B/G/yAJUtiClYe3PgVdnCHs5 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr b/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/E/O/iwNe7qNQoFd4abAwLFmr @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm b/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/E/W/GGgYe2GX7Z9Se2D3Pnjm @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k b/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/3/eO7rn8-v2LHpyDVQeF4k @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV b/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/J/+Q+taUZB7Y1g87kUpNRV @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF b/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/F/O/AQIj6CQoXHaBmuPB8zrF @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK b/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/G/Z/5aD0qS-iEuCdLgIW0+QK @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol b/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/H/D/NqBojvGVHnEnyEE07sol @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx b/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/H/M/xPkB-ub2NpDR65hJNmCx @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X b/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X new file mode 100644 index 0000000000000000000000000000000000000000..37b0bc6d752127cbaa134cb49c999131418cb03b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/K/B/WhemDGPN5uB4W4lEQg5X @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:1:"/";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";s:8:"homepage";s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh b/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/K/L/XBB0geO2PKhpV9a78uuh @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX b/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/B/NpjyIzdIbCJHUTN5ZoYX @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 b/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/H/XU6P7wKskHlgaT7RrU73 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S b/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/L/R/r0UuURYyqcRn-7OfB58S @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX b/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/H/1Dj3H3J4bf42D7jNoeVX @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG b/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/L/G0qJtvpAj7ZcDf1JmCFG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj b/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/M/V/vGlvwRqZjblYab4340hj @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ b/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/P/miIOV8EZZN5FneRHZr1+ @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N b/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/Q/wiB8S3SuPm-bRYCAHF0N @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 b/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/O/U/eNTMjsffFt-O21iX0AV7 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe b/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/P/K/AvUUb04HN7VIWaz3KGpe @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD b/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/P/O/QmpHmY2nDArMMffZ1HTD @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU b/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Q/W/NKnhDgq9-yJm8R0NE9jU @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J b/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/E/hLmH4qEdPwliXz5nTs5J @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a b/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/G/TpDi3Bw1UkYNV3ra-p5a @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG b/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/R/J/c6R5Ak5h39NbxQ8NaAiG @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy b/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/5/WQHvFVQCVQhLW8NP32Gy @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x b/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x new file mode 100644 index 0000000000000000000000000000000000000000..de82f06fc3f9973c7aa664d71828eb62db96a00b --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/8/M9g2ihPwgsLes+X7JU9x @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489324317, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e b/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/G/+72qC3WRspDeTTuyQb0e @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr b/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr new file mode 100644 index 0000000000000000000000000000000000000000..01412ccd0d119cdf176f27b654e8599ed52d0e17 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/O/ProjZv9ll2mkjc88LvKr @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 'a:1:{i:0;O:54:"Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\Route":10:{s:10:"' . "\0" . '*' . "\0" . 'service";N;s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'path";s:12:"/helloRandom";s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'name";N;s:56:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'requirements";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'options";a:0:{}s:52:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'defaults";a:0:{}s:48:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'host";N;s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'methods";a:0:{}s:51:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'schemes";a:0:{}s:53:"' . "\0" . 'Symfony\\Component\\Routing\\Annotation\\Route' . "\0" . 'condition";N;}}', +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 b/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/S/S/MaCSgf5x+ywuoVKrzfE4 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk b/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/+/3NAWAwhbPdFEYojHaTWk @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum b/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/2/GD+9hxlV-uV4+kkHyLum @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi b/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/T/G/4n-9LMYDd+a7+DTJAgTi @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE b/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/U/Y/2MIZ1Dt0jULYuy8elYeE @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul b/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/V/R/FkiyOA9zBhvw63pEzMul @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA b/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/W/A/x2uzyGqBrXv3s9uN98IA @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 b/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/9/3LM9kqUW9zOl6M700mU9 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 b/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/F/tZtjdOLDrtIEyKyADkz7 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y b/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/X/S/nWR+aenYghS+byVMAZ3y @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E b/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Y/Q/2ngIdrnQUVgh8DIr4Z6E @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n b/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Y/Q/wo4E-cv91gMDJ7EdAN+n @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 b/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 new file mode 100644 index 0000000000000000000000000000000000000000..42b0703bfd61bbc5e3394d215e961ce97feea64f --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Z/C/hXtFH64TyKQYYXoOUsE0 @@ -0,0 +1,4 @@ + 9223372036854775807, + 1 => 1489268573, +); \ No newline at end of file diff --git a/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 b/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 new file mode 100644 index 0000000000000000000000000000000000000000..a0a9df54ce749a12b3d5550a424d4223a1e4e136 --- /dev/null +++ b/var/cache/test/pools/4uFr9CTb+t/Z/U/6iG48AFWO5+78samZng6 @@ -0,0 +1,6 @@ + 9223372036854775807, + 1 => + array ( + ), +); \ No newline at end of file diff --git a/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php b/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php new file mode 100644 index 0000000000000000000000000000000000000000..fb70a0dab880976cd111a73eb582d18282529544 --- /dev/null +++ b/var/cache/test/twig/1e/1e656f9341d9efc09650fce3f306624d733587a6261ffd914e750aa6451c5cb7.php @@ -0,0 +1,173 @@ +parent = false; + + $this->blocks = array( + 'title' => array($this, 'block_title'), + 'stylesheets' => array($this, 'block_stylesheets'), + 'body' => array($this, 'block_body'), + 'javascripts' => array($this, 'block_javascripts'), + ); + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee->enter($__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8->enter($__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "base.html.twig")); + + // line 1 + echo " + + + + "; + // line 5 + $this->displayBlock('title', $context, $blocks); + echo " + "; + // line 6 + $this->displayBlock('stylesheets', $context, $blocks); + // line 7 + echo " env, $this->env->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension')->getAssetUrl("favicon.ico"), "html", null, true); + echo "\" /> + + + "; + // line 10 + $this->displayBlock('body', $context, $blocks); + // line 11 + echo " "; + $this->displayBlock('javascripts', $context, $blocks); + // line 12 + echo " + +"; + + $__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee->leave($__internal_ff55edded4fbdff772d868efe772f83e80d78b12f0e1e5b90050f55886e1cfee_prof); + + + $__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8->leave($__internal_31787ac7fc7a6a99047d73d18afe9a5758b1aa4ac504a8999cfbabb1f72a6fe8_prof); + + } + + // line 5 + public function block_title($context, array $blocks = array()) + { + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781->enter($__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af->enter($__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "title")); + + echo "Welcome!"; + + $__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af->leave($__internal_a133d1f37416135cbdee3344d08d4f84c6342157e330d8f7b1f82985be8937af_prof); + + + $__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781->leave($__internal_c3ccef65cfe44f56dc6c7235ee3f301cddab49beb28d61e3d6d766ec37d7c781_prof); + + } + + // line 6 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404->enter($__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37->enter($__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + + $__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37->leave($__internal_5ef944ba1392914e701031db4575df4a0b6ffc0524b093862155bd93a5c2ce37_prof); + + + $__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404->leave($__internal_cafa86ac566a288370900e31519239e97830d5655a406d787dba29a9a5399404_prof); + + } + + // line 10 + public function block_body($context, array $blocks = array()) + { + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661->enter($__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74->enter($__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + + $__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74->leave($__internal_e63df8fc471de6419ebc4da351a86db66872417c1dbf264c826b59bcf1058a74_prof); + + + $__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661->leave($__internal_6766c535782acd8c2503441f90198ca8e7d627e1bc152ca81ecce3d69453b661_prof); + + } + + // line 11 + public function block_javascripts($context, array $blocks = array()) + { + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae->enter($__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe->enter($__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "javascripts")); + + + $__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe->leave($__internal_90902908081e1c48c75f0eba5f6d730d30d2ee02a0ef6857f1d09b9f98a83cbe_prof); + + + $__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae->leave($__internal_9e19aa6ecee1ae72a1c283b5e133832db38a3504f220d99223600fae03f4b4ae_prof); + + } + + public function getTemplateName() + { + return "base.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 117 => 11, 100 => 10, 83 => 6, 65 => 5, 53 => 12, 50 => 11, 48 => 10, 41 => 7, 39 => 6, 35 => 5, 29 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source(" + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + +", "base.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/base.html.twig"); + } +} diff --git a/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php b/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php new file mode 100644 index 0000000000000000000000000000000000000000..7b3049767cfec2899eb3f8e170696d709060f836 --- /dev/null +++ b/var/cache/test/twig/83/83fa6f677ccca60adbf5ebce69158e8508d815ffebccbf0995e56374ffbff7b3.php @@ -0,0 +1,259 @@ +parent = $this->loadTemplate("base.html.twig", "default/index.html.twig", 1); + $this->blocks = array( + 'body' => array($this, 'block_body'), + 'stylesheets' => array($this, 'block_stylesheets'), + ); + } + + protected function doGetParent(array $context) + { + return "base.html.twig"; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc->enter($__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f->enter($__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f_prof = new Twig_Profiler_Profile($this->getTemplateName(), "template", "default/index.html.twig")); + + $this->parent->display($context, array_merge($this->blocks, $blocks)); + + $__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc->leave($__internal_4a9e83092977f292ccdc933574615bfc8d60633770b4b678bd9195200ef854fc_prof); + + + $__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f->leave($__internal_47e347e3fc553a2114aa286116421a33ba03375142d1b85f34531f117541443f_prof); + + } + + // line 3 + public function block_body($context, array $blocks = array()) + { + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695->enter($__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743->enter($__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "body")); + + // line 4 + echo "
    +
    +
    +

    Welcome to Symfony "; + // line 7 + echo twig_escape_filter($this->env, twig_constant("Symfony\\Component\\HttpKernel\\Kernel::VERSION"), "html", null, true); + echo "

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + "; + // line 15 + echo twig_escape_filter($this->env, (isset($context["base_dir"]) ? $context["base_dir"] : $this->getContext($context, "base_dir")), "html", null, true); + echo " +

    +
    + + + +
    +
    +"; + + $__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743->leave($__internal_49c7cd0b82c5d80295c0dd9cb35a0e7cb2d24bc2fc95f21f0498e7bece22a743_prof); + + + $__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695->leave($__internal_547d979c7ab98eb7cbf39f5614d2196a1f09910c3d480bcef21c4717da047695_prof); + + } + + // line 49 + public function block_stylesheets($context, array $blocks = array()) + { + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899 = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"); + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899->enter($__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"); + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827->enter($__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827_prof = new Twig_Profiler_Profile($this->getTemplateName(), "block", "stylesheets")); + + // line 50 + echo " +"; + + $__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827->leave($__internal_75ddd0d8593b214f7b857fe873ff58de0f20cf798173875747bf8ebd07a89827_prof); + + + $__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899->leave($__internal_0279e2c690fb8d4bff378abd7e7868c3512e3bacac0f11d5f02386436b909899_prof); + + } + + public function getTemplateName() + { + return "default/index.html.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 121 => 50, 112 => 49, 93 => 39, 66 => 15, 55 => 7, 50 => 4, 41 => 3, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return $this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{% extends 'base.html.twig' %} + +{% block body %} +
    +
    +
    +

    Welcome to Symfony {{ constant('Symfony\\\\Component\\\\HttpKernel\\\\Kernel::VERSION') }}

    +
    + +
    +

    + + + Your application is now ready. You can start working on it at: + {{ base_dir }} +

    +
    + +
    +

    What's next?

    +

    + + + + + Read the documentation to learn + + How to create your first page in Symfony + +

    +
    + +
    +
    +{% endblock %} + +{% block stylesheets %} + +{% endblock %} +", "default/index.html.twig", "/home/c2i/git/Symphony_S_A/app/Resources/views/default/index.html.twig"); + } +} diff --git a/var/logs/dev.log b/var/logs/dev.log new file mode 100644 index 0000000000000000000000000000000000000000..bff3be3478fb512625dd48c59c1328a3b8a55d26 --- /dev/null +++ b/var/logs/dev.log @@ -0,0 +1,10 @@ +[2017-03-11 22:43:09] php.DEBUG: Warning: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php\",\"line\":61})"} [] +[2017-03-11 22:43:26] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://127.0.0.1:8000/","method":"GET"} [] +[2017-03-11 22:43:26] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-11 22:43:26] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"e697f4","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/e697f4","method":"GET"} [] +[2017-03-12 14:02:07] php.DEBUG: Warning: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/home/c2i/git/Symphony_S_A/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php\",\"line\":61})"} [] +[2017-03-12 14:02:27] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://127.0.0.1:8000/","method":"GET"} [] +[2017-03-12 14:02:27] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 14:02:28] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"246423","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/246423","method":"GET"} [] +[2017-03-12 14:03:03] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /homepage"" at /home/c2i/git/Symphony_S_A/var/cache/dev/classes.php line 3486 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /homepage\" at /home/c2i/git/Symphony_S_A/var/cache/dev/classes.php:3486, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): at /home/c2i/git/Symphony_S_A/var/cache/dev/appDevDebugProjectContainerUrlMatcher.php:117)"} [] +[2017-03-12 14:03:04] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"dcf4d9","_route":"_wdt"},"request_uri":"http://127.0.0.1:8000/_wdt/dcf4d9","method":"GET"} [] diff --git a/var/logs/test.log b/var/logs/test.log new file mode 100644 index 0000000000000000000000000000000000000000..aa2dc9e540238c5bda6aa2bd0cb25da72ee85c8c --- /dev/null +++ b/var/logs/test.log @@ -0,0 +1,6 @@ +[2017-03-11 21:42:53] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://localhost/","method":"GET"} [] +[2017-03-11 21:42:53] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 13:11:57] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://localhost/","method":"GET"} [] +[2017-03-12 13:11:57] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] +[2017-03-12 13:11:57] request.INFO: Matched route "app_hello_randomname". {"route":"app_hello_randomname","route_parameters":{"_controller":"AppBundle\\Controller\\HelloController::randomNameAction","_route":"app_hello_randomname"},"request_uri":"http://localhost/helloRandom","method":"GET"} [] +[2017-03-12 13:11:57] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] diff --git a/vendor/bin/phpunit b/vendor/bin/phpunit new file mode 120000 index 0000000000000000000000000000000000000000..2c48930310589e25e38ac71f5439db0eb1887daf --- /dev/null +++ b/vendor/bin/phpunit @@ -0,0 +1 @@ +../phpunit/phpunit/phpunit \ No newline at end of file diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 2414d2c8d238816da7a648e45aa928a6b2e4654e..71293df7331373e77dde9261f1820eb980db8d9a 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -13,10 +13,472 @@ return array( 'Collator' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php', 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php', + 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', 'IntlDateFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php', 'Locale' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php', 'NumberFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php', + 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Framework_WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestDox_ResultPrinter_XML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php', + 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', 'SqlFormatter' => $vendorDir . '/jdorn/sql-formatter/lib/SqlFormatter.php', + 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', ); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 76086855ca41b505ffe84f2c4ae6104564cee126..12864c4033c9749a9abae78ec41073601debfe4a 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -14,5 +14,5 @@ return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php', - '719971e375036615a0685b6fb054583d' => $vendorDir . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', + 'cc1fec49e4d0b5c32b8f398cfd00473d' => $vendorDir . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', ); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index 1107e0d66b162b4d2e3d1a90eccea8849a83cf94..be0d07aea9f6f3ff28d91624abcf5dcf48fabe76 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -8,6 +8,7 @@ $baseDir = dirname($vendorDir); return array( 'Twig_' => array($vendorDir . '/twig/twig/lib'), 'SensioLabs\\Security' => array($vendorDir . '/sensiolabs/security-checker'), + 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), 'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'), 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'), 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'), diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index cc66197726d8108d567df38d7b726c62ec6b93fd..dabacffa037837b3d68aace2050fbb3dce9c5b4e 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -6,6 +6,8 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), + 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), 'Tests\\' => array($baseDir . '/tests'), 'Symfony\\Polyfill\\Util\\' => array($vendorDir . '/symfony/polyfill-util'), 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'), @@ -33,5 +35,6 @@ return array( 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib/Doctrine/Common'), 'Doctrine\\Bundle\\DoctrineCacheBundle\\' => array($vendorDir . '/doctrine/doctrine-cache-bundle'), 'Doctrine\\Bundle\\DoctrineBundle\\' => array($vendorDir . '/doctrine/doctrine-bundle'), + 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), '' => array($baseDir . '/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 4a50311c1073843b5040226724cc71dd53e5d48b..44c09a8fa12a40bbd2bd57f5ea6d290653766c7e 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -15,10 +15,18 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '6a47392539ca2329373e0d33e1dba053' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php', - '719971e375036615a0685b6fb054583d' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', + 'cc1fec49e4d0b5c32b8f398cfd00473d' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php', ); public static $prefixLengthsPsr4 = array ( + 'p' => + array ( + 'phpDocumentor\\Reflection\\' => 25, + ), + 'W' => + array ( + 'Webmozart\\Assert\\' => 17, + ), 'T' => array ( 'Tests\\' => 6, @@ -63,10 +71,21 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 'Doctrine\\Common\\' => 16, 'Doctrine\\Bundle\\DoctrineCacheBundle\\' => 36, 'Doctrine\\Bundle\\DoctrineBundle\\' => 31, + 'DeepCopy\\' => 9, ), ); public static $prefixDirsPsr4 = array ( + 'phpDocumentor\\Reflection\\' => + array ( + 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + ), + 'Webmozart\\Assert\\' => + array ( + 0 => __DIR__ . '/..' . '/webmozart/assert/src', + ), 'Tests\\' => array ( 0 => __DIR__ . '/../..' . '/tests', @@ -175,6 +194,10 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 array ( 0 => __DIR__ . '/..' . '/doctrine/doctrine-bundle', ), + 'DeepCopy\\' => + array ( + 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', + ), ); public static $fallbackDirsPsr4 = array ( @@ -196,6 +219,13 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 0 => __DIR__ . '/..' . '/sensiolabs/security-checker', ), ), + 'P' => + array ( + 'Prophecy\\' => + array ( + 0 => __DIR__ . '/..' . '/phpspec/prophecy/src', + ), + ), 'D' => array ( 'Doctrine\\ORM\\' => @@ -233,11 +263,473 @@ class ComposerStaticInit8e3b21c733fc5c71a8f44e6a1873cd39 'Collator' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php', 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php', + 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', 'IntlDateFormatter' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php', 'Locale' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php', 'NumberFormatter' => __DIR__ . '/..' . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php', + 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php', + 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php', + 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php', + 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php', + 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Framework_WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php', + 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php', + 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_Log_TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php', + 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestDox_ResultPrinter_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php', + 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', + 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php', + 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php', + 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php', + 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php', + 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php', + 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php', + 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php', + 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php', + 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php', + 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php', + 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php', + 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php', + 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php', + 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php', + 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php', + 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php', + 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', 'SqlFormatter' => __DIR__ . '/..' . '/jdorn/sql-formatter/lib/SqlFormatter.php', + 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', ); diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index c47812646c35e4c8644a0d5801224b56dc8bb4d9..ff2e580fa834a8a87c3b8ce7ac652c270563ac43 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -2148,5 +2148,1255 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "time": "2016-10-03T07:35:21+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "time": "2015-07-28T20:34:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T07:33:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "time": "2017-02-18T15:18:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "version_normalized": "1.1.1.0", + "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": "*" + }, + "time": "2015-10-12T03:26:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T08:54:04+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "time": "2016-11-26T07:53:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "version_normalized": "1.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "time": "2015-12-08T07:14:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "version_normalized": "1.2.4.0", + "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" + }, + "time": "2017-01-29T09:50:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "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" + }, + "time": "2015-06-21T13:50:34+00:00", + "type": "library", + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "version_normalized": "3.4.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "time": "2016-12-08T20:27:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "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" + }, + "time": "2017-02-26T11:10:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "version_normalized": "1.4.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2016-10-03T07:40:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "time": "2017-03-04T06:30:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "version_normalized": "1.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "time": "2017-02-27T10:12:30+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.7", + "version_normalized": "4.0.7.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69", + "reference": "09e2277d14ea467e5a984010f501343ef29ffc69", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "time": "2017-03-01T09:12:17+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "time": "2016-11-23T20:04:58+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ] + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "time": "2015-12-27T11:43:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ] + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "version_normalized": "0.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "time": "2016-11-25T06:54:22+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ] + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "version_normalized": "3.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "time": "2016-09-30T07:12:33+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock." + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "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 || ^5.6.5" + }, + "time": "2017-03-02T20:05:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "installation-source": "dist", + "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" + ] + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.0", + "version_normalized": "1.6.0.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "time": "2017-01-26T22:05:40+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ] + }, + { + "name": "phpunit/phpunit", + "version": "5.7.15", + "version_normalized": "5.7.15.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b99112aecc01f62acf3d81a3f59646700a1849e5", + "reference": "b99112aecc01f62acf3d81a3f59646700a1849e5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "time": "2017-03-02T15:22:43+00:00", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "installation-source": "dist", + "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" + ] } ] diff --git a/vendor/myclabs/deep-copy/.gitattributes b/vendor/myclabs/deep-copy/.gitattributes new file mode 100755 index 0000000000000000000000000000000000000000..8018068b45059e2e5bbd40979dec5e2e145c40f9 --- /dev/null +++ b/vendor/myclabs/deep-copy/.gitattributes @@ -0,0 +1,7 @@ +# Auto detect text files and perform LF normalization +* text=auto + +*.png binary + +tests/ export-ignore +phpunit.xml.dist export-ignore diff --git a/vendor/myclabs/deep-copy/.gitignore b/vendor/myclabs/deep-copy/.gitignore new file mode 100755 index 0000000000000000000000000000000000000000..9354171049a2da87660457f3acf417d60ef16dd2 --- /dev/null +++ b/vendor/myclabs/deep-copy/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +.idea/* + +vendor/* +composer.phar +composer.lock diff --git a/vendor/myclabs/deep-copy/.travis.yml b/vendor/myclabs/deep-copy/.travis.yml new file mode 100755 index 0000000000000000000000000000000000000000..347c6e759a9ac626d72127fc734ad64263ad39ae --- /dev/null +++ b/vendor/myclabs/deep-copy/.travis.yml @@ -0,0 +1,37 @@ +language: php + +php: + - '5.5' + - '5.6' + - '7.0' + - '7.1' + - nightly + - hhvm + +matrix: + fast_finish: true + include: + - php: '5.4' + env: COMPOSER_FLAGS="--prefer-lowest" + allow_failures: + - php: nightly + - php: hhvm + +before_install: + - | + if [ "$TRAVIS_PHP_VERSION" = "nightly" ] || "$TRAVIS_PHP_VERSION" = "7.1" ]; then + COMPOSER_FLAGS="$COMPOSER_FLAGS --ignore-platform-reqs" + fi; + +install: + - composer update -n --prefer-dist $COMPOSER_FLAGS + - wget https://github.com/satooshi/php-coveralls/releases/download/v1.0.0/coveralls.phar + +before_script: + - mkdir -p build/logs + +script: + - vendor/bin/phpunit --coverage-clover build/logs/clover.xml + +after_script: + - php coveralls.phar -v diff --git a/vendor/myclabs/deep-copy/LICENSE b/vendor/myclabs/deep-copy/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c3e835001c1f40ba78ac45b07054e6fc9cf3ca9b --- /dev/null +++ b/vendor/myclabs/deep-copy/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 My C-Sense + +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/myclabs/deep-copy/README.md b/vendor/myclabs/deep-copy/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f2592046cf1f294ed051fdcdf50438244245dede --- /dev/null +++ b/vendor/myclabs/deep-copy/README.md @@ -0,0 +1,290 @@ +# DeepCopy + +DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph. + +[![Build Status](https://travis-ci.org/myclabs/DeepCopy.png?branch=master)](https://travis-ci.org/myclabs/DeepCopy) [![Coverage Status](https://coveralls.io/repos/myclabs/DeepCopy/badge.png?branch=master)](https://coveralls.io/r/myclabs/DeepCopy?branch=master) [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/myclabs/DeepCopy/badges/quality-score.png?s=2747100c19b275f93a777e3297c6c12d1b68b934)](https://scrutinizer-ci.com/g/myclabs/DeepCopy/) +[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy) + + +## Table of Contents + +1. [How](#how) +1. [Why](#why) + 1. [Using simply `clone`](#using-simply-clone) + 1. [Overridding `__clone()`](#overridding-__clone) + 1. [With `DeepCopy`](#with-deepcopy) +1. [How it works](#how-it-works) +1. [Going further](#going-further) + 1. [Matchers](#matchers) + 1. [Property name](#property-name) + 1. [Specific property](#specific-property) + 1. [Type](#type) + 1. [Filters](#filters) + 1. [`SetNullFilter`](#setnullfilter) + 1. [`KeepFilter`](#keepfilter) + 1. [`ReplaceFilter`](#replacefilter) + 1. [`ShallowCopyFilter`](#doctrinecollectionfilter) + 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter) + 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter) +1. [Contributing](#contributing) + 1. [Tests](#tests) + +## How? + +Install with Composer: + +```json +composer require myclabs/deep-copy +``` + +Use simply: + +```php +use DeepCopy\DeepCopy; + +$deepCopy = new DeepCopy(); +$myCopy = $deepCopy->copy($myObject); +``` + + +## Why? + +- How do you create copies of your objects? + +```php +$myCopy = clone $myObject; +``` + +- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)? + +You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior yourself. + +- But how do you handle **cycles** in the association graph? + +Now you're in for a big mess :( + +![association graph](doc/graph.png) + +### Using simply `clone` + +![Using clone](doc/clone.png) + +### Overridding `__clone()` + +![Overridding __clone](doc/deep-clone.png) + +### With `DeepCopy` + +![With DeepCopy](doc/deep-copy.png) + +## How it works + +DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it keeps a hash map of all instances and thus preserves the object graph. + +## Going further + +You can add filters to customize the copy process. + +The method to add a filter is `$deepCopy->addFilter($filter, $matcher)`, +with `$filter` implementing `DeepCopy\Filter\Filter` +and `$matcher` implementing `DeepCopy\Matcher\Matcher`. + +We provide some generic filters and matchers. + +### Matchers + + - `DeepCopy\Matcher` applies on a object attribute. + - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements. + +#### Property name + +The `PropertyNameMatcher` will match a property by its name: + +```php +use DeepCopy\Matcher\PropertyNameMatcher; + +$matcher = new PropertyNameMatcher('id'); +// will apply a filter to any property of any objects named "id" +``` + +#### Specific property + +The `PropertyMatcher` will match a specific property of a specific class: + +```php +use DeepCopy\Matcher\PropertyMatcher; + +$matcher = new PropertyMatcher('MyClass', 'id'); +// will apply a filter to the property "id" of any objects of the class "MyClass" +``` + +#### Type + +The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of [gettype()](http://php.net/manual/en/function.gettype.php) function): + +```php +use DeepCopy\TypeMatcher\TypeMatcher; + +$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection'); +// will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection +``` + +### Filters + + - `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`. + - `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`. + +#### `SetNullFilter` + +Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have any ID: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\SetNullFilter; +use DeepCopy\Matcher\PropertyNameMatcher; + +$myObject = MyClass::load(123); +echo $myObject->id; // 123 + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new SetNullFilter(), new PropertyNameMatcher('id')); +$myCopy = $deepCopy->copy($myObject); + +echo $myCopy->id; // null +``` + +#### `KeepFilter` + +If you want a property to remain untouched (for example, an association to an object): + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\KeepFilter; +use DeepCopy\Matcher\PropertyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category')); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy->category has not been touched +``` + +#### `ReplaceFilter` + + 1. If you want to replace the value of a property: + + ```php + use DeepCopy\DeepCopy; + use DeepCopy\Filter\ReplaceFilter; + use DeepCopy\Matcher\PropertyMatcher; + + $deepCopy = new DeepCopy(); + $callback = function ($currentValue) { + return $currentValue . ' (copy)' + }; + $deepCopy->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title')); + $myCopy = $deepCopy->copy($myObject); + + // $myCopy->title will contain the data returned by the callback, e.g. 'The title (copy)' + ``` + + 2. If you want to replace whole element: + + ```php + use DeepCopy\DeepCopy; + use DeepCopy\TypeFilter\ReplaceFilter; + use DeepCopy\TypeMatcher\TypeMatcher; + + $deepCopy = new DeepCopy(); + $callback = function (MyClass $myClass) { + return get_class($myClass); + }; + $deepCopy->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass')); + $myCopy = $deepCopy->copy(array(new MyClass, 'some string', new MyClass)); + + // $myCopy will contain ['MyClass', 'some stirng', 'MyClass'] + ``` + + +The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable. + +#### `ShallowCopyFilter` + +Stop *DeepCopy* from recursively copying element, using standard `clone` instead: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\TypeFilter\ShallowCopyFilter; +use DeepCopy\TypeMatcher\TypeMatcher; +use Mockery as m; + +$this->deepCopy = new DeepCopy(); +$this->deepCopy->addTypeFilter( + new ShallowCopyFilter, + new TypeMatcher(m\MockInterface::class) +); + +$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class)); +// all mocks will be just cloned, not deep-copied +``` + +#### `DoctrineCollectionFilter` + +If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`: + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter; +use DeepCopy\Matcher\PropertyTypeMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection')); +$myCopy = $deepCopy->copy($myObject); +``` + +#### `DoctrineEmptyCollectionFilter` + +If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the `DoctrineEmptyCollectionFilter` + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter; +use DeepCopy\Matcher\PropertyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty')); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy->myProperty will return an empty collection +``` + +#### `DoctrineProxyFilter` + +If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a +Doctrine proxy class (...\\\_\_CG\_\_\Proxy). +You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class. +**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded before other filters are applied!** + +```php +use DeepCopy\DeepCopy; +use DeepCopy\Filter\Doctrine\DoctrineProxyFilter; +use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher; + +$deepCopy = new DeepCopy(); +$deepCopy->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher()); +$myCopy = $deepCopy->copy($myObject); + +// $myCopy should now contain a clone of all entities, including those that were not yet fully loaded. +``` + +## Contributing + +DeepCopy is distributed under the MIT license. + +### Tests + +Running the tests is simple: + +```php +phpunit +``` diff --git a/vendor/myclabs/deep-copy/composer.json b/vendor/myclabs/deep-copy/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..d20287abc79a34ac0729544e5459de1291c92eab --- /dev/null +++ b/vendor/myclabs/deep-copy/composer.json @@ -0,0 +1,21 @@ +{ + "name": "myclabs/deep-copy", + "type": "library", + "description": "Create deep copies (clones) of your objects", + "keywords": ["clone", "copy", "duplicate", "object", "object graph"], + "homepage": "https://github.com/myclabs/DeepCopy", + "license": "MIT", + "autoload": { + "psr-4": { "DeepCopy\\": "src/DeepCopy/" } + }, + "autoload-dev": { + "psr-4": { "DeepCopyTest\\": "tests/DeepCopyTest/" } + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + } +} diff --git a/vendor/myclabs/deep-copy/doc/clone.png b/vendor/myclabs/deep-copy/doc/clone.png new file mode 100644 index 0000000000000000000000000000000000000000..376afd491257d44a8c3772b0b7b0bd7b6c747086 Binary files /dev/null and b/vendor/myclabs/deep-copy/doc/clone.png differ diff --git a/vendor/myclabs/deep-copy/doc/deep-clone.png b/vendor/myclabs/deep-copy/doc/deep-clone.png new file mode 100644 index 0000000000000000000000000000000000000000..2b37a6d7d69c4521612740bca5223b26a3571ac6 Binary files /dev/null and b/vendor/myclabs/deep-copy/doc/deep-clone.png differ diff --git a/vendor/myclabs/deep-copy/doc/deep-copy.png b/vendor/myclabs/deep-copy/doc/deep-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..68c508ae45cc724c2ea2420ebc551dfba94c4fac Binary files /dev/null and b/vendor/myclabs/deep-copy/doc/deep-copy.png differ diff --git a/vendor/myclabs/deep-copy/doc/graph.png b/vendor/myclabs/deep-copy/doc/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5c9428f719bf6ad68f25a46d6e935c2362c4a5 Binary files /dev/null and b/vendor/myclabs/deep-copy/doc/graph.png differ diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php new file mode 100644 index 0000000000000000000000000000000000000000..aee9e7296190c903f28659a3403e5f826ae86ab0 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php @@ -0,0 +1,246 @@ +useCloneMethod = $useCloneMethod; + + $this->addTypeFilter(new SplDoublyLinkedList($this), new TypeMatcher('\SplDoublyLinkedList')); + } + + /** + * Cloning uncloneable properties won't throw exception. + * @param $skipUncloneable + * @return $this + */ + public function skipUncloneable($skipUncloneable = true) + { + $this->skipUncloneable = $skipUncloneable; + return $this; + } + + /** + * Perform a deep copy of the object. + * @param mixed $object + * @return mixed + */ + public function copy($object) + { + $this->hashMap = []; + + return $this->recursiveCopy($object); + } + + public function addFilter(Filter $filter, Matcher $matcher) + { + $this->filters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher) + { + $this->typeFilters[] = [ + 'matcher' => $matcher, + 'filter' => $filter, + ]; + } + + + private function recursiveCopy($var) + { + // Matches Type Filter + if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) { + return $filter->apply($var); + } + + // Resource + if (is_resource($var)) { + return $var; + } + // Array + if (is_array($var)) { + return $this->copyArray($var); + } + // Scalar + if (! is_object($var)) { + return $var; + } + // Object + return $this->copyObject($var); + } + + /** + * Copy an array + * @param array $array + * @return array + */ + private function copyArray(array $array) + { + foreach ($array as $key => $value) { + $array[$key] = $this->recursiveCopy($value); + } + + return $array; + } + + /** + * Copy an object + * @param object $object + * @return object + */ + private function copyObject($object) + { + $objectHash = spl_object_hash($object); + + if (isset($this->hashMap[$objectHash])) { + return $this->hashMap[$objectHash]; + } + + $reflectedObject = new \ReflectionObject($object); + + if (false === $isCloneable = $reflectedObject->isCloneable() and $this->skipUncloneable) { + $this->hashMap[$objectHash] = $object; + return $object; + } + + if (false === $isCloneable) { + throw new CloneException(sprintf( + 'Class "%s" is not cloneable.', + $reflectedObject->getName() + )); + } + + $newObject = clone $object; + $this->hashMap[$objectHash] = $newObject; + if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) { + return $object; + } + + if ($newObject instanceof \DateTimeInterface) { + return $newObject; + } + foreach (ReflectionHelper::getProperties($reflectedObject) as $property) { + $this->copyObjectProperty($newObject, $property); + } + + return $newObject; + } + + private function copyObjectProperty($object, ReflectionProperty $property) + { + // Ignore static properties + if ($property->isStatic()) { + return; + } + + // Apply the filters + foreach ($this->filters as $item) { + /** @var Matcher $matcher */ + $matcher = $item['matcher']; + /** @var Filter $filter */ + $filter = $item['filter']; + + if ($matcher->matches($object, $property->getName())) { + $filter->apply( + $object, + $property->getName(), + function ($object) { + return $this->recursiveCopy($object); + } + ); + // If a filter matches, we stop processing this property + return; + } + } + + $property->setAccessible(true); + $propertyValue = $property->getValue($object); + + // Copy the property + $property->setValue($object, $this->recursiveCopy($propertyValue)); + } + + /** + * Returns first filter that matches variable, NULL if no such filter found. + * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and + * 'matcher' with value of type {@see TypeMatcher} + * @param mixed $var + * @return TypeFilter|null + */ + private function getFirstMatchedTypeFilter(array $filterRecords, $var) + { + $matched = $this->first( + $filterRecords, + function (array $record) use ($var) { + /* @var TypeMatcher $matcher */ + $matcher = $record['matcher']; + + return $matcher->matches($var); + } + ); + + return isset($matched) ? $matched['filter'] : null; + } + + /** + * Returns first element that matches predicate, NULL if no such element found. + * @param array $elements + * @param callable $predicate Predicate arguments are: element. + * @return mixed|null + */ + private function first(array $elements, callable $predicate) + { + foreach ($elements as $element) { + if (call_user_func($predicate, $element)) { + return $element; + } + } + + return null; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php new file mode 100644 index 0000000000000000000000000000000000000000..dd3b617b08166e040401f5bf8498681b9be04f95 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php @@ -0,0 +1,6 @@ +setAccessible(true); + $oldCollection = $reflectionProperty->getValue($object); + + $newCollection = $oldCollection->map( + function ($item) use ($objectCopier) { + return $objectCopier($item); + } + ); + + $reflectionProperty->setValue($object, $newCollection); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..f9b3f7acf1f0550f4ab0dd0f65d7b361ab234a33 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php @@ -0,0 +1,24 @@ +setAccessible(true); + + $reflectionProperty->setValue($object, new ArrayCollection()); + } +} \ No newline at end of file diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..a855277af88be08d22695cc2b2e86433fbef36c7 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php @@ -0,0 +1,20 @@ +__load(); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php new file mode 100644 index 0000000000000000000000000000000000000000..48076a1b007060641d662e9c1abe389f2a81084f --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php @@ -0,0 +1,17 @@ +callback = $callable; + } + + /** + * {@inheritdoc} + */ + public function apply($object, $property, $objectCopier) + { + $reflectionProperty = new \ReflectionProperty($object, $property); + $reflectionProperty->setAccessible(true); + + $value = call_user_func($this->callback, $reflectionProperty->getValue($object)); + + $reflectionProperty->setValue($object, $value); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..d48f15b62a64995d346780602b5426b53a014e78 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php @@ -0,0 +1,22 @@ +setAccessible(true); + $reflectionProperty->setValue($object, null); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..6a7bcf5dd2b1e614ed8c22dfeecb981b34a68dfa --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php @@ -0,0 +1,20 @@ +class = $class; + $this->property = $property; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + return ($object instanceof $this->class) && ($property == $this->property); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..9d9575f03a12e7acc9a4ebee04dd88c4550110c9 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php @@ -0,0 +1,30 @@ +property = $property; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + return $property == $this->property; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php new file mode 100644 index 0000000000000000000000000000000000000000..6935541df1127107896b07083966beecc7639efc --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php @@ -0,0 +1,38 @@ +propertyType = $propertyType; + } + + /** + * {@inheritdoc} + */ + public function matches($object, $property) + { + $reflectionProperty = new ReflectionProperty($object, $property); + $reflectionProperty->setAccessible(true); + + return $reflectionProperty->getValue($object) instanceof $this->propertyType; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php new file mode 100644 index 0000000000000000000000000000000000000000..a094e729434b32f1596716b2df0a7602ff766490 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php @@ -0,0 +1,39 @@ +getProperties() does not return private properties from ancestor classes. + * + * @author muratyaman@gmail.com + * @see http://php.net/manual/en/reflectionclass.getproperties.php + * + * @param \ReflectionClass $ref + * @return \ReflectionProperty[] + */ + public static function getProperties(\ReflectionClass $ref) + { + $props = $ref->getProperties(); + $propsArr = array(); + + foreach ($props as $prop) { + $propertyName = $prop->getName(); + $propsArr[$propertyName] = $prop; + } + + if ($parentClass = $ref->getParentClass()) { + $parentPropsArr = self::getProperties($parentClass); + foreach ($propsArr as $key => $property) { + $parentPropsArr[$key] = $property; + } + + return $parentPropsArr; + } + + return $propsArr; + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..0e42b0fe114e4e81555a5253d4479078e3930707 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php @@ -0,0 +1,27 @@ +callback = $callable; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + return call_user_func($this->callback, $element); + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..408d18bb72693b976d7d83bed9ced538907a25d8 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php @@ -0,0 +1,14 @@ +deepCopy = $deepCopy; + } + + /** + * {@inheritdoc} + */ + public function apply($element) + { + $newElement = clone $element; + + if ($element instanceof \SplDoublyLinkedList) { + // Replace each element in the list with a deep copy of itself + for ($i = 1; $i <= $newElement->count(); $i++) { + $newElement->push($this->deepCopy->copy($newElement->shift())); + } + } + + return $newElement; + + } +} diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php new file mode 100644 index 0000000000000000000000000000000000000000..a37a8ba88096a49ed085fac6126a6dfc17248825 --- /dev/null +++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php @@ -0,0 +1,12 @@ +type = $type; + } + + /** + * @param $element + * @return boolean + */ + public function matches($element) + { + return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type; + } +} diff --git a/vendor/phpdocumentor/reflection-common/.gitignore b/vendor/phpdocumentor/reflection-common/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..c56f671913013852705f6c29c472cf5862b9ff2b --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/.gitignore @@ -0,0 +1,4 @@ +composer.phar +vendor/ +build/ + diff --git a/vendor/phpdocumentor/reflection-common/LICENSE b/vendor/phpdocumentor/reflection-common/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ed6926c1ee795441d5e57d3985e644e5f6028d89 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 phpDocumentor + +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/phpdocumentor/reflection-common/README.md b/vendor/phpdocumentor/reflection-common/README.md new file mode 100644 index 0000000000000000000000000000000000000000..52b12bc016ffe692cb222aec9ddf20b899d96de2 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/README.md @@ -0,0 +1 @@ +# ReflectionCommon diff --git a/vendor/phpdocumentor/reflection-common/composer.json b/vendor/phpdocumentor/reflection-common/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..90eee0f083e1e9251d79e105deb1194f6e479c8a --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/composer.json @@ -0,0 +1,29 @@ +{ + "name": "phpdocumentor/reflection-common", + "keywords": ["phpdoc", "phpDocumentor", "reflection", "static analysis", "FQSEN"], + "homepage": "http://www.phpdoc.org", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "license": "MIT", + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "require": { + "php": ">=5.5" + }, + "autoload" : { + "psr-4" : { + "phpDocumentor\\Reflection\\": ["src"] + } + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/vendor/phpdocumentor/reflection-common/composer.lock b/vendor/phpdocumentor/reflection-common/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..e01dc3c162faca4bbf6a17991227ef65d70d4bc4 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/composer.lock @@ -0,0 +1,974 @@ +{ + "_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" + ], + "hash": "49ee00389e4ccd00d7e93a147103b2ab", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", + "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "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.*@ALPHA" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Instantiator\\": "src" + } + }, + "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": "2014-10-13 12:58:55" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", + "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "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": "2015-02-03 12:10:50" + }, + { + "name": "phpspec/prophecy", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "phpdocumentor/reflection-docblock": "~2.0", + "sebastian/comparator": "~1.1" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.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": "2015-04-27 22:15:08" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f", + "reference": "6b7d2094ca2a685a2cad846cb7cd7a30e8b9470f", + "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.0", + "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.1.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-06-01 07:35:26" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb", + "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb", + "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": "2015-04-02 05:19:05" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "Text/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2014-01-30 17:20:04" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "PHP/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "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": "2013-08-02 07:42:54" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "eab81d02569310739373308137284e0158424330" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330", + "reference": "eab81d02569310739373308137284e0158424330", + "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": "2015-04-08 04:46:07" + }, + { + "name": "phpunit/phpunit", + "version": "4.6.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "816d12536a7a032adc3b68737f82cfbbf98b79c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/816d12536a7a032adc3b68737f82cfbbf98b79c1", + "reference": "816d12536a7a032adc3b68737f82cfbbf98b79c1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "~1.3,>=1.3.1", + "phpunit/php-code-coverage": "~2.0,>=2.0.11", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.1", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.2", + "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.6.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": "2015-05-29 06:00:03" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/253c005852591fd547fc18cd5b7b43a1ec82d8f7", + "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~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-05-29 05:19:18" + }, + { + "name": "sebastian/comparator", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.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": "2015-01-29 16:28:08" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-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": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "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": "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": "2015-01-01 10:01:08" + }, + { + "name": "sebastian/exporter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "84839970d05254c73cde183a721c7af13aede943" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", + "reference": "84839970d05254c73cde183a721c7af13aede943", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.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" + }, + { + "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": "2015-01-27 07:23:06" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "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": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "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": "2015-01-24 09:48:32" + }, + { + "name": "sebastian/version", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "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-02-24 06:35:25" + }, + { + "name": "symfony/yaml", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/4a29a5248aed4fb45f626a7bbbd330291492f5c3", + "reference": "4a29a5248aed4fb45f626a7bbbd330291492f5c3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "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": "2015-05-02 15:21:08" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/vendor/phpdocumentor/reflection-common/phpunit.xml.dist b/vendor/phpdocumentor/reflection-common/phpunit.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..31811501bc3017595b9fde41a021eb208c069f1b --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/phpunit.xml.dist @@ -0,0 +1,26 @@ + + + + + + ./tests/unit/ + + + + + src + + + + + + + + diff --git a/vendor/phpdocumentor/reflection-common/src/Element.php b/vendor/phpdocumentor/reflection-common/src/Element.php new file mode 100644 index 0000000000000000000000000000000000000000..712e30e8f7a4a4c1ef2d162046c6fc2e76dec228 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Element.php @@ -0,0 +1,32 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for files processed by the ProjectFactory + */ +interface File +{ + /** + * Returns the content of the file as a string. + * + * @return string + */ + public function getContents(); + + /** + * Returns md5 hash of the file. + * + * @return string + */ + public function md5(); + + /** + * Returns an relative path to the file. + * + * @return string + */ + public function path(); +} diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php new file mode 100644 index 0000000000000000000000000000000000000000..c7be3f15b95336a336b2d6c300b91a4b43aa8988 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php @@ -0,0 +1,78 @@ +fqsen = $fqsen; + + if (isset($matches[2])) { + $this->name = $matches[2]; + } else { + $matches = explode('\\', $fqsen); + $this->name = trim(end($matches), '()'); + } + } + + /** + * converts this class to string. + * + * @return string + */ + public function __toString() + { + return $this->fqsen; + } + + /** + * Returns the name of the element without path. + * + * @return string + */ + public function getName() + { + return $this->name; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Location.php b/vendor/phpdocumentor/reflection-common/src/Location.php new file mode 100644 index 0000000000000000000000000000000000000000..5760321949e7b085a362fc3ca06b85c3a0dd2f1c --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Location.php @@ -0,0 +1,57 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * The location where an element occurs within a file. + */ +final class Location +{ + /** @var int */ + private $lineNumber = 0; + + /** @var int */ + private $columnNumber = 0; + + /** + * Initializes the location for an element using its line number in the file and optionally the column number. + * + * @param int $lineNumber + * @param int $columnNumber + */ + public function __construct($lineNumber, $columnNumber = 0) + { + $this->lineNumber = $lineNumber; + $this->columnNumber = $columnNumber; + } + + /** + * Returns the line number that is covered by this location. + * + * @return integer + */ + public function getLineNumber() + { + return $this->lineNumber; + } + + /** + * Returns the column number (character position on a line) for this location object. + * + * @return integer + */ + public function getColumnNumber() + { + return $this->columnNumber; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Project.php b/vendor/phpdocumentor/reflection-common/src/Project.php new file mode 100644 index 0000000000000000000000000000000000000000..3ed1e3934318b0962178478b5ae74728a84a8505 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Project.php @@ -0,0 +1,25 @@ +assertEquals($name, $instance->getName()); + } + + /** + * Data provider for ValidFormats tests. Contains a complete list from psr-5 draft. + * + * @return array + */ + public function validFqsenProvider() + { + return [ + ['\\', ''], + ['\My\Space', 'Space'], + ['\My\Space\myFunction()', 'myFunction'], + ['\My\Space\MY_CONSTANT', 'MY_CONSTANT'], + ['\My\Space\MY_CONSTANT2', 'MY_CONSTANT2'], + ['\My\Space\MyClass', 'MyClass'], + ['\My\Space\MyInterface', 'MyInterface'], + ['\My\Space\MyTrait', 'MyTrait'], + ['\My\Space\MyClass::myMethod()', 'myMethod'], + ['\My\Space\MyClass::$my_property', 'my_property'], + ['\My\Space\MyClass::MY_CONSTANT', 'MY_CONSTANT'], + ]; + } + + /** + * @param string $fqsen + * @covers ::__construct + * @dataProvider invalidFqsenProvider + * @expectedException \InvalidArgumentException + */ + public function testInValidFormats($fqsen) + { + new Fqsen($fqsen); + } + + /** + * Data provider for invalidFormats tests. Contains a complete list from psr-5 draft. + * + * @return array + */ + public function invalidFqsenProvider() + { + return [ + ['\My\*'], + ['\My\Space\.()'], + ['My\Space'], + ]; + } + + /** + * @covers ::__construct + * @covers ::__toString + */ + public function testToString() + { + $className = new Fqsen('\\phpDocumentor\\Application'); + + $this->assertEquals('\\phpDocumentor\\Application', (string)$className); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/.gitignore b/vendor/phpdocumentor/reflection-docblock/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..3ce5adbbde5536c3d923b26fb03652d0fa05ba3a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.gitignore @@ -0,0 +1,2 @@ +.idea +vendor diff --git a/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml b/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml new file mode 100644 index 0000000000000000000000000000000000000000..5061d523993e73f8ed761d10beaf831c5eb6fbf0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.scrutinizer.yml @@ -0,0 +1,32 @@ +before_commands: + - "composer install --no-dev --prefer-source" + +tools: + external_code_coverage: true + php_code_sniffer: + enabled: true + config: + standard: PSR2 + filter: + paths: ["src/*", "tests/*"] + php_cpd: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_loc: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_mess_detector: + enabled: true + config: + ruleset: phpmd.xml.dist + design_rules: { eval_expression: false } + filter: + paths: ["src/*"] + php_pdepend: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_analyzer: + enabled: true + filter: + paths: ["src/*", "tests/*"] + sensiolabs_security_checker: true diff --git a/vendor/phpdocumentor/reflection-docblock/.travis.yml b/vendor/phpdocumentor/reflection-docblock/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..920958df4506c378b1e85de4de4e2407bc830f54 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/.travis.yml @@ -0,0 +1,36 @@ +language: php +php: + - 5.5 + - 5.6 + - 7.0 + - hhvm + - nightly + +matrix: + allow_failures: + - php: + - hhvm + - nightly + +cache: + directories: + - $HOME/.composer/cache + +script: + - vendor/bin/phpunit --coverage-clover=coverage.clover -v + - composer update --no-interaction --prefer-source + - vendor/bin/phpunit -v + +before_script: + - composer install --no-interaction + +after_script: + - wget https://scrutinizer-ci.com/ocular.phar + - php ocular.phar code-coverage:upload --format=php-clover coverage.clover + +notifications: + irc: "irc.freenode.org#phpdocumentor" + email: + - mike.vanriel@naenius.com + - ashnazg@php.net + - boen.robot@gmail.com diff --git a/vendor/phpdocumentor/reflection-docblock/LICENSE b/vendor/phpdocumentor/reflection-docblock/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..792e4040f26f0347b3beb069d6ea070e6ae14a69 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010 Mike van Riel + +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/phpdocumentor/reflection-docblock/README.md b/vendor/phpdocumentor/reflection-docblock/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a1984a15e06039a9ca856004b78f39eda3153aa0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/README.md @@ -0,0 +1,69 @@ +The ReflectionDocBlock Component [![Build Status](https://secure.travis-ci.org/phpDocumentor/ReflectionDocBlock.png)](https://travis-ci.org/phpDocumentor/ReflectionDocBlock) +================================ + +Introduction +------------ + +The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser +that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest). + +With this component, a library can provide support for annotations via DocBlocks +or otherwise retrieve information that is embedded in a DocBlock. + +> **Note**: *this is a core component of phpDocumentor and is constantly being +> optimized for performance.* + +Installation +------------ + +You can install the component in the following ways: + +* Use the official Github repository (https://github.com/phpDocumentor/ReflectionDocBlock) +* Via Composer (http://packagist.org/packages/phpdocumentor/reflection-docblock) + +Usage +----- + +In order to parse the DocBlock one needs a DocBlockFactory that can be +instantiated using its `createInstance` factory method like this: + +```php +$factory = \phpDocumentor\Reflection\DocBlockFactory::createInstance(); +``` + +Then we can use the `create` method of the factory to interpret the DocBlock. +Please note that it is also possible to provide a class that has the +`getDocComment()` method, such as an object of type `ReflectionClass`, the +create method will read that if it exists. + +```php +$docComment = <<create($docComment); +``` + +The `create` method will yield an object of type `\phpDocumentor\Reflection\DocBlock` +whose methods can be queried as shown in the following example. + +```php +// Should contain the summary for this DocBlock +$summary = $docblock->getSummary(); + +// Contains an object of type \phpDocumentor\Reflection\DocBlock\Description; +// you can either cast it to string or use the render method to get a string +// representation of the Description. +$description = $docblock->getDescription(); +``` + +> For more examples it would be best to review the scripts in the `/examples` +> folder. + diff --git a/vendor/phpdocumentor/reflection-docblock/composer.json b/vendor/phpdocumentor/reflection-docblock/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..85be2fdd09e3749c39778d559894f12df65c7d6f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/composer.json @@ -0,0 +1,28 @@ +{ + "name": "phpdocumentor/reflection-docblock", + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "autoload": { + "psr-4": {"phpDocumentor\\Reflection\\": ["src/"]} + }, + "autoload-dev": { + "psr-4": {"phpDocumentor\\Reflection\\": ["tests/unit"]} + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/composer.lock b/vendor/phpdocumentor/reflection-docblock/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..b4da3c1b4c59e0e8eaef52353ec2374331cf6c1e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/composer.lock @@ -0,0 +1,1120 @@ +{ + "_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" + ], + "hash": "9dfabded4193c3fd2ec85874de3b2e3c", + "content-hash": "69f6ae6608b8524fa04ddb0264bbf091", + "packages": [ + { + "name": "phpdocumentor/reflection-common", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "9969bd1c9661a73fdab104df7dbf132639d5c4d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/9969bd1c9661a73fdab104df7dbf132639d5c4d8", + "reference": "9969bd1c9661a73fdab104df7dbf132639d5c4d8", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-06-12 22:21:38" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", + "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-06-10 07:14:17" + }, + { + "name": "webmozart/assert", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab", + "reference": "b8ef76d0f0c3b9a0a1bc987085fe0a0ddba984ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2015-05-12 15:19:25" + } + ], + "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-14 21:17:01" + }, + { + "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-11 14:41:42" + }, + { + "name": "mockery/mockery", + "version": "0.9.4", + "source": { + "type": "git", + "url": "https://github.com/padraic/mockery.git", + "reference": "70bba85e4aabc9449626651f48b9018ede04f86b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/padraic/mockery/zipball/70bba85e4aabc9449626651f48b9018ede04f86b", + "reference": "70bba85e4aabc9449626651f48b9018ede04f86b", + "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": "2015-04-02 19:54:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.1.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/631e365cf26bb2c078683e8d9bcf8bc631ac4d44", + "reference": "631e365cf26bb2c078683e8d9bcf8bc631ac4d44", + "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.0", + "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.1.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-06-19 07:11:55" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", + "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "File/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "include-path": [ + "" + ], + "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": "2013-10-10 15:34:57" + }, + { + "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-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d", + "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d", + "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": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2015-06-13 07:35:30" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9", + "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9", + "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": "2015-06-19 03:43:16" + }, + { + "name": "phpunit/phpunit", + "version": "4.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2e8580deebb7d1ac92ac878595e6bffe01069c2a", + "reference": "2e8580deebb7d1ac92ac878595e6bffe01069c2a", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpunit/php-code-coverage": "~2.0", + "phpunit/php-file-iterator": "~1.3.2", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "~1.0.2", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.0", + "sebastian/diff": "~1.1", + "sebastian/environment": "~1.1", + "sebastian/exporter": "~1.1", + "sebastian/global-state": "~1.0", + "sebastian/recursion-context": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4.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": "2015-01-27 16:06:15" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35", + "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "~1.0,>=1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~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-06-11 15:55:48" + }, + { + "name": "sebastian/comparator", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", + "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.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": "2015-01-29 16:28:08" + }, + { + "name": "sebastian/diff", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", + "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-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": "http://www.github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-02-22 15:13:53" + }, + { + "name": "sebastian/environment", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", + "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "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": "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": "2015-01-01 10:01:08" + }, + { + "name": "sebastian/exporter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "84839970d05254c73cde183a721c7af13aede943" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", + "reference": "84839970d05254c73cde183a721c7af13aede943", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.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" + }, + { + "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": "2015-01-27 07:23:06" + }, + { + "name": "sebastian/global-state", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "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": "2014-10-06 09:23:50" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "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": "2015-01-24 09:48:32" + }, + { + "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-21 13:59:46" + }, + { + "name": "symfony/yaml", + "version": "v2.7.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160", + "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "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": "2015-06-10 15:30:22" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "phpdocumentor/reflection-common": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.5" + }, + "platform-dev": [] +} diff --git a/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php b/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php new file mode 100644 index 0000000000000000000000000000000000000000..6d67dea4c504135ea75fb2868939e6d4782921bf --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/01-interpreting-a-simple-docblock.php @@ -0,0 +1,27 @@ +create($docComment); + +// Should contain the first line of the DocBlock +$summary = $docblock->getSummary(); + +// Contains an object of type Description; you can either cast it to string or use +// the render method to get a string representation of the Description. +// +// In subsequent examples we will be fiddling a bit more with the Description. +$description = $docblock->getDescription(); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php b/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..23995889c7c0150f51be05fd5c4afc83ebbdfe4f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/02-interpreting-tags.php @@ -0,0 +1,24 @@ +create($docComment); + +// You can check if a DocBlock has one or more see tags +$hasSeeTag = $docblock->hasTag('see'); + +// Or we can get a complete list of all tags +$tags = $docblock->getTags(); + +// But we can also grab all tags of a specific type, such as `see` +$seeTags = $docblock->getTagsByName('see'); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php b/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php new file mode 100644 index 0000000000000000000000000000000000000000..6bc10baf4a06b82b3376d3b5eacdd5cb852c227a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/03-reconstituting-a-docblock.php @@ -0,0 +1,27 @@ +create($docComment); + +// Create the serializer that will reconstitute the DocBlock back to its original form. +$serializer = new Serializer(); + +// Reconstitution is performed by the `getDocComment()` method. +$reconstitutedDocComment = $serializer->getDocComment($docblock); + diff --git a/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php b/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php new file mode 100644 index 0000000000000000000000000000000000000000..026d60693d95bff51bbe5301abe3c8ec4cc85607 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/04-adding-your-own-tag.php @@ -0,0 +1,135 @@ + Important: Tag classes that act as Factories using the `create` method should implement the TagFactory interface. + */ +final class MyTag extends BaseTag implements StaticMethod +{ + /** + * A required property that is used by Formatters to reconstitute the complete tag line. + * + * @see Formatter + * + * @var string + */ + protected $name = 'my-tag'; + + /** + * The constructor for this Tag; this should contain all properties for this object. + * + * @param Description $description An example of how to add a Description to the tag; the Description is often + * an optional variable so passing null is allowed in this instance (though you can + * also construct an empty description object). + * + * @see BaseTag for the declaration of the description property and getDescription method. + */ + public function __construct(Description $description = null) + { + $this->description = $description; + } + + /** + * A static Factory that creates a new instance of the current Tag. + * + * In this example the MyTag tag can be created by passing a description text as $body. Because we have added + * a $descriptionFactory that is type-hinted as DescriptionFactory we can now construct a new Description object + * and pass that to the constructor. + * + * > You could directly instantiate a Description object here but that won't be parsed for inline tags and Types + * > won't be resolved. The DescriptionFactory will take care of those actions. + * + * The `create` method's interface states that this method only features a single parameter (`$body`) but the + * {@see TagFactory} will read the signature of this method and if it has more parameters then it will try + * to find declarations for it in the ServiceLocator of the TagFactory (see {@see TagFactory::$serviceLocator}). + * + * > Important: all properties following the `$body` should default to `null`, otherwise PHP will error because + * > it no longer matches the interface. This is why you often see the default tags check that an optional argument + * > is not null nonetheless. + * + * @param string $body + * @param DescriptionFactory $descriptionFactory + * @param Context|null $context The Context is used to resolve Types and FQSENs, although optional + * it is highly recommended to pass it. If you omit it then it is assumed that + * the DocBlock is in the global namespace and has no `use` statements. + * + * @see Tag for the interface declaration of the `create` method. + * @see Tag::create() for more information on this method's workings. + * + * @return MyTag + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, Context $context = null) + { + Assert::string($body); + Assert::notNull($descriptionFactory); + + return new static($descriptionFactory->create($body, $context)); + } + + /** + * Returns a rendition of the original tag line. + * + * This method is used to reconstitute a DocBlock into its original form by the {@see Serializer}. It should + * feature all parts of the tag so that the serializer can put it back together. + * + * @return string + */ + public function __toString() + { + return (string)$this->description; + } +} + +$docComment = << MyTag::class]; + +// Do pass the list of custom tags to the Factory for the DocBlockFactory. +$factory = DocBlockFactory::createInstance($customTags); +// You can also add Tags later using `$factory->registerTagHandler()` with a tag name and Tag class name. + +// Create the DocBlock +$docblock = $factory->create($docComment); + +// Take a look: the $customTagObjects now contain an array with your newly added tag +$customTagObjects = $docblock->getTagsByName('my-tag'); + +// As an experiment: let's reconstitute the DocBlock and observe that because we added a __toString() method +// to the tag class that we can now also see it. +$serializer = new Serializer(); +$reconstitutedDocComment = $serializer->getDocComment($docblock); diff --git a/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php b/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php new file mode 100644 index 0000000000000000000000000000000000000000..5ec772fecf9b7fe0bdbd91043f43252e48f42cfe --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/examples/playing-with-descriptions/02-escaping.php @@ -0,0 +1,47 @@ +create($docComment); + +// Escaping is automatic so this happens in the DescriptionFactory. +$description = $docblock->getDescription(); + +// This is the rendition that we will receive of the Description. +$receivedDocComment = <<render(); diff --git a/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist b/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..9abf85cff9430ad2e2dd0ea9e1d3757bebfa4101 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/phpmd.xml.dist @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + 40 + + + diff --git a/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist b/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..3c2e9a3757aa3632d866b6684d52f098f1ee388b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/phpunit.xml.dist @@ -0,0 +1,33 @@ + + + + + + ./tests/unit + + + ./tests/integration + + + + + ./src/ + + + ./vendor/ + + + + + + diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php new file mode 100644 index 0000000000000000000000000000000000000000..399114067d55462d096cb3248b0462a269c3ddf6 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php @@ -0,0 +1,220 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Tag; +use Webmozart\Assert\Assert; + +final class DocBlock +{ + /** @var string The opening line for this docblock. */ + private $summary = ''; + + /** @var DocBlock\Description The actual description for this docblock. */ + private $description = null; + + /** @var Tag[] An array containing all the tags in this docblock; except inline. */ + private $tags = array(); + + /** @var Types\Context Information about the context of this DocBlock. */ + private $context = null; + + /** @var Location Information about the location of this DocBlock. */ + private $location = null; + + /** @var bool Is this DocBlock (the start of) a template? */ + private $isTemplateStart = false; + + /** @var bool Does this DocBlock signify the end of a DocBlock template? */ + private $isTemplateEnd = false; + + /** + * @param string $summary + * @param DocBlock\Description $description + * @param DocBlock\Tag[] $tags + * @param Types\Context $context The context in which the DocBlock occurs. + * @param Location $location The location within the file that this DocBlock occurs in. + * @param bool $isTemplateStart + * @param bool $isTemplateEnd + */ + public function __construct( + $summary = '', + DocBlock\Description $description = null, + array $tags = [], + Types\Context $context = null, + Location $location = null, + $isTemplateStart = false, + $isTemplateEnd = false + ) + { + Assert::string($summary); + Assert::boolean($isTemplateStart); + Assert::boolean($isTemplateEnd); + Assert::allIsInstanceOf($tags, Tag::class); + + $this->summary = $summary; + $this->description = $description ?: new DocBlock\Description(''); + foreach ($tags as $tag) { + $this->addTag($tag); + } + + $this->context = $context; + $this->location = $location; + + $this->isTemplateEnd = $isTemplateEnd; + $this->isTemplateStart = $isTemplateStart; + } + + /** + * @return string + */ + public function getSummary() + { + return $this->summary; + } + + /** + * @return DocBlock\Description + */ + public function getDescription() + { + return $this->description; + } + + /** + * Returns the current context. + * + * @return Types\Context + */ + public function getContext() + { + return $this->context; + } + + /** + * Returns the current location. + * + * @return Location + */ + public function getLocation() + { + return $this->location; + } + + /** + * Returns whether this DocBlock is the start of a Template section. + * + * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker + * (`#@+`) that is appended directly after the opening `/**` of a DocBlock. + * + * An example of such an opening is: + * + * ``` + * /**#@+ + * * My DocBlock + * * / + * ``` + * + * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all + * elements that follow until another DocBlock is found that contains the closing marker (`#@-`). + * + * @see self::isTemplateEnd() for the check whether a closing marker was provided. + * + * @return boolean + */ + public function isTemplateStart() + { + return $this->isTemplateStart; + } + + /** + * Returns whether this DocBlock is the end of a Template section. + * + * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality. + * + * @return boolean + */ + public function isTemplateEnd() + { + return $this->isTemplateEnd; + } + + /** + * Returns the tags for this DocBlock. + * + * @return Tag[] + */ + public function getTags() + { + return $this->tags; + } + + /** + * Returns an array of tags matching the given name. If no tags are found + * an empty array is returned. + * + * @param string $name String to search by. + * + * @return Tag[] + */ + public function getTagsByName($name) + { + Assert::string($name); + + $result = array(); + + /** @var Tag $tag */ + foreach ($this->getTags() as $tag) { + if ($tag->getName() != $name) { + continue; + } + + $result[] = $tag; + } + + return $result; + } + + /** + * Checks if a tag of a certain type is present in this DocBlock. + * + * @param string $name Tag name to check for. + * + * @return bool + */ + public function hasTag($name) + { + Assert::string($name); + + /** @var Tag $tag */ + foreach ($this->getTags() as $tag) { + if ($tag->getName() == $name) { + return true; + } + } + + return false; + } + + /** + * Adds a tag to this DocBlock. + * + * @param Tag $tag The tag to add. + * + * @return void + */ + private function addTag(Tag $tag) + { + $this->tags[] = $tag; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php new file mode 100644 index 0000000000000000000000000000000000000000..d1d7fc64b09360fd934b316b9607697c116a4793 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php @@ -0,0 +1,103 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use Webmozart\Assert\Assert; + +/** + * Object representing to description for a DocBlock. + * + * A Description object can consist of plain text but can also include tags. A Description Formatter can then combine + * a body template with sprintf-style placeholders together with formatted tags in order to reconstitute a complete + * description text using the format that you would prefer. + * + * Because parsing a Description text can be a verbose process this is handled by the {@see DescriptionFactory}. It is + * thus recommended to use that to create a Description object, like this: + * + * $description = $descriptionFactory->create('This is a {@see Description}', $context); + * + * The description factory will interpret the given body and create a body template and list of tags from them, and pass + * that onto the constructor if this class. + * + * > The $context variable is a class of type {@see \phpDocumentor\Reflection\Types\Context} and contains the namespace + * > and the namespace aliases that apply to this DocBlock. These are used by the Factory to resolve and expand partial + * > type names and FQSENs. + * + * If you do not want to use the DescriptionFactory you can pass a body template and tag listing like this: + * + * $description = new Description( + * 'This is a %1$s', + * [ new See(new Fqsen('\phpDocumentor\Reflection\DocBlock\Description')) ] + * ); + * + * It is generally recommended to use the Factory as that will also apply escaping rules, while the Description object + * is mainly responsible for rendering. + * + * @see DescriptionFactory to create a new Description. + * @see Description\Formatter for the formatting of the body and tags. + */ +class Description +{ + /** @var string */ + private $bodyTemplate; + + /** @var Tag[] */ + private $tags; + + /** + * Initializes a Description with its body (template) and a listing of the tags used in the body template. + * + * @param string $bodyTemplate + * @param Tag[] $tags + */ + public function __construct($bodyTemplate, array $tags = []) + { + Assert::string($bodyTemplate); + + $this->bodyTemplate = $bodyTemplate; + $this->tags = $tags; + } + + /** + * Renders this description as a string where the provided formatter will format the tags in the expected string + * format. + * + * @param Formatter|null $formatter + * + * @return string + */ + public function render(Formatter $formatter = null) + { + if ($formatter === null) { + $formatter = new PassthroughFormatter(); + } + + $tags = []; + foreach ($this->tags as $tag) { + $tags[] = '{' . $formatter->format($tag) . '}'; + } + return vsprintf($this->bodyTemplate, $tags); + } + + /** + * Returns a plain string representation of this description. + * + * @return string + */ + public function __toString() + { + return $this->render(); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..f34d0f7e9f12b8600aae941af2ac47f76d60910d --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php @@ -0,0 +1,192 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\Types\Context as TypeContext; + +/** + * Creates a new Description object given a body of text. + * + * Descriptions in phpDocumentor are somewhat complex entities as they can contain one or more tags inside their + * body that can be replaced with a readable output. The replacing is done by passing a Formatter object to the + * Description object's `render` method. + * + * In addition to the above does a Description support two types of escape sequences: + * + * 1. `{@}` to escape the `@` character to prevent it from being interpreted as part of a tag, i.e. `{{@}link}` + * 2. `{}` to escape the `}` character, this can be used if you want to use the `}` character in the description + * of an inline tag. + * + * If a body consists of multiple lines then this factory will also remove any superfluous whitespace at the beginning + * of each line while maintaining any indentation that is used. This will prevent formatting parsers from tripping + * over unexpected spaces as can be observed with tag descriptions. + */ +class DescriptionFactory +{ + /** @var TagFactory */ + private $tagFactory; + + /** + * Initializes this factory with the means to construct (inline) tags. + * + * @param TagFactory $tagFactory + */ + public function __construct(TagFactory $tagFactory) + { + $this->tagFactory = $tagFactory; + } + + /** + * Returns the parsed text of this description. + * + * @param string $contents + * @param TypeContext $context + * + * @return Description + */ + public function create($contents, TypeContext $context = null) + { + list($text, $tags) = $this->parse($this->lex($contents), $context); + + return new Description($text, $tags); + } + + /** + * Strips the contents from superfluous whitespace and splits the description into a series of tokens. + * + * @param string $contents + * + * @return string[] A series of tokens of which the description text is composed. + */ + private function lex($contents) + { + $contents = $this->removeSuperfluousStartingWhitespace($contents); + + // performance optimalization; if there is no inline tag, don't bother splitting it up. + if (strpos($contents, '{@') === false) { + return [$contents]; + } + + return preg_split( + '/\{ + # "{@}" is not a valid inline tag. This ensures that we do not treat it as one, but treat it literally. + (?!@\}) + # We want to capture the whole tag line, but without the inline tag delimiters. + (\@ + # Match everything up to the next delimiter. + [^{}]* + # Nested inline tag content should not be captured, or it will appear in the result separately. + (?: + # Match nested inline tags. + (?: + # Because we did not catch the tag delimiters earlier, we must be explicit with them here. + # Notice that this also matches "{}", as a way to later introduce it as an escape sequence. + \{(?1)?\} + | + # Make sure we match hanging "{". + \{ + ) + # Match content after the nested inline tag. + [^{}]* + )* # If there are more inline tags, match them as well. We use "*" since there may not be any + # nested inline tags. + ) + \}/Sux', + $contents, + null, + PREG_SPLIT_DELIM_CAPTURE + ); + } + + /** + * Parses the stream of tokens in to a new set of tokens containing Tags. + * + * @param string[] $tokens + * @param TypeContext $context + * + * @return string[]|Tag[] + */ + private function parse($tokens, TypeContext $context) + { + $count = count($tokens); + $tagCount = 0; + $tags = []; + + for ($i = 1; $i < $count; $i += 2) { + $tags[] = $this->tagFactory->create($tokens[$i], $context); + $tokens[$i] = '%' . ++$tagCount . '$s'; + } + + //In order to allow "literal" inline tags, the otherwise invalid + //sequence "{@}" is changed to "@", and "{}" is changed to "}". + //"%" is escaped to "%%" because of vsprintf. + //See unit tests for examples. + for ($i = 0; $i < $count; $i += 2) { + $tokens[$i] = str_replace(['{@}', '{}', '%'], ['@', '}', '%%'], $tokens[$i]); + } + + return [implode('', $tokens), $tags]; + } + + /** + * Removes the superfluous from a multi-line description. + * + * When a description has more than one line then it can happen that the second and subsequent lines have an + * additional indentation. This is commonly in use with tags like this: + * + * {@}since 1.1.0 This is an example + * description where we have an + * indentation in the second and + * subsequent lines. + * + * If we do not normalize the indentation then we have superfluous whitespace on the second and subsequent + * lines and this may cause rendering issues when, for example, using a Markdown converter. + * + * @param string $contents + * + * @return string + */ + private function removeSuperfluousStartingWhitespace($contents) + { + $lines = explode("\n", $contents); + + // if there is only one line then we don't have lines with superfluous whitespace and + // can use the contents as-is + if (count($lines) <= 1) { + return $contents; + } + + // determine how many whitespace characters need to be stripped + $startingSpaceCount = 9999999; + for ($i = 1; $i < count($lines); $i++) { + // lines with a no length do not count as they are not indented at all + if (strlen(trim($lines[$i])) === 0) { + continue; + } + + // determine the number of prefixing spaces by checking the difference in line length before and after + // an ltrim + $startingSpaceCount = min($startingSpaceCount, strlen($lines[$i]) - strlen(ltrim($lines[$i]))); + } + + // strip the number of spaces from each line + if ($startingSpaceCount > 0) { + for ($i = 1; $i < count($lines); $i++) { + $lines[$i] = substr($lines[$i], $startingSpaceCount); + } + } + + return implode("\n", $lines); + } + +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php new file mode 100644 index 0000000000000000000000000000000000000000..3cc5dab311ea81bf913b6a48c6e8532dd15c6a4b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Tags\Example; + +/** + * Class used to find an example file's location based on a given ExampleDescriptor. + */ +class ExampleFinder +{ + /** @var string */ + private $sourceDirectory = ''; + + /** @var string[] */ + private $exampleDirectories = array(); + + /** + * Attempts to find the example contents for the given descriptor. + * + * @param Example $example + * + * @return string + */ + public function find(Example $example) + { + $filename = $example->getFilePath(); + + $file = $this->getExampleFileContents($filename); + if (!$file) { + return "** File not found : {$filename} **"; + } + + return implode('', array_slice($file, $example->getStartingLine() - 1, $example->getLineCount())); + } + + /** + * Registers the project's root directory where an 'examples' folder can be expected. + * + * @param string $directory + * + * @return void + */ + public function setSourceDirectory($directory = '') + { + $this->sourceDirectory = $directory; + } + + /** + * Returns the project's root directory where an 'examples' folder can be expected. + * + * @return string + */ + public function getSourceDirectory() + { + return $this->sourceDirectory; + } + + /** + * Registers a series of directories that may contain examples. + * + * @param string[] $directories + */ + public function setExampleDirectories(array $directories) + { + $this->exampleDirectories = $directories; + } + + /** + * Returns a series of directories that may contain examples. + * + * @return string[] + */ + public function getExampleDirectories() + { + return $this->exampleDirectories; + } + + /** + * Attempts to find the requested example file and returns its contents or null if no file was found. + * + * This method will try several methods in search of the given example file, the first one it encounters is + * returned: + * + * 1. Iterates through all examples folders for the given filename + * 2. Checks the source folder for the given filename + * 3. Checks the 'examples' folder in the current working directory for examples + * 4. Checks the path relative to the current working directory for the given filename + * + * @param string $filename + * + * @return string|null + */ + private function getExampleFileContents($filename) + { + $normalizedPath = null; + + foreach ($this->exampleDirectories as $directory) { + $exampleFileFromConfig = $this->constructExamplePath($directory, $filename); + if (is_readable($exampleFileFromConfig)) { + $normalizedPath = $exampleFileFromConfig; + break; + } + } + + if (!$normalizedPath) { + if (is_readable($this->getExamplePathFromSource($filename))) { + $normalizedPath = $this->getExamplePathFromSource($filename); + } elseif (is_readable($this->getExamplePathFromExampleDirectory($filename))) { + $normalizedPath = $this->getExamplePathFromExampleDirectory($filename); + } elseif (is_readable($filename)) { + $normalizedPath = $filename; + } + } + + return $normalizedPath && is_readable($normalizedPath) ? file($normalizedPath) : null; + } + + /** + * Get example filepath based on the example directory inside your project. + * + * @param string $file + * + * @return string + */ + private function getExamplePathFromExampleDirectory($file) + { + return getcwd() . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $file; + } + + /** + * Returns a path to the example file in the given directory.. + * + * @param string $directory + * @param string $file + * + * @return string + */ + private function constructExamplePath($directory, $file) + { + return rtrim($directory, '\\/') . DIRECTORY_SEPARATOR . $file; + } + + /** + * Get example filepath based on sourcecode. + * + * @param string $file + * + * @return string + */ + private function getExamplePathFromSource($file) + { + return sprintf( + '%s%s%s', + trim($this->getSourceDirectory(), '\\/'), + DIRECTORY_SEPARATOR, + trim($file, '"') + ); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php new file mode 100644 index 0000000000000000000000000000000000000000..7f1c89d3829ebe6e68e252f893b8c130d69b9534 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php @@ -0,0 +1,143 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock; +use Webmozart\Assert\Assert; + +/** + * Converts a DocBlock back from an object to a complete DocComment including Asterisks. + */ +class Serializer +{ + /** @var string The string to indent the comment with. */ + protected $indentString = ' '; + + /** @var int The number of times the indent string is repeated. */ + protected $indent = 0; + + /** @var bool Whether to indent the first line with the given indent amount and string. */ + protected $isFirstLineIndented = true; + + /** @var int|null The max length of a line. */ + protected $lineLength = null; + + /** + * Create a Serializer instance. + * + * @param int $indent The number of times the indent string is repeated. + * @param string $indentString The string to indent the comment with. + * @param bool $indentFirstLine Whether to indent the first line. + * @param int|null $lineLength The max length of a line or NULL to disable line wrapping. + */ + public function __construct($indent = 0, $indentString = ' ', $indentFirstLine = true, $lineLength = null) + { + Assert::integer($indent); + Assert::string($indentString); + Assert::boolean($indentFirstLine); + Assert::nullOrInteger($lineLength); + + $this->indent = $indent; + $this->indentString = $indentString; + $this->isFirstLineIndented = $indentFirstLine; + $this->lineLength = $lineLength; + } + + /** + * Generate a DocBlock comment. + * + * @param DocBlock $docblock The DocBlock to serialize. + * + * @return string The serialized doc block. + */ + public function getDocComment(DocBlock $docblock) + { + $indent = str_repeat($this->indentString, $this->indent); + $firstIndent = $this->isFirstLineIndented ? $indent : ''; + // 3 === strlen(' * ') + $wrapLength = $this->lineLength ? $this->lineLength - strlen($indent) - 3 : null; + + $text = $this->removeTrailingSpaces( + $indent, + $this->addAsterisksForEachLine( + $indent, + $this->getSummaryAndDescriptionTextBlock($docblock, $wrapLength) + ) + ); + + $comment = "{$firstIndent}/**\n{$indent} * {$text}\n{$indent} *\n"; + $comment = $this->addTagBlock($docblock, $wrapLength, $indent, $comment); + $comment .= $indent . ' */'; + + return $comment; + } + + /** + * @param $indent + * @param $text + * @return mixed + */ + private function removeTrailingSpaces($indent, $text) + { + return str_replace("\n{$indent} * \n", "\n{$indent} *\n", $text); + } + + /** + * @param $indent + * @param $text + * @return mixed + */ + private function addAsterisksForEachLine($indent, $text) + { + return str_replace("\n", "\n{$indent} * ", $text); + } + + /** + * @param DocBlock $docblock + * @param $wrapLength + * @return string + */ + private function getSummaryAndDescriptionTextBlock(DocBlock $docblock, $wrapLength) + { + $text = $docblock->getSummary() . ((string)$docblock->getDescription() ? "\n\n" . $docblock->getDescription() + : ''); + if ($wrapLength !== null) { + $text = wordwrap($text, $wrapLength); + return $text; + } + return $text; + } + + /** + * @param DocBlock $docblock + * @param $wrapLength + * @param $indent + * @param $comment + * @return string + */ + private function addTagBlock(DocBlock $docblock, $wrapLength, $indent, $comment) + { + foreach ($docblock->getTags() as $tag) { + $formatter = new DocBlock\Tags\Formatter\PassthroughFormatter(); + $tagText = $formatter->format($tag); + if ($wrapLength !== null) { + $tagText = wordwrap($tagText, $wrapLength); + } + $tagText = str_replace("\n", "\n{$indent} * ", $tagText); + + $comment .= "{$indent} * {$tagText}\n"; + } + + return $comment; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..0a656466ad47800debbe7bb85d2a76c18f2008e0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php @@ -0,0 +1,314 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Factory\StaticMethod; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Creates a Tag object given the contents of a tag. + * + * This Factory is capable of determining the appropriate class for a tag and instantiate it using its `create` + * factory method. The `create` factory method of a Tag can have a variable number of arguments; this way you can + * pass the dependencies that you need to construct a tag object. + * + * > Important: each parameter in addition to the body variable for the `create` method must default to null, otherwise + * > it violates the constraint with the interface; it is recommended to use the {@see Assert::notNull()} method to + * > verify that a dependency is actually passed. + * + * This Factory also features a Service Locator component that is used to pass the right dependencies to the + * `create` method of a tag; each dependency should be registered as a service or as a parameter. + * + * When you want to use a Tag of your own with custom handling you need to call the `registerTagHandler` method, pass + * the name of the tag and a Fully Qualified Class Name pointing to a class that implements the Tag interface. + */ +final class StandardTagFactory implements TagFactory +{ + /** PCRE regular expression matching a tag name. */ + const REGEX_TAGNAME = '[\w\-\_\\\\]+'; + + /** + * @var string[] An array with a tag as a key, and an FQCN to a class that handles it as an array value. + */ + private $tagHandlerMappings = [ + 'author' => '\phpDocumentor\Reflection\DocBlock\Tags\Author', + 'covers' => '\phpDocumentor\Reflection\DocBlock\Tags\Covers', + 'deprecated' => '\phpDocumentor\Reflection\DocBlock\Tags\Deprecated', + // 'example' => '\phpDocumentor\Reflection\DocBlock\Tags\Example', + 'link' => '\phpDocumentor\Reflection\DocBlock\Tags\Link', + 'method' => '\phpDocumentor\Reflection\DocBlock\Tags\Method', + 'param' => '\phpDocumentor\Reflection\DocBlock\Tags\Param', + 'property-read' => '\phpDocumentor\Reflection\DocBlock\Tags\PropertyRead', + 'property' => '\phpDocumentor\Reflection\DocBlock\Tags\Property', + 'property-write' => '\phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite', + 'return' => '\phpDocumentor\Reflection\DocBlock\Tags\Return_', + 'see' => '\phpDocumentor\Reflection\DocBlock\Tags\See', + 'since' => '\phpDocumentor\Reflection\DocBlock\Tags\Since', + 'source' => '\phpDocumentor\Reflection\DocBlock\Tags\Source', + 'throw' => '\phpDocumentor\Reflection\DocBlock\Tags\Throws', + 'throws' => '\phpDocumentor\Reflection\DocBlock\Tags\Throws', + 'uses' => '\phpDocumentor\Reflection\DocBlock\Tags\Uses', + 'var' => '\phpDocumentor\Reflection\DocBlock\Tags\Var_', + 'version' => '\phpDocumentor\Reflection\DocBlock\Tags\Version' + ]; + + /** + * @var \ReflectionParameter[][] a lazy-loading cache containing parameters for each tagHandler that has been used. + */ + private $tagHandlerParameterCache = []; + + /** + * @var FqsenResolver + */ + private $fqsenResolver; + + /** + * @var mixed[] an array representing a simple Service Locator where we can store parameters and + * services that can be inserted into the Factory Methods of Tag Handlers. + */ + private $serviceLocator = []; + + /** + * Initialize this tag factory with the means to resolve an FQSEN and optionally a list of tag handlers. + * + * If no tag handlers are provided than the default list in the {@see self::$tagHandlerMappings} property + * is used. + * + * @param FqsenResolver $fqsenResolver + * @param string[] $tagHandlers + * + * @see self::registerTagHandler() to add a new tag handler to the existing default list. + */ + public function __construct(FqsenResolver $fqsenResolver, array $tagHandlers = null) + { + $this->fqsenResolver = $fqsenResolver; + if ($tagHandlers !== null) { + $this->tagHandlerMappings = $tagHandlers; + } + + $this->addService($fqsenResolver, FqsenResolver::class); + } + + /** + * {@inheritDoc} + */ + public function create($tagLine, TypeContext $context = null) + { + if (! $context) { + $context = new TypeContext(''); + } + + list($tagName, $tagBody) = $this->extractTagParts($tagLine); + + return $this->createTag($tagBody, $tagName, $context); + } + + /** + * {@inheritDoc} + */ + public function addParameter($name, $value) + { + $this->serviceLocator[$name] = $value; + } + + /** + * {@inheritDoc} + */ + public function addService($service, $alias = null) + { + $this->serviceLocator[$alias ?: get_class($service)] = $service; + } + + /** + * {@inheritDoc} + */ + public function registerTagHandler($tagName, $handler) + { + Assert::stringNotEmpty($tagName); + Assert::stringNotEmpty($handler); + Assert::classExists($handler); + Assert::implementsInterface($handler, StaticMethod::class); + + if (strpos($tagName, '\\') && $tagName[0] !== '\\') { + throw new \InvalidArgumentException( + 'A namespaced tag must have a leading backslash as it must be fully qualified' + ); + } + + $this->tagHandlerMappings[$tagName] = $handler; + } + + /** + * Extracts all components for a tag. + * + * @param string $tagLine + * + * @return string[] + */ + private function extractTagParts($tagLine) + { + $matches = array(); + if (! preg_match('/^@(' . self::REGEX_TAGNAME . ')(?:\s*([^\s].*)|$)?/us', $tagLine, $matches)) { + throw new \InvalidArgumentException( + 'The tag "' . $tagLine . '" does not seem to be wellformed, please check it for errors' + ); + } + + if (count($matches) < 3) { + $matches[] = ''; + } + + return array_slice($matches, 1); + } + + /** + * Creates a new tag object with the given name and body or returns null if the tag name was recognized but the + * body was invalid. + * + * @param string $body + * @param string $name + * @param TypeContext $context + * + * @return Tag|null + */ + private function createTag($body, $name, TypeContext $context) + { + $handlerClassName = $this->findHandlerClassName($name, $context); + $arguments = $this->getArgumentsForParametersFromWiring( + $this->fetchParametersForHandlerFactoryMethod($handlerClassName), + $this->getServiceLocatorWithDynamicParameters($context, $name, $body) + ) + ; + + return call_user_func_array([$handlerClassName, 'create'], $arguments); + } + + /** + * Determines the Fully Qualified Class Name of the Factory or Tag (containing a Factory Method `create`). + * + * @param string $tagName + * @param TypeContext $context + * + * @return string + */ + private function findHandlerClassName($tagName, TypeContext $context) + { + $handlerClassName = Generic::class; + if (isset($this->tagHandlerMappings[$tagName])) { + $handlerClassName = $this->tagHandlerMappings[$tagName]; + } elseif ($this->isAnnotation($tagName)) { + // TODO: Annotation support is planned for a later stage and as such is disabled for now + // $tagName = (string)$this->fqsenResolver->resolve($tagName, $context); + // if (isset($this->annotationMappings[$tagName])) { + // $handlerClassName = $this->annotationMappings[$tagName]; + // } + } + + return $handlerClassName; + } + + /** + * Retrieves the arguments that need to be passed to the Factory Method with the given Parameters. + * + * @param \ReflectionParameter[] $parameters + * @param mixed[] $locator + * + * @return mixed[] A series of values that can be passed to the Factory Method of the tag whose parameters + * is provided with this method. + */ + private function getArgumentsForParametersFromWiring($parameters, $locator) + { + $arguments = []; + foreach ($parameters as $index => $parameter) { + $typeHint = $parameter->getClass() ? $parameter->getClass()->getName() : null; + if (isset($locator[$typeHint])) { + $arguments[] = $locator[$typeHint]; + continue; + } + + $parameterName = $parameter->getName(); + if (isset($locator[$parameterName])) { + $arguments[] = $locator[$parameterName]; + continue; + } + + $arguments[] = null; + } + + return $arguments; + } + + /** + * Retrieves a series of ReflectionParameter objects for the static 'create' method of the given + * tag handler class name. + * + * @param string $handlerClassName + * + * @return \ReflectionParameter[] + */ + private function fetchParametersForHandlerFactoryMethod($handlerClassName) + { + if (! isset($this->tagHandlerParameterCache[$handlerClassName])) { + $methodReflection = new \ReflectionMethod($handlerClassName, 'create'); + $this->tagHandlerParameterCache[$handlerClassName] = $methodReflection->getParameters(); + } + + return $this->tagHandlerParameterCache[$handlerClassName]; + } + + /** + * Returns a copy of this class' Service Locator with added dynamic parameters, such as the tag's name, body and + * Context. + * + * @param TypeContext $context The Context (namespace and aliasses) that may be passed and is used to resolve FQSENs. + * @param string $tagName The name of the tag that may be passed onto the factory method of the Tag class. + * @param string $tagBody The body of the tag that may be passed onto the factory method of the Tag class. + * + * @return mixed[] + */ + private function getServiceLocatorWithDynamicParameters(TypeContext $context, $tagName, $tagBody) + { + $locator = array_merge( + $this->serviceLocator, + [ + 'name' => $tagName, + 'body' => $tagBody, + TypeContext::class => $context + ] + ); + + return $locator; + } + + /** + * Returns whether the given tag belongs to an annotation. + * + * @param string $tagContent + * + * @todo this method should be populated once we implement Annotation notation support. + * + * @return bool + */ + private function isAnnotation($tagContent) + { + // 1. Contains a namespace separator + // 2. Contains parenthesis + // 3. Is present in a list of known annotations (make the algorithm smart by first checking is the last part + // of the annotation class name matches the found tag name + + return false; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php new file mode 100644 index 0000000000000000000000000000000000000000..e765367883b5e83bbbc6df0ae62b54d97d9ebd3a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php @@ -0,0 +1,26 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +interface Tag +{ + public function getName(); + + public static function create($body); + + public function render(Formatter $formatter = null); + + public function __toString(); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..3c1d1132bcfe6b27bb7a165efbbe4962b0427eb0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php @@ -0,0 +1,93 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use phpDocumentor\Reflection\Types\Context as TypeContext; + +interface TagFactory +{ + /** + * Adds a parameter to the service locator that can be injected in a tag's factory method. + * + * When calling a tag's "create" method we always check the signature for dependencies to inject. One way is to + * typehint a parameter in the signature so that we can use that interface or class name to inject a dependency + * (see {@see addService()} for more information on that). + * + * Another way is to check the name of the argument against the names in the Service Locator. With this method + * you can add a variable that will be inserted when a tag's create method is not typehinted and has a matching + * name. + * + * Be aware that there are two reserved names: + * + * - name, representing the name of the tag. + * - body, representing the complete body of the tag. + * + * These parameters are injected at the last moment and will override any existing parameter with those names. + * + * @param string $name + * @param mixed $value + * + * @return void + */ + public function addParameter($name, $value); + + /** + * Registers a service with the Service Locator using the FQCN of the class or the alias, if provided. + * + * When calling a tag's "create" method we always check the signature for dependencies to inject. If a parameter + * has a typehint then the ServiceLocator is queried to see if a Service is registered for that typehint. + * + * Because interfaces are regularly used as type-hints this method provides an alias parameter; if the FQCN of the + * interface is passed as alias then every time that interface is requested the provided service will be returned. + * + * @param object $service + * @param string $alias + * + * @return void + */ + public function addService($service); + + /** + * Factory method responsible for instantiating the correct sub type. + * + * @param string $tagLine The text for this tag, including description. + * @param TypeContext $context + * + * @throws \InvalidArgumentException if an invalid tag line was presented. + * + * @return Tag A new tag object. + */ + public function create($tagLine, TypeContext $context = null); + + /** + * Registers a handler for tags. + * + * If you want to use your own tags then you can use this method to instruct the TagFactory to register the name + * of a tag with the FQCN of a 'Tag Handler'. The Tag handler should implement the {@see Tag} interface (and thus + * the create method). + * + * @param string $tagName Name of tag to register a handler for. When registering a namespaced tag, the full + * name, along with a prefixing slash MUST be provided. + * @param string $handler FQCN of handler. + * + * @throws \InvalidArgumentException if the tag name is not a string + * @throws \InvalidArgumentException if the tag name is namespaced (contains backslashes) but does not start with + * a backslash + * @throws \InvalidArgumentException if the handler is not a string + * @throws \InvalidArgumentException if the handler is not an existing class + * @throws \InvalidArgumentException if the handler does not implement the {@see Tag} interface + * + * @return void + */ + public function registerTagHandler($tagName, $handler); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php new file mode 100644 index 0000000000000000000000000000000000000000..41a27886765672fcfa1b759d44319334fa75a718 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php @@ -0,0 +1,100 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}author tag in a Docblock. + */ +final class Author extends BaseTag implements Factory\StaticMethod +{ + /** @var string register that this is the author tag. */ + protected $name = 'author'; + + /** @var string The name of the author */ + private $authorName = ''; + + /** @var string The email of the author */ + private $authorEmail = ''; + + /** + * Initializes this tag with the author name and e-mail. + * + * @param string $authorName + * @param string $authorEmail + */ + public function __construct($authorName, $authorEmail) + { + Assert::string($authorName); + Assert::string($authorEmail); + if ($authorEmail && !filter_var($authorEmail, FILTER_VALIDATE_EMAIL)) { + throw new \InvalidArgumentException('The author tag does not have a valid e-mail address'); + } + + $this->authorName = $authorName; + $this->authorEmail = $authorEmail; + } + + /** + * Gets the author's name. + * + * @return string The author's name. + */ + public function getAuthorName() + { + return $this->authorName; + } + + /** + * Returns the author's email. + * + * @return string The author's email. + */ + public function getEmail() + { + return $this->authorEmail; + } + + /** + * Returns this tag in string form. + * + * @return string + */ + public function __toString() + { + return $this->authorName . '<' . $this->authorEmail . '>'; + } + + /** + * Attempts to create a new Author object based on †he tag body. + * + * @param string $body + * + * @return static + */ + public static function create($body) + { + Assert::string($body); + + $splitTagContent = preg_match('/^([^\<]*)(?:\<([^\>]*)\>)?$/u', $body, $matches); + if (!$splitTagContent) { + return null; + } + + $authorName = trim($matches[1]); + $email = isset($matches[2]) ? trim($matches[2]) : ''; + + return new static($authorName, $email); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php new file mode 100644 index 0000000000000000000000000000000000000000..14bb71771fdfff33d260e5aa146edc3ee9b8baff --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php @@ -0,0 +1,52 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock; +use phpDocumentor\Reflection\DocBlock\Description; + +/** + * Parses a tag definition for a DocBlock. + */ +abstract class BaseTag implements DocBlock\Tag +{ + /** @var string Name of the tag */ + protected $name = ''; + + /** @var Description|null Description of the tag. */ + protected $description; + + /** + * Gets the name of this tag. + * + * @return string The name of this tag. + */ + public function getName() + { + return $this->name; + } + + public function getDescription() + { + return $this->description; + } + + public function render(Formatter $formatter = null) + { + if ($formatter === null) { + $formatter = new Formatter\PassthroughFormatter(); + } + + return $formatter->format($this); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php new file mode 100644 index 0000000000000000000000000000000000000000..31b4f82c8e75282da5ea1b879eaff43d66edd729 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php @@ -0,0 +1,84 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\FqsenResolver; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a @covers tag in a Docblock. + */ +final class Covers extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'covers'; + + /** @var Fqsen */ + private $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + DescriptionFactory $descriptionFactory = null, + FqsenResolver $resolver = null, + TypeContext $context = null + ) + { + Assert::string($body); + Assert::notEmpty($body); + + $parts = preg_split('/\s+/Su', $body, 2); + + return new static( + $resolver->resolve($parts[0], $context), + $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context) + ); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php new file mode 100644 index 0000000000000000000000000000000000000000..7c1039fa2a07d3f41e35f40b9bdd95d66223df9f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php @@ -0,0 +1,97 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}deprecated tag in a Docblock. + */ +final class Deprecated extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'deprecated'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return new static( + null, + null !== $descriptionFactory ? $descriptionFactory->create($body, $context) : null + ); + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php new file mode 100644 index 0000000000000000000000000000000000000000..571ef8df177750107cf80321aa39b74242da42b3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php @@ -0,0 +1,158 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Tag; + +/** + * Reflection class for a {@}example tag in a Docblock. + */ +final class Example extends BaseTag +{ + /** + * @var string Path to a file to use as an example. May also be an absolute URI. + */ + private $filePath = ''; + + /** + * @var bool Whether the file path component represents an URI. This determines how the file portion + * appears at {@link getContent()}. + */ + private $isURI = false; + + /** + * {@inheritdoc} + */ + public function getContent() + { + if (null === $this->description) { + $filePath = '"' . $this->filePath . '"'; + if ($this->isURI) { + $filePath = $this->isUriRelative($this->filePath) + ? str_replace('%2F', '/', rawurlencode($this->filePath)) + :$this->filePath; + } + + $this->description = $filePath . ' ' . parent::getContent(); + } + + return $this->description; + } + + /** + * {@inheritdoc} + */ + public static function create($body) + { + // File component: File path in quotes or File URI / Source information + if (! preg_match('/^(?:\"([^\"]+)\"|(\S+))(?:\s+(.*))?$/sux', $body, $matches)) { + return null; + } + + $filePath = null; + $fileUri = null; + if ('' !== $matches[1]) { + $filePath = $matches[1]; + } else { + $fileUri = $matches[2]; + } + + $startingLine = 1; + $lineCount = null; + $description = null; + + // Starting line / Number of lines / Description + if (preg_match('/^([1-9]\d*)\s*(?:((?1))\s+)?(.*)$/sux', $matches[3], $matches)) { + $startingLine = (int)$matches[1]; + if (isset($matches[2]) && $matches[2] !== '') { + $lineCount = (int)$matches[2]; + } + $description = $matches[3]; + } + + return new static($filePath, $fileUri, $startingLine, $lineCount, $description); + } + + /** + * Returns the file path. + * + * @return string Path to a file to use as an example. + * May also be an absolute URI. + */ + public function getFilePath() + { + return $this->filePath; + } + + /** + * Sets the file path. + * + * @param string $filePath The new file path to use for the example. + * + * @return $this + */ + public function setFilePath($filePath) + { + $this->isURI = false; + $this->filePath = trim($filePath); + + $this->description = null; + return $this; + } + + /** + * Sets the file path as an URI. + * + * This function is equivalent to {@link setFilePath()}, except that it + * converts an URI to a file path before that. + * + * There is no getFileURI(), as {@link getFilePath()} is compatible. + * + * @param string $uri The new file URI to use as an example. + * + * @return $this + */ + public function setFileURI($uri) + { + $this->isURI = true; + $this->description = null; + + $this->filePath = $this->isUriRelative($uri) + ? rawurldecode(str_replace(array('/', '\\'), '%2F', $uri)) + : $this->filePath = $uri; + + return $this; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->filePath . ($this->description ? ' ' . $this->description->render() : ''); + } + + /** + * Returns true if the provided URI is relative or contains a complete scheme (and thus is absolute). + * + * @param string $uri + * + * @return bool + */ + private function isUriRelative($uri) + { + return false === strpos($uri, ':'); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php new file mode 100644 index 0000000000000000000000000000000000000000..98aea455c1f987f8399f6eb6295aa7c95e5ea83b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Factory; + +interface StaticMethod +{ + public static function create($body); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php new file mode 100644 index 0000000000000000000000000000000000000000..b9ca0b8abe99ccb35e5f84a413bc8c831f52d050 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Factory; + +interface Strategy +{ + public function create($body); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php new file mode 100644 index 0000000000000000000000000000000000000000..64b2c603495343129f8b2edaccfa78b8f4ba942c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php @@ -0,0 +1,27 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Tag; + +interface Formatter +{ + /** + * Formats a tag into a string representation according to a specific format, such as Markdown. + * + * @param Tag $tag + * + * @return string + */ + public function format(Tag $tag); +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php new file mode 100644 index 0000000000000000000000000000000000000000..aa97572ce20b26fd1096bad93587364eead411f9 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +class PassthroughFormatter implements Formatter +{ + /** + * Formats the given tag to return a simple plain text version. + * + * @param Tag $tag + * + * @return string + */ + public function format(Tag $tag) + { + return '@' . $tag->getName() . ' ' . (string)$tag; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php new file mode 100644 index 0000000000000000000000000000000000000000..e4c53e00a69b0056186a7bf03430fa70d2d3e0e3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php @@ -0,0 +1,91 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Parses a tag definition for a DocBlock. + */ +class Generic extends BaseTag implements Factory\StaticMethod +{ + /** + * Parses a tag and populates the member variables. + * + * @param string $name Name of the tag. + * @param Description $description The contents of the given tag. + */ + public function __construct($name, Description $description = null) + { + $this->validateTagName($name); + + $this->name = $name; + $this->description = $description; + } + + /** + * Creates a new tag that represents any unknown tag type. + * + * @param string $body + * @param string $name + * @param DescriptionFactory $descriptionFactory + * @param TypeContext $context + * + * @return static + */ + public static function create( + $body, + $name = '', + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::stringNotEmpty($name); + Assert::notNull($descriptionFactory); + + $description = $descriptionFactory && $body ? $descriptionFactory->create($body, $context) : null; + + return new static($name, $description); + } + + /** + * Returns the tag as a serialized string + * + * @return string + */ + public function __toString() + { + return ($this->description ? $this->description->render() : ''); + } + + /** + * Validates if the tag name matches the expected format, otherwise throws an exception. + * + * @param string $name + * + * @return void + */ + private function validateTagName($name) + { + if (! preg_match('/^' . StandardTagFactory::REGEX_TAGNAME . '$/u', $name)) { + throw new \InvalidArgumentException( + 'The tag name "' . $name . '" is not wellformed. Tags may only consist of letters, underscores, ' + . 'hyphens and backslashes.' + ); + } + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php new file mode 100644 index 0000000000000000000000000000000000000000..9c0e367eb0d35e410276b0230520d86afe37bd58 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php @@ -0,0 +1,77 @@ + + * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a @link tag in a Docblock. + */ +final class Link extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'link'; + + /** @var string */ + private $link = ''; + + /** + * Initializes a link to a URL. + * + * @param string $link + * @param Description $description + */ + public function __construct($link, Description $description = null) + { + Assert::string($link); + + $this->link = $link; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::string($body); + Assert::notNull($descriptionFactory); + + $parts = preg_split('/\s+/Su', $body, 2); + $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null; + + return new static($parts[0], $description); + } + + /** + * Gets the link + * + * @return string + */ + public function getLink() + { + return $this->link; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->link . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php new file mode 100644 index 0000000000000000000000000000000000000000..d600aaaac008a2b43c2683e7aaa8311b9bfc50b3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php @@ -0,0 +1,230 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\Types\Void_; +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}method in a Docblock. + */ +final class Method extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'method'; + + /** @var string */ + private $methodName = ''; + + /** @var string[] */ + private $arguments = []; + + /** @var bool */ + private $isStatic = false; + + /** @var Type */ + private $returnType; + + public function __construct( + $methodName, + array $arguments = [], + Type $returnType = null, + $static = false, + Description $description = null + ) { + Assert::stringNotEmpty($methodName); + Assert::boolean($static); + + if ($returnType === null) { + $returnType = new Void_(); + } + + $this->methodName = $methodName; + $this->arguments = $this->filterArguments($arguments); + $this->returnType = $returnType; + $this->isStatic = $static; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([ $typeResolver, $descriptionFactory ]); + + // 1. none or more whitespace + // 2. optionally the keyword "static" followed by whitespace + // 3. optionally a word with underscores followed by whitespace : as + // type for the return value + // 4. then optionally a word with underscores followed by () and + // whitespace : as method name as used by phpDocumentor + // 5. then a word with underscores, followed by ( and any character + // until a ) and whitespace : as method name with signature + // 6. any remaining text : as description + if (!preg_match( + '/^ + # Static keyword + # Declares a static method ONLY if type is also present + (?: + (static) + \s+ + )? + # Return type + (?: + ( + (?:[\w\|_\\\\]+) + # array notation + (?:\[\])* + )? + \s+ + )? + # Legacy method name (not captured) + (?: + [\w_]+\(\)\s+ + )? + # Method name + ([\w\|_\\\\]+) + # Arguments + (?: + \(([^\)]*)\) + )? + \s* + # Description + (.*) + $/sux', + $body, + $matches + )) { + return null; + } + + list(, $static, $returnType, $methodName, $arguments, $description) = $matches; + + $static = $static === 'static'; + $returnType = $typeResolver->resolve($returnType, $context); + $description = $descriptionFactory->create($description, $context); + + if ('' !== $arguments) { + $arguments = explode(',', $arguments); + foreach($arguments as &$argument) { + $argument = explode(' ', self::stripRestArg(trim($argument)), 2); + if ($argument[0][0] === '$') { + $argumentName = substr($argument[0], 1); + $argumentType = new Void_(); + } else { + $argumentType = $typeResolver->resolve($argument[0], $context); + $argumentName = ''; + if (isset($argument[1])) { + $argument[1] = self::stripRestArg($argument[1]); + $argumentName = substr($argument[1], 1); + } + } + + $argument = [ 'name' => $argumentName, 'type' => $argumentType]; + } + } else { + $arguments = []; + } + + return new static($methodName, $arguments, $returnType, $static, $description); + } + + /** + * Retrieves the method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * @return string[] + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Checks whether the method tag describes a static method or not. + * + * @return bool TRUE if the method declaration is for a static method, FALSE otherwise. + */ + public function isStatic() + { + return $this->isStatic; + } + + /** + * @return Type + */ + public function getReturnType() + { + return $this->returnType; + } + + public function __toString() + { + $arguments = []; + foreach ($this->arguments as $argument) { + $arguments[] = $argument['type'] . ' $' . $argument['name']; + } + + return ($this->isStatic() ? 'static ' : '') + . (string)$this->returnType . ' ' + . $this->methodName + . '(' . implode(', ', $arguments) . ')' + . ($this->description ? ' ' . $this->description->render() : ''); + } + + private function filterArguments($arguments) + { + foreach ($arguments as &$argument) { + if (is_string($argument)) { + $argument = [ 'name' => $argument ]; + } + if (! isset($argument['type'])) { + $argument['type'] = new Void_(); + } + $keys = array_keys($argument); + if ($keys !== [ 'name', 'type' ]) { + throw new \InvalidArgumentException( + 'Arguments can only have the "name" and "type" fields, found: ' . var_export($keys, true) + ); + } + } + + return $arguments; + } + + private static function stripRestArg($argument) + { + if (strpos($argument, '...') === 0) { + $argument = trim(substr($argument, 3)); + } + + return $argument; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php new file mode 100644 index 0000000000000000000000000000000000000000..1a51dc0dd7baf623ac7bb0efce2d51cffbe9e2c4 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php @@ -0,0 +1,141 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for the {@}param tag in a Docblock. + */ +final class Param extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'param'; + + /** @var Type */ + private $type; + + /** @var string */ + private $variableName = ''; + + /** @var bool determines whether this is a variadic argument */ + private $isVariadic = false; + + /** + * @param string $variableName + * @param Type $type + * @param bool $isVariadic + * @param Description $description + */ + public function __construct($variableName, Type $type = null, $isVariadic = false, Description $description = null) + { + Assert::string($variableName); + Assert::boolean($isVariadic); + + $this->variableName = $variableName; + $this->type = $type; + $this->isVariadic = $isVariadic; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + $isVariadic = false; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 3) === '...') { + $isVariadic = true; + $variableName = substr($variableName, 3); + } + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $isVariadic, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns whether this tag is variadic. + * + * @return boolean + */ + public function isVariadic() + { + return $this->isVariadic; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . ($this->isVariadic() ? '...' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php new file mode 100644 index 0000000000000000000000000000000000000000..3c59713339dae8c7033e8568e88ca3ff60bf3022 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property tag in a Docblock. + */ +class Property extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php new file mode 100644 index 0000000000000000000000000000000000000000..bf2b80569c2e4912655eeb4c5f4cf6bb8590362b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property-read tag in a Docblock. + */ +class PropertyRead extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property-read'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php new file mode 100644 index 0000000000000000000000000000000000000000..db37e0fb8c327392ad4b9cc13174a14ce504f770 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}property-write tag in a Docblock. + */ +class PropertyWrite extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'property-write'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php new file mode 100644 index 0000000000000000000000000000000000000000..09a5870e60f437579514c3ba005fc794dc2503e4 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php @@ -0,0 +1,73 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}return tag in a Docblock. + */ +final class Return_ extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'return'; + + /** @var Type */ + private $type; + + public function __construct(Type $type, Description $description = null) + { + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) + { + Assert::string($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + $type = $typeResolver->resolve(isset($parts[0]) ? $parts[0] : '', $context); + $description = $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context); + + return new static($type, $description); + } + + /** + * Returns the type section of the variable. + * + * @return Type + */ + public function getType() + { + return $this->type; + } + + public function __toString() + { + return $this->type . ' ' . $this->description; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php new file mode 100644 index 0000000000000000000000000000000000000000..64ee3d8e4faf641fb2da08cc91133636783d073b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php @@ -0,0 +1,81 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use Webmozart\Assert\Assert; + +/** + * Reflection class for an {@}see tag in a Docblock. + */ +class See extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'see'; + + /** @var Fqsen */ + protected $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + FqsenResolver $resolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$resolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null; + + return new static($resolver->resolve($parts[0], $context), $description); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php new file mode 100644 index 0000000000000000000000000000000000000000..3d002ed318782b63481eefe55bd8c2380c5fb2a8 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php @@ -0,0 +1,94 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}since tag in a Docblock. + */ +final class Since extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'since'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (! preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return null; + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php new file mode 100644 index 0000000000000000000000000000000000000000..b0646b9691cf5263e8022fd69040e46245be7fc1 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php @@ -0,0 +1,96 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}source tag in a Docblock. + */ +final class Source extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'source'; + + /** @var int The starting line, relative to the structural element's location. */ + private $startingLine = 1; + + /** @var int|null The number of lines, relative to the starting line. NULL means "to the end". */ + private $lineCount = null; + + public function __construct($startingLine, $lineCount = null, Description $description = null) + { + Assert::integerish($startingLine); + Assert::nullOrIntegerish($lineCount); + + $this->startingLine = (int)$startingLine; + $this->lineCount = $lineCount !== null ? (int)$lineCount : null; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::stringNotEmpty($body); + Assert::notNull($descriptionFactory); + + $startingLine = 1; + $lineCount = null; + $description = null; + + // Starting line / Number of lines / Description + if (preg_match('/^([1-9]\d*)\s*(?:((?1))\s+)?(.*)$/sux', $body, $matches)) { + $startingLine = (int)$matches[1]; + if (isset($matches[2]) && $matches[2] !== '') { + $lineCount = (int)$matches[2]; + } + $description = $matches[3]; + } + + return new static($startingLine, $lineCount, $descriptionFactory->create($description, $context)); + } + + /** + * Gets the starting line. + * + * @return int The starting line, relative to the structural element's + * location. + */ + public function getStartingLine() + { + return $this->startingLine; + } + + /** + * Returns the number of lines. + * + * @return int|null The number of lines, relative to the starting line. NULL + * means "to the end". + */ + public function getLineCount() + { + return $this->lineCount; + } + + public function __toString() + { + return $this->startingLine + . ($this->lineCount !== null ? ' ' . $this->lineCount : '') + . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php new file mode 100644 index 0000000000000000000000000000000000000000..349e773bbe26515b37d14fdf75e10d1411420cfc --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php @@ -0,0 +1,72 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}throws tag in a Docblock. + */ +final class Throws extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'throws'; + + /** @var Type */ + private $type; + + public function __construct(Type $type, Description $description = null) + { + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + $type = $typeResolver->resolve(isset($parts[0]) ? $parts[0] : '', $context); + $description = $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context); + + return new static($type, $description); + } + + /** + * Returns the type section of the variable. + * + * @return Type + */ + public function getType() + { + return $this->type; + } + + public function __toString() + { + return $this->type . ' ' . $this->description; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php new file mode 100644 index 0000000000000000000000000000000000000000..00dc3e3bc864c5f2162fa13b9dd8c8b55089b596 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php @@ -0,0 +1,83 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}uses tag in a Docblock. + */ +final class Uses extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'uses'; + + /** @var Fqsen */ + protected $refers = null; + + /** + * Initializes this tag. + * + * @param Fqsen $refers + * @param Description $description + */ + public function __construct(Fqsen $refers, Description $description = null) + { + $this->refers = $refers; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + FqsenResolver $resolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::string($body); + Assert::allNotNull([$resolver, $descriptionFactory]); + + $parts = preg_split('/\s+/Su', $body, 2); + + return new static( + $resolver->resolve($parts[0], $context), + $descriptionFactory->create(isset($parts[1]) ? $parts[1] : '', $context) + ); + } + + /** + * Returns the structural element this tag refers to. + * + * @return Fqsen + */ + public function getReference() + { + return $this->refers; + } + + /** + * Returns a string representation of this tag. + * + * @return string + */ + public function __toString() + { + return $this->refers . ' ' . $this->description->render(); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php new file mode 100644 index 0000000000000000000000000000000000000000..e23c694b17beaaa842e4828c524370d24a173660 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php @@ -0,0 +1,118 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Type; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context as TypeContext; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}var tag in a Docblock. + */ +class Var_ extends BaseTag implements Factory\StaticMethod +{ + /** @var string */ + protected $name = 'var'; + + /** @var Type */ + private $type; + + /** @var string */ + protected $variableName = ''; + + /** + * @param string $variableName + * @param Type $type + * @param Description $description + */ + public function __construct($variableName, Type $type = null, Description $description = null) + { + Assert::string($variableName); + + $this->variableName = $variableName; + $this->type = $type; + $this->description = $description; + } + + /** + * {@inheritdoc} + */ + public static function create( + $body, + TypeResolver $typeResolver = null, + DescriptionFactory $descriptionFactory = null, + TypeContext $context = null + ) { + Assert::stringNotEmpty($body); + Assert::allNotNull([$typeResolver, $descriptionFactory]); + + $parts = preg_split('/(\s+)/Su', $body, 3, PREG_SPLIT_DELIM_CAPTURE); + $type = null; + $variableName = ''; + + // if the first item that is encountered is not a variable; it is a type + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] !== '$')) { + $type = $typeResolver->resolve(array_shift($parts), $context); + array_shift($parts); + } + + // if the next item starts with a $ or ...$ it must be the variable name + if (isset($parts[0]) && (strlen($parts[0]) > 0) && ($parts[0][0] == '$')) { + $variableName = array_shift($parts); + array_shift($parts); + + if (substr($variableName, 0, 1) === '$') { + $variableName = substr($variableName, 1); + } + } + + $description = $descriptionFactory->create(implode('', $parts), $context); + + return new static($variableName, $type, $description); + } + + /** + * Returns the variable's name. + * + * @return string + */ + public function getVariableName() + { + return $this->variableName; + } + + /** + * Returns the variable's type or null if unknown. + * + * @return Type|null + */ + public function getType() + { + return $this->type; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return ($this->type ? $this->type . ' ' : '') + . '$' . $this->variableName + . ($this->description ? ' ' . $this->description : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php new file mode 100644 index 0000000000000000000000000000000000000000..3e0e5bef742d561912de38d22b7640e85938c224 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php @@ -0,0 +1,94 @@ + + * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com) + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use phpDocumentor\Reflection\Types\Context as TypeContext; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use Webmozart\Assert\Assert; + +/** + * Reflection class for a {@}version tag in a Docblock. + */ +final class Version extends BaseTag implements Factory\StaticMethod +{ + protected $name = 'version'; + + /** + * PCRE regular expression matching a version vector. + * Assumes the "x" modifier. + */ + const REGEX_VECTOR = '(?: + # Normal release vectors. + \d\S* + | + # VCS version vectors. Per PHPCS, they are expected to + # follow the form of the VCS name, followed by ":", followed + # by the version vector itself. + # By convention, popular VCSes like CVS, SVN and GIT use "$" + # around the actual version vector. + [^\s\:]+\:\s*\$[^\$]+\$ + )'; + + /** @var string The version vector. */ + private $version = ''; + + public function __construct($version = null, Description $description = null) + { + Assert::nullOrStringNotEmpty($version); + + $this->version = $version; + $this->description = $description; + } + + /** + * @return static + */ + public static function create($body, DescriptionFactory $descriptionFactory = null, TypeContext $context = null) + { + Assert::nullOrString($body); + if (empty($body)) { + return new static(); + } + + $matches = []; + if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) { + return null; + } + + return new static( + $matches[1], + $descriptionFactory->create(isset($matches[2]) ? $matches[2] : '', $context) + ); + } + + /** + * Gets the version section of the tag. + * + * @return string + */ + public function getVersion() + { + return $this->version; + } + + /** + * Returns a string representation for this tag. + * + * @return string + */ + public function __toString() + { + return $this->version . ($this->description ? ' ' . $this->description->render() : ''); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..9ec2455d2f7e5aa0507a94cebfe0d0917d4dd65b --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php @@ -0,0 +1,277 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\TagFactory; +use Webmozart\Assert\Assert; + +final class DocBlockFactory implements DocBlockFactoryInterface +{ + /** @var DocBlock\DescriptionFactory */ + private $descriptionFactory; + + /** @var DocBlock\TagFactory */ + private $tagFactory; + + /** + * Initializes this factory with the required subcontractors. + * + * @param DescriptionFactory $descriptionFactory + * @param TagFactory $tagFactory + */ + public function __construct(DescriptionFactory $descriptionFactory, TagFactory $tagFactory) + { + $this->descriptionFactory = $descriptionFactory; + $this->tagFactory = $tagFactory; + } + + /** + * Factory method for easy instantiation. + * + * @param string[] $additionalTags + * + * @return DocBlockFactory + */ + public static function createInstance(array $additionalTags = []) + { + $fqsenResolver = new FqsenResolver(); + $tagFactory = new StandardTagFactory($fqsenResolver); + $descriptionFactory = new DescriptionFactory($tagFactory); + + $tagFactory->addService($descriptionFactory); + $tagFactory->addService(new TypeResolver($fqsenResolver)); + + $docBlockFactory = new self($descriptionFactory, $tagFactory); + foreach ($additionalTags as $tagName => $tagHandler) { + $docBlockFactory->registerTagHandler($tagName, $tagHandler); + } + + return $docBlockFactory; + } + + /** + * @param object|string $docblock A string containing the DocBlock to parse or an object supporting the + * getDocComment method (such as a ReflectionClass object). + * @param Types\Context $context + * @param Location $location + * + * @return DocBlock + */ + public function create($docblock, Types\Context $context = null, Location $location = null) + { + if (is_object($docblock)) { + if (!method_exists($docblock, 'getDocComment')) { + $exceptionMessage = 'Invalid object passed; the given object must support the getDocComment method'; + throw new \InvalidArgumentException($exceptionMessage); + } + + $docblock = $docblock->getDocComment(); + } + + Assert::stringNotEmpty($docblock); + + if ($context === null) { + $context = new Types\Context(''); + } + + $parts = $this->splitDocBlock($this->stripDocComment($docblock)); + list($templateMarker, $summary, $description, $tags) = $parts; + + return new DocBlock( + $summary, + $description ? $this->descriptionFactory->create($description, $context) : null, + array_filter($this->parseTagBlock($tags, $context), function($tag) { + return $tag instanceof Tag; + }), + $context, + $location, + $templateMarker === '#@+', + $templateMarker === '#@-' + ); + } + + public function registerTagHandler($tagName, $handler) + { + $this->tagFactory->registerTagHandler($tagName, $handler); + } + + /** + * Strips the asterisks from the DocBlock comment. + * + * @param string $comment String containing the comment text. + * + * @return string + */ + private function stripDocComment($comment) + { + $comment = trim(preg_replace('#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]{0,1}(.*)?#u', '$1', $comment)); + + // reg ex above is not able to remove */ from a single line docblock + if (substr($comment, -2) == '*/') { + $comment = trim(substr($comment, 0, -2)); + } + + return str_replace(array("\r\n", "\r"), "\n", $comment); + } + + /** + * Splits the DocBlock into a template marker, summary, description and block of tags. + * + * @param string $comment Comment to split into the sub-parts. + * + * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split. + * @author Mike van Riel for extending the regex with template marker support. + * + * @return string[] containing the template marker (if any), summary, description and a string containing the tags. + */ + private function splitDocBlock($comment) + { + // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This + // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the + // performance impact of running a regular expression + if (strpos($comment, '@') === 0) { + return array('', '', '', $comment); + } + + // clears all extra horizontal whitespace from the line endings to prevent parsing issues + $comment = preg_replace('/\h*$/Sum', '', $comment); + + /* + * Splits the docblock into a template marker, summary, description and tags section. + * + * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may + * occur after it and will be stripped). + * - The short description is started from the first character until a dot is encountered followed by a + * newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing + * errors). This is optional. + * - The long description, any character until a new line is encountered followed by an @ and word + * characters (a tag). This is optional. + * - Tags; the remaining characters + * + * Big thanks to RichardJ for contributing this Regular Expression + */ + preg_match( + '/ + \A + # 1. Extract the template marker + (?:(\#\@\+|\#\@\-)\n?)? + + # 2. Extract the summary + (?: + (?! @\pL ) # The summary may not start with an @ + ( + [^\n.]+ + (?: + (?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines + [\n.] (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line + [^\n.]+ # Include anything else + )* + \.? + )? + ) + + # 3. Extract the description + (?: + \s* # Some form of whitespace _must_ precede a description because a summary must be there + (?! @\pL ) # The description may not start with an @ + ( + [^\n]+ + (?: \n+ + (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line + [^\n]+ # Include anything else + )* + ) + )? + + # 4. Extract the tags (anything that follows) + (\s+ [\s\S]*)? # everything that follows + /ux', + $comment, + $matches + ); + array_shift($matches); + + while (count($matches) < 4) { + $matches[] = ''; + } + + return $matches; + } + + /** + * Creates the tag objects. + * + * @param string $tags Tag block to parse. + * @param Types\Context $context Context of the parsed Tag + * + * @return DocBlock\Tag[] + */ + private function parseTagBlock($tags, Types\Context $context) + { + $tags = $this->filterTagBlock($tags); + if (!$tags) { + return []; + } + + $result = $this->splitTagBlockIntoTagLines($tags); + foreach ($result as $key => $tagLine) { + $result[$key] = $this->tagFactory->create(trim($tagLine), $context); + } + + return $result; + } + + /** + * @param string $tags + * + * @return string[] + */ + private function splitTagBlockIntoTagLines($tags) + { + $result = array(); + foreach (explode("\n", $tags) as $tag_line) { + if (isset($tag_line[0]) && ($tag_line[0] === '@')) { + $result[] = $tag_line; + } else { + $result[count($result) - 1] .= "\n" . $tag_line; + } + } + + return $result; + } + + /** + * @param $tags + * @return string + */ + private function filterTagBlock($tags) + { + $tags = trim($tags); + if (!$tags) { + return null; + } + + if ('@' !== $tags[0]) { + // @codeCoverageIgnoreStart + // Can't simulate this; this only happens if there is an error with the parsing of the DocBlock that + // we didn't foresee. + throw new \LogicException('A tag block started with text instead of an at-sign(@): ' . $tags); + // @codeCoverageIgnoreEnd + } + + return $tags; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..b35334295fab0ea0a9a51568897310e806ece954 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php @@ -0,0 +1,23 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class InterpretingDocBlocksTest extends \PHPUnit_Framework_TestCase +{ + public function testInterpretingASimpleDocBlock() + { + /** + * @var DocBlock $docblock + * @var string $summary + * @var Description $description + */ + include(__DIR__ . '/../../examples/01-interpreting-a-simple-docblock.php'); + + $descriptionText = <<assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is an example of a summary.', $summary); + $this->assertInstanceOf(Description::class, $description); + $this->assertSame($descriptionText, $description->render()); + $this->assertEmpty($docblock->getTags()); + } + + public function testInterpretingTags() + { + /** + * @var DocBlock $docblock + * @var boolean $hasSeeTag + * @var Tag[] $tags + * @var See[] $seeTags + */ + include(__DIR__ . '/../../examples/02-interpreting-tags.php'); + + $this->assertTrue($hasSeeTag); + $this->assertCount(1, $tags); + $this->assertCount(1, $seeTags); + + $this->assertInstanceOf(See::class, $tags[0]); + $this->assertInstanceOf(See::class, $seeTags[0]); + + $seeTag = $seeTags[0]; + $this->assertSame('\\' . StandardTagFactory::class, (string)$seeTag->getReference()); + $this->assertSame('', (string)$seeTag->getDescription()); + } + + public function testDescriptionsCanEscapeAtSignsAndClosingBraces() + { + /** + * @var string $docComment + * @var DocBlock $docblock + * @var Description $description + * @var string $receivedDocComment + * @var string $foundDescription + */ + + include(__DIR__ . '/../../examples/playing-with-descriptions/02-escaping.php'); + $this->assertSame(<<<'DESCRIPTION' +You can escape the @-sign by surrounding it with braces, for example: @. And escape a closing brace within an +inline tag by adding an opening brace in front of it like this: }. + +Here are example texts where you can see how they could be used in a real life situation: + + This is a text with an {@internal inline tag where a closing brace (}) is shown}. + Or an {@internal inline tag with a literal {@link} in it}. + +Do note that an {@internal inline tag that has an opening brace ({) does not break out}. +DESCRIPTION + , + $foundDescription + ) + ; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php b/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php new file mode 100644 index 0000000000000000000000000000000000000000..92ac22ede39fe084528f1d4ba630aded1a736b03 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/integration/ReconstitutingADocBlockTest.php @@ -0,0 +1,35 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class ReconstitutingADocBlockTest extends \PHPUnit_Framework_TestCase +{ + public function testReconstituteADocBlock() + { + /** + * @var string $docComment + * @var string $reconstitutedDocComment + */ + include(__DIR__ . '/../../examples/03-reconstituting-a-docblock.php'); + + $this->assertSame($docComment, $reconstitutedDocComment); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php b/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..984811b1c2ddb9f44945d9b193fcb19c210f98e5 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/integration/UsingTagsTest.php @@ -0,0 +1,39 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\StandardTagFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\Tags\See; + +/** + * @coversNothing + */ +class UsingTagsTest extends \PHPUnit_Framework_TestCase +{ + public function testAddingYourOwnTagUsingAStaticMethodAsFactory() + { + /** + * @var object[] $customTagObjects + * @var string $docComment + * @var string $reconstitutedDocComment + */ + include(__DIR__ . '/../../examples/04-adding-your-own-tag.php'); + + $this->assertInstanceOf(\MyTag::class, $customTagObjects[0]); + $this->assertSame('my-tag', $customTagObjects[0]->getName()); + $this->assertSame('I have a description', (string)$customTagObjects[0]->getDescription()); + $this->assertSame($docComment, $reconstitutedDocComment); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..d3043f9aa768af86ae44ad65f341946b013b67e9 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionFactoryTest.php @@ -0,0 +1,174 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Link; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @covers :: + */ +class DescriptionFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideSimpleExampleDescriptions + */ + public function testDescriptionCanParseASimpleString($contents) + { + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->never(); + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, new Context('')); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideEscapeSequences + */ + public function testEscapeSequences($contents, $expected) + { + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->never(); + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, new Context('')); + + $this->assertSame($expected, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Link + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testDescriptionCanParseAStringWithInlineTag() + { + $contents = 'This is text for a {@link http://phpdoc.org/ description} that uses an inline tag.'; + $context = new Context(''); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create') + ->once() + ->with('@link http://phpdoc.org/ description', $context) + ->andReturn(new Link('http://phpdoc.org/', new Description('description'))) + ; + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, $context); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Link + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testDescriptionCanParseAStringStartingWithInlineTag() + { + $contents = '{@link http://phpdoc.org/ This} is text for a description that starts with an inline tag.'; + $context = new Context(''); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create') + ->once() + ->with('@link http://phpdoc.org/ This', $context) + ->andReturn(new Link('http://phpdoc.org/', new Description('This'))) + ; + + $factory = new DescriptionFactory($tagFactory); + $description = $factory->create($contents, $context); + + $this->assertSame($contents, $description->render()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testIfSuperfluousStartingSpacesAreRemoved() + { + $factory = new DescriptionFactory(m::mock(TagFactory::class)); + $descriptionText = <<create($descriptionText, new Context('')); + + $this->assertSame($expectedDescription, $description->render()); + } + + /** + * Provides a series of example strings that the parser should correctly interpret and return. + * + * @return string[][] + */ + public function provideSimpleExampleDescriptions() + { + return [ + ['This is text for a description.'], + ['This is text for a description containing { that is literal.'], + ['This is text for a description containing } that is literal.'], + ['This is text for a description with {just a text} that is not a tag.'], + ]; + } + + public function provideEscapeSequences() + { + return [ + ['This is text for a description with a {@}.', 'This is text for a description with a @.'], + ['This is text for a description with a {}.', 'This is text for a description with a }.'], + ]; + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php new file mode 100644 index 0000000000000000000000000000000000000000..b5917a9e56db299268a49d5c37ac1856070d3413 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/DescriptionTest.php @@ -0,0 +1,75 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Description + */ +class DescriptionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::render + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ + public function testDescriptionCanRenderUsingABodyWithPlaceholdersAndTags() + { + $body = 'This is a %1$s body.'; + $expected = 'This is a {@internal significant } body.'; + $tags = [new Generic('internal', new Description('significant '))]; + + $fixture = new Description($body, $tags); + + // without formatter (thus the PassthroughFormatter by default) + $this->assertSame($expected, $fixture->render()); + + // with a custom formatter + $formatter = m::mock(PassthroughFormatter::class); + $formatter->shouldReceive('format')->with($tags[0])->andReturn('@internal significant '); + $this->assertSame($expected, $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::render + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ + public function testDescriptionCanBeCastToString() + { + $body = 'This is a %1$s body.'; + $expected = 'This is a {@internal significant } body.'; + $tags = [new Generic('internal', new Description('significant '))]; + + $fixture = new Description($body, $tags); + + $this->assertSame($expected, (string)$fixture); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testBodyTemplateMustBeAString() + { + new Description([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php new file mode 100644 index 0000000000000000000000000000000000000000..cb2b400f4da2ba4c95266e615ea5af428f3ffdf3 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/SerializerTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Serializer + * @covers :: + */ +class SerializerTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testReconstructsADocCommentFromADocBlock() + { + $expected = <<<'DOCCOMMENT' +/** + * This is a summary + * + * This is a description + * + * @unknown-tag Test description for the unknown tag + */ +DOCCOMMENT; + + $fixture = new Serializer(); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testAddPrefixToDocBlock() + { + $expected = <<<'DOCCOMMENT' +aa/** +aa * This is a summary +aa * +aa * This is a description +aa * +aa * @unknown-tag Test description for the unknown tag +aa */ +DOCCOMMENT; + + $fixture = new Serializer(2, 'a'); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testAddPrefixToDocBlockExceptFirstLine() + { + $expected = <<<'DOCCOMMENT' +/** +aa * This is a summary +aa * +aa * This is a description +aa * +aa * @unknown-tag Test description for the unknown tag +aa */ +DOCCOMMENT; + + $fixture = new Serializer(2, 'a', false); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @covers ::getDocComment + * @uses phpDocumentor\Reflection\DocBlock\Description + * @uses phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses phpDocumentor\Reflection\DocBlock + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testWordwrapsAroundTheGivenAmountOfCharacters() + { + $expected = <<<'DOCCOMMENT' +/** + * This is a + * summary + * + * This is a + * description + * + * @unknown-tag + * Test + * description + * for the + * unknown tag + */ +DOCCOMMENT; + + $fixture = new Serializer(0, '', true, 15); + + $docBlock = new DocBlock( + 'This is a summary', + new Description('This is a description'), + [ + new DocBlock\Tags\Generic('unknown-tag', new Description('Test description for the unknown tag')) + ] + ); + + $this->assertSame($expected, $fixture->getDocComment($docBlock)); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentIsNotAnInteger() + { + new Serializer([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentStringIsNotAString() + { + new Serializer(0, []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfIndentFirstLineIsNotABoolean() + { + new Serializer(0, '', []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfLineLengthIsNotNullNorAnInteger() + { + new Serializer(0, '', false, []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0247da046d0348427cb7cb0c55c17bd4b67ecd99 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/StandardTagFactoryTest.php @@ -0,0 +1,361 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Tags\Author; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter; +use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; +use phpDocumentor\Reflection\DocBlock\Tags\Return_; +use phpDocumentor\Reflection\DocBlock\Tags\See; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlock\StandardTagFactory + * @covers :: + */ +class StandardTagFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Generic + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreatingAGenericTag() + { + $expectedTagName = 'unknown-tag'; + $expectedDescriptionText = 'This is a description'; + $expectedDescription = new Description($expectedDescriptionText); + $context = new Context(''); + + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory + ->shouldReceive('create') + ->once() + ->with($expectedDescriptionText, $context) + ->andReturn($expectedDescription) + ; + + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + + /** @var Generic $tag */ + $tag = $tagFactory->create('@' . $expectedTagName . ' This is a description', $context); + + $this->assertInstanceOf(Generic::class, $tag); + $this->assertSame($expectedTagName, $tag->getName()); + $this->assertSame($expectedDescription, $tag->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testCreatingASpecificTag() + { + $context = new Context(''); + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + + /** @var Author $tag */ + $tag = $tagFactory->create('@author Mike van Riel ', $context); + + $this->assertInstanceOf(Author::class, $tag); + $this->assertSame('author', $tag->getName()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\See + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testAnEmptyContextIsCreatedIfNoneIsProvided() + { + $fqsen = '\Tag'; + $resolver = m::mock(FqsenResolver::class) + ->shouldReceive('resolve') + ->with('Tag', m::type(Context::class)) + ->andReturn(new Fqsen($fqsen)) + ->getMock() + ; + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldIgnoreMissing(); + + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + + /** @var See $tag */ + $tag = $tagFactory->create('@see Tag'); + + $this->assertInstanceOf(See::class, $tag); + $this->assertSame($fqsen, (string)$tag->getReference()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + * @uses phpDocumentor\Reflection\DocBlock\Tags\BaseTag + */ + public function testPassingYourOwnSetOfTagHandlers() + { + $context = new Context(''); + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class), ['user' => Author::class]); + + /** @var Author $tag */ + $tag = $tagFactory->create('@user Mike van Riel ', $context); + + $this->assertInstanceOf(Author::class, $tag); + $this->assertSame('author', $tag->getName()); + } + + /** + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The tag "@user/myuser" does not seem to be wellformed, please check it for errors + */ + public function testExceptionIsThrownIfProvidedTagIsNotWellformed() + { + $this->markTestIncomplete( + 'For some reason this test fails; once I have access to a RegEx analyzer I will have to test the regex' + ) + ; + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->create('@user[myuser'); + } + + /** + * @covers ::__construct + * @covers ::addParameter + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + */ + public function testAddParameterToServiceLocator() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addParameter('myParam', 'myValue'); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, 'myParam' => 'myValue'], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + */ + public function testAddServiceToServiceLocator() + { + $service = new PassthroughFormatter(); + + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($service); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, PassthroughFormatter::class => $service], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + */ + public function testInjectConcreteServiceForInterfaceToServiceLocator() + { + $interfaceName = Formatter::class; + $service = new PassthroughFormatter(); + + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + $tagFactory->addService($service, $interfaceName); + + $this->assertAttributeSame( + [FqsenResolver::class => $resolver, $interfaceName => $service], + 'serviceLocator', + $tagFactory + ) + ; + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::create + * @uses phpDocumentor\Reflection\DocBlock\Tags\Author + */ + public function testRegisteringAHandlerForANewTag() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', Author::class); + + // Assert by trying to create one + $tag = $tagFactory->create('@my-tag Mike van Riel '); + $this->assertInstanceOf(Author::class, $tag); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsNotAString() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler([], Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsEmpty() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('', Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedTagNameIsNamespaceButNotFullyQualified() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('Name\Spaced\Tag', Author::class); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsNotAString() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', []); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsEmpty() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', ''); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerIsNotAnExistingClassName() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', 'IDoNotExist'); + } + + /** + * @covers ::registerTagHandler + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @expectedException \InvalidArgumentException + */ + public function testHandlerRegistrationFailsIfProvidedHandlerDoesNotImplementTheTagInterface() + { + $resolver = m::mock(FqsenResolver::class); + $tagFactory = new StandardTagFactory($resolver); + + $tagFactory->registerTagHandler('my-tag', 'stdClass'); + } + + /** + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::__construct + * @uses phpDocumentor\Reflection\DocBlock\StandardTagFactory::addService + * @uses phpDocumentor\Reflection\Docblock\Description + * @uses phpDocumentor\Reflection\Docblock\Tags\Return_ + * @uses phpDocumentor\Reflection\Docblock\Tags\BaseTag + */ + public function testReturntagIsMappedCorrectly() + { + $context = new Context(''); + + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory + ->shouldReceive('create') + ->once() + ->with('', $context) + ->andReturn(new Description('')) + ; + + $typeResolver = new TypeResolver(); + + $tagFactory = new StandardTagFactory(m::mock(FqsenResolver::class)); + $tagFactory->addService($descriptionFactory, DescriptionFactory::class); + $tagFactory->addService($typeResolver, TypeResolver::class); + + + /** @var Return_ $tag */ + $tag = $tagFactory->create('@return mixed', $context); + + $this->assertInstanceOf(Return_::class, $tag); + $this->assertSame('return', $tag->getName()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a54954f8d3fa940f1d9fa4c2c6c8c1fe446e89ef --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/AuthorTest.php @@ -0,0 +1,148 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Author + * @covers :: + */ +class AuthorTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('author', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('@author Mike van Riel', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getAuthorName + */ + public function testHasTheAuthorName() + { + $expected = 'Mike van Riel'; + + $fixture = new Author($expected, 'mike@phpdoc.org'); + + $this->assertSame($expected, $fixture->getAuthorName()); + } + + /** + * @covers ::__construct + * @covers ::getAuthorName + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfAuthorNameIsNotAString() + { + new Author([], 'mike@phpdoc.org'); + } + + /** + * @covers ::__construct + * @covers ::getEmail + */ + public function testHasTheAuthorMailAddress() + { + $expected = 'mike@phpdoc.org'; + + $fixture = new Author('Mike van Riel', $expected); + + $this->assertSame($expected, $fixture->getEmail()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfEmailIsNotAString() + { + new Author('Mike van Riel', []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testInitializationFailsIfEmailIsNotValid() + { + new Author('Mike van Riel', 'mike'); + } + + /** + * @covers ::__construct + * @covers ::__toString + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Author('Mike van Riel', 'mike@phpdoc.org'); + + $this->assertSame('Mike van Riel', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author:: + */ + public function testFactoryMethod() + { + $fixture = Author::create('Mike van Riel '); + + $this->assertSame('Mike van Riel', (string)$fixture); + $this->assertSame('Mike van Riel', $fixture->getAuthorName()); + $this->assertSame('mike@phpdoc.org', $fixture->getEmail()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Author:: + */ + public function testFactoryMethodReturnsNullIfItCouldNotReadBody() + { + $this->assertNull(Author::create('dfgr<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a2b5e4b3643e17df913f42e3d9e19fee40685b1f --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/CoversTest.php @@ -0,0 +1,155 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Covers + * @covers :: + */ +class CoversTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('covers', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@covers \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new Covers($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Covers(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Covers(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Covers:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description); + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = Covers::create('DateTime My Description', $descriptionFactory, $resolver, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Covers::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Covers::create('')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8be9ad7e0c86954f3e02d8718b981a6763f57c99 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/DeprecatedTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Deprecated + * @covers :: + */ +class DeprecatedTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('deprecated', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('@deprecated 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Deprecated($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Deprecated('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Deprecated('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Deprecated::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Deprecated:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyDeprecatedTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Deprecated::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Deprecated::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertEquals(new Deprecated(), Deprecated::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php new file mode 100644 index 0000000000000000000000000000000000000000..045a197f64fc484e43c5370bfa9ca765c8f6750e --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/Formatter/PassthroughFormatterTest.php @@ -0,0 +1,41 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\Tags\Generic; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + */ +class PassthroughFormatterTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::format + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic + */ + public function testFormatterCallsToStringAndReturnsAStandardRepresentation() + { + $expected = '@unknown-tag This is a description'; + + $fixture = new PassthroughFormatter(); + + $this->assertSame( + $expected, + $fixture->format(new Generic('unknown-tag', new Description('This is a description'))) + ); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php new file mode 100644 index 0000000000000000000000000000000000000000..02fa53008000316d6f25b1eaee762c4e8acf1b88 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/GenericTest.php @@ -0,0 +1,146 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @generic http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Generic + * @covers :: + */ +class GenericTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('generic', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('@generic Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Generic('generic', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Generic('generic', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Generic('generic', new Description('Description')); + + $this->assertSame('Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Generic:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $generics = 'generic'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Generic::create('My Description', 'generic', $descriptionFactory, $context); + + $this->assertSame('My Description', (string)$fixture); + $this->assertSame($generics, $fixture->getName()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameIsNotString() + { + Generic::create('', []); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameIsNotEmpty() + { + Generic::create('', ''); + } + + /** + * @covers ::create + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfNameContainsIllegalCharacters() + { + Generic::create('', 'name/myname'); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php new file mode 100644 index 0000000000000000000000000000000000000000..9940aec70a3e0a7e02b9f1314fd32f5e05b4366c --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/LinkTest.php @@ -0,0 +1,158 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Link + * @covers :: + */ +class LinkTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('link', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('@link http://this.is.my/link Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getLink + */ + public function testHasLinkUrl() + { + $expected = 'http://this.is.my/link'; + + $fixture = new Link($expected); + + $this->assertSame($expected, $fixture->getLink()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Link('http://this.is.my/link', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Link('http://this.is.my/link', new Description('Description')); + + $this->assertSame('http://this.is.my/link Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $links = 'http://this.is.my/link'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Link::create('http://this.is.my/link My Description', $descriptionFactory, $context); + + $this->assertSame('http://this.is.my/link My Description', (string)$fixture); + $this->assertSame($links, $fixture->getLink()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Link:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyLinkTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Link::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame('', $fixture->getLink()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Link::create([])); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5d6e981e562585813abd694e6134631b2c253bc9 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/MethodTest.php @@ -0,0 +1,437 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Integer; +use phpDocumentor\Reflection\Types\Object_; +use phpDocumentor\Reflection\Types\String_; +use phpDocumentor\Reflection\Types\Void_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Method + * @covers :: + */ +class MethodTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Method('myMethod'); + + $this->assertSame('method', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::isStatic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $arguments = [ + ['name' => 'argument1', 'type' => new String_()], + ['name' => 'argument2', 'type' => new Object_()] + ]; + $fixture = new Method('myMethod', $arguments, new Void_(), true, new Description('My Description')); + + $this->assertSame( + '@method static void myMethod(string $argument1, object $argument2) My Description', + $fixture->render() + ); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Method('myMethod'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getMethodName + */ + public function testHasMethodName() + { + $expected = 'myMethod'; + + $fixture = new Method($expected); + + $this->assertSame($expected, $fixture->getMethodName()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testHasArguments() + { + $arguments = [ + [ 'name' => 'argument1', 'type' => new String_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertSame($arguments, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testArgumentsMayBePassedAsString() + { + $arguments = ['argument1']; + $expected = [ + [ 'name' => $arguments[0], 'type' => new Void_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getArguments + */ + public function testArgumentTypeCanBeInferredAsVoid() + { + $arguments = [ [ 'name' => 'argument1' ] ]; + $expected = [ + [ 'name' => $arguments[0]['name'], 'type' => new Void_() ] + ]; + + $fixture = new Method('myMethod', $arguments); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::create + */ + public function testRestArgumentIsParsedAsRegularArg() + { + $expected = [ + [ 'name' => 'arg1', 'type' => new Void_() ], + [ 'name' => 'rest', 'type' => new Void_() ], + [ 'name' => 'rest2', 'type' => new Array_() ], + ]; + + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + $description = new Description(''); + $descriptionFactory->shouldReceive('create')->with('', $context)->andReturn($description); + + $fixture = Method::create( + 'void myMethod($arg1, ...$rest, array ... $rest2)', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertEquals($expected, $fixture->getArguments()); + } + + /** + * @covers ::__construct + * @covers ::getReturnType + */ + public function testHasReturnType() + { + $expected = new String_(); + + $fixture = new Method('myMethod', [], $expected); + + $this->assertSame($expected, $fixture->getReturnType()); + } + + /** + * @covers ::__construct + * @covers ::getReturnType + */ + public function testReturnTypeCanBeInferredAsVoid() + { + $fixture = new Method('myMethod', []); + + $this->assertEquals(new Void_(), $fixture->getReturnType()); + } + + /** + * @covers ::__construct + * @covers ::isStatic + */ + public function testMethodCanBeStatic() + { + $expected = false; + $fixture = new Method('myMethod', [], null, $expected); + $this->assertSame($expected, $fixture->isStatic()); + + $expected = true; + $fixture = new Method('myMethod', [], null, $expected); + $this->assertSame($expected, $fixture->isStatic()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Method('myMethod', [], null, false, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method::isStatic + */ + public function testStringRepresentationIsReturned() + { + $arguments = [ + ['name' => 'argument1', 'type' => new String_()], + ['name' => 'argument2', 'type' => new Object_()] + ]; + $fixture = new Method('myMethod', $arguments, new Void_(), true, new Description('My Description')); + + $this->assertSame( + 'static void myMethod(string $argument1, object $argument2) My Description', + (string)$fixture + ); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + $expectedArguments = [ + [ 'name' => 'argument1', 'type' => new String_() ], + [ 'name' => 'argument2', 'type' => new Void_() ] + ]; + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Method::create( + 'static void myMethod(string $argument1, $argument2) My Description', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertSame('static void myMethod(string $argument1, void $argument2) My Description', (string)$fixture); + $this->assertSame('myMethod', $fixture->getMethodName()); + $this->assertEquals($expectedArguments, $fixture->getArguments()); + $this->assertInstanceOf(Void_::class, $fixture->getReturnType()); + $this->assertSame($description, $fixture->getDescription()); + } + + public function collectionReturnTypesProvider() + { + return [ + ['int[]', Array_::class, Integer::class, Compound::class], + ['int[][]', Array_::class, Array_::class, Compound::class], + ['Object[]', Array_::class, Object_::class, Compound::class], + ['array[]', Array_::class, Array_::class, Compound::class], + ]; + } + + /** + * @dataProvider collectionReturnTypesProvider + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\Types\Array_ + * @uses \phpDocumentor\Reflection\Types\Compound + * @uses \phpDocumentor\Reflection\Types\Integer + * @uses \phpDocumentor\Reflection\Types\Object_ + * @param string $returnType + * @param string $expectedType + * @param string $expectedValueType + * @param string null $expectedKeyType + */ + public function testCollectionReturnTypes( + $returnType, + $expectedType, + $expectedValueType = null, + $expectedKeyType = null + ) { $resolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->with('', null)->andReturn(new Description('')); + + $fixture = Method::create("$returnType myMethod(\$arg)", $resolver, $descriptionFactory); + $returnType = $fixture->getReturnType(); + $this->assertInstanceOf($expectedType, $returnType); + + if ($returnType instanceof Array_) { + $this->assertInstanceOf($expectedValueType, $returnType->getValueType()); + $this->assertInstanceOf($expectedKeyType, $returnType->getKeyType()); + } + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Method::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsEmpty() + { + Method::create(''); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodReturnsNullIfBodyIsIncorrect() + { + $this->assertNull(Method::create('body(')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Method::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Method::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfBodyIsNotString() + { + new Method([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfBodyIsEmpty() + { + new Method(''); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfStaticIsNotBoolean() + { + new Method('body', [], null, []); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testCreationFailsIfArgumentRecordContainsInvalidEntry() + { + new Method('body', [ [ 'name' => 'myName', 'unknown' => 'nah' ] ]); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Method:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testCreateMethodParenthesisMissing() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Method::create( + 'static void myMethod My Description', + $resolver, + $descriptionFactory, + $context + ); + + $this->assertSame('static void myMethod() My Description', (string)$fixture); + $this->assertSame('myMethod', $fixture->getMethodName()); + $this->assertEquals([], $fixture->getArguments()); + $this->assertInstanceOf(Void_::class, $fixture->getReturnType()); + $this->assertSame($description, $fixture->getDescription()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0c718ab7b3382e9c586d20e619f07a4cbfc8bd62 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ParamTest.php @@ -0,0 +1,228 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Param + * @covers :: + */ +class ParamTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Param('myParameter', null, false, new Description('Description')); + + $this->assertSame('param', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::isVariadic + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Param('myParameter', new String_(), true, new Description('Description')); + $this->assertSame('@param string ...$myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter', new String_(), false, new Description('Description')); + $this->assertSame('@param string $myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter', null, false, new Description('Description')); + $this->assertSame('@param $myParameter Description', $fixture->render()); + + $fixture = new Param('myParameter'); + $this->assertSame('@param $myParameter', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Param('myParameter'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myParameter'; + + $fixture = new Param($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Param('myParameter', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers ::isVariadic + */ + public function testIfParameterIsVariadic() + { + $fixture = new Param('myParameter', new String_(), false); + $this->assertFalse($fixture->isVariadic()); + + $fixture = new Param('myParameter', new String_(), true); + $this->assertTrue($fixture->isVariadic()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Param('1.0', null, false, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::isVariadic + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Param('myParameter', new String_(), true, new Description('Description')); + + $this->assertSame('string ...$myParameter Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Param::create('string ...$myParameter My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string ...$myParameter My Description', (string)$fixture); + $this->assertSame('myParameter', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertTrue($fixture->isVariadic()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Param:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Param::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Param::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Param::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Param::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Param([]); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariadicIsNotBoolean() + { + new Param('', null, []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php new file mode 100644 index 0000000000000000000000000000000000000000..c3fb77006fa7632bb37805de8c4a2357c515bd4a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyReadTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead + * @covers :: + */ +class PropertyReadTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new PropertyRead('myProperty', null, new Description('Description')); + + $this->assertSame('property-read', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new PropertyRead('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property-read string $myProperty Description', $fixture->render()); + + $fixture = new PropertyRead('myProperty', null, new Description('Description')); + $this->assertSame('@property-read $myProperty Description', $fixture->render()); + + $fixture = new PropertyRead('myProperty'); + $this->assertSame('@property-read $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new PropertyRead('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new PropertyRead($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new PropertyRead('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new PropertyRead('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new PropertyRead('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = PropertyRead::create('string $myProperty My Description', $typeResolver, $descriptionFactory, + $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyRead:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + PropertyRead::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + PropertyRead::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + PropertyRead::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + PropertyRead::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new PropertyRead([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php new file mode 100644 index 0000000000000000000000000000000000000000..908dfb284df48931b3e2607ed09e88f45fb97091 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyTest.php @@ -0,0 +1,200 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Property + * @covers :: + */ +class PropertyTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Property('myProperty', null, new Description('Description')); + + $this->assertSame('property', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Property('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property string $myProperty Description', $fixture->render()); + + $fixture = new Property('myProperty', null, new Description('Description')); + $this->assertSame('@property $myProperty Description', $fixture->render()); + + $fixture = new Property('myProperty'); + $this->assertSame('@property $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Property('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new Property($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Property('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Property('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Property('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Property::create('string $myProperty My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Property:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Property::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Property::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Property::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Property::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Property([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5ea6524ca23bdac305f181130f8551abae944a21 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/PropertyWriteTest.php @@ -0,0 +1,201 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite + * @covers :: + */ +class PropertyWriteTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new PropertyWrite('myProperty', null, new Description('Description')); + + $this->assertSame('property-write', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new PropertyWrite('myProperty', new String_(), new Description('Description')); + $this->assertSame('@property-write string $myProperty Description', $fixture->render()); + + $fixture = new PropertyWrite('myProperty', null, new Description('Description')); + $this->assertSame('@property-write $myProperty Description', $fixture->render()); + + $fixture = new PropertyWrite('myProperty'); + $this->assertSame('@property-write $myProperty', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new PropertyWrite('myProperty'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myProperty'; + + $fixture = new PropertyWrite($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new PropertyWrite('myProperty', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new PropertyWrite('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new PropertyWrite('myProperty', new String_(), new Description('Description')); + + $this->assertSame('string $myProperty Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = PropertyWrite::create('string $myProperty My Description', $typeResolver, $descriptionFactory, + $context); + + $this->assertSame('string $myProperty My Description', (string)$fixture); + $this->assertSame('myProperty', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + PropertyWrite::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + PropertyWrite::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + PropertyWrite::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + PropertyWrite::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new PropertyWrite([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php new file mode 100644 index 0000000000000000000000000000000000000000..2bc543919385cb53bf001953ceaef7df0bd7051a --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ReturnTest.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Return_ + * @covers :: + */ +class ReturnTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('return', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('@return string Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Return_($expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Return_(new String_(), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Return_(new String_(), new Description('Description')); + + $this->assertSame('string Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $type = new String_(); + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Return_::create('string My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('string My Description', (string)$fixture); + $this->assertEquals($type, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Return_::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Return_::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Return_::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Return_::create('body', new TypeResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8d3e3e8c67b6987da9575a7aa5d53f4bc3f34e18 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SeeTest.php @@ -0,0 +1,173 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\See + * @covers :: + */ +class SeeTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('see', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@see \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new See($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new See(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new See(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\See:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description); + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = See::create('DateTime My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(See::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(See::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + See::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + See::create('body', new FqsenResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..3f42db5d2a5f841b6d46bf3941ae200b553f5cad --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SinceTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Since + * @covers :: + */ +class SinceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('since', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('@since 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Since('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Since($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Since('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Since('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Since::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Since:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptySinceTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Since::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfSinceIsNotString() + { + $this->assertNull(Since::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertNull(Since::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php new file mode 100644 index 0000000000000000000000000000000000000000..cbf01f6569c7c868e1ea98aeabe7bb41fe82cfb2 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/SourceTest.php @@ -0,0 +1,199 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Source + * @covers :: + */ +class SourceTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Source(1, null, new Description('Description')); + + $this->assertSame('source', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Source(1, 10, new Description('Description')); + $this->assertSame('@source 1 10 Description', $fixture->render()); + + $fixture = new Source(1, null, new Description('Description')); + $this->assertSame('@source 1 Description', $fixture->render()); + + $fixture = new Source(1); + $this->assertSame('@source 1', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Source(1); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getStartingLine + */ + public function testHasStartingLine() + { + $expected = 1; + + $fixture = new Source($expected); + + $this->assertSame($expected, $fixture->getStartingLine()); + } + + /** + * @covers ::__construct + * @covers ::getLineCount + */ + public function testHasLineCount() + { + $expected = 2; + + $fixture = new Source(1, $expected); + + $this->assertSame($expected, $fixture->getLineCount()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Source('1', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Source(1, 10, new Description('Description')); + + $this->assertSame('1 10 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Source::create('1 10 My Description', $descriptionFactory, $context); + + $this->assertSame('1 10 My Description', (string)$fixture); + $this->assertSame(1, $fixture->getStartingLine()); + $this->assertSame(10, $fixture->getLineCount()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Source:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Source::create('', $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Source::create([]); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Source::create('1'); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfStartingLineIsNotInteger() + { + new Source('blabla'); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfLineCountIsNotIntegerOrNull() + { + new Source('1', []); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php new file mode 100644 index 0000000000000000000000000000000000000000..657d6ca51ea63d93b970ceaa14a6562e6112b7f6 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/ThrowsTest.php @@ -0,0 +1,170 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Throws + * @covers :: + */ +class ThrowsTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('throws', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('@throws string Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Throws($expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Throws(new String_(), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Throws(new String_(), new Description('Description')); + + $this->assertSame('string Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Throws:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $type = new String_(); + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Throws::create('string My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('string My Description', (string)$fixture); + $this->assertEquals($type, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Throws::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Throws::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Throws::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Throws::create('body', new TypeResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..419f7e368076609a35a6e8c4a2b884e40e40b2fa --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/UsesTest.php @@ -0,0 +1,174 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\FqsenResolver; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Uses + * @covers :: + */ +class UsesTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('uses', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('@uses \DateTime Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getReference + */ + public function testHasReferenceToFqsen() + { + $expected = new Fqsen('\DateTime'); + + $fixture = new Uses($expected); + + $this->assertSame($expected, $fixture->getReference()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Uses(new Fqsen('\DateTime'), $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Uses(new Fqsen('\DateTime'), new Description('Description')); + + $this->assertSame('\DateTime Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Uses:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\FqsenResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Fqsen + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = m::mock(FqsenResolver::class); + $context = new Context(''); + + $fqsen = new Fqsen('\DateTime'); + $description = new Description('My Description'); + + $descriptionFactory + ->shouldReceive('create')->with('My Description', $context)->andReturn($description) + ; + $resolver->shouldReceive('resolve')->with('DateTime', $context)->andReturn($fqsen); + + $fixture = Uses::create('DateTime My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('\DateTime My Description', (string)$fixture); + $this->assertSame($fqsen, $fixture->getReference()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + $this->assertNull(Uses::create([])); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotEmpty() + { + $this->assertNull(Uses::create('')); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Uses::create('body'); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Uses::create('body', new FqsenResolver()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php new file mode 100644 index 0000000000000000000000000000000000000000..34f290adc5b35f206111385bd68056827033a897 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VarTest.php @@ -0,0 +1,200 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\TypeResolver; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\String_; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Var_ + * @covers :: + */ +class VarTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Var_('myVariable', null, new Description('Description')); + + $this->assertSame('var', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Var_('myVariable', new String_(), new Description('Description')); + $this->assertSame('@var string $myVariable Description', $fixture->render()); + + $fixture = new Var_('myVariable', null, new Description('Description')); + $this->assertSame('@var $myVariable Description', $fixture->render()); + + $fixture = new Var_('myVariable'); + $this->assertSame('@var $myVariable', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Var_('myVariable'); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVariableName + */ + public function testHasVariableName() + { + $expected = 'myVariable'; + + $fixture = new Var_($expected); + + $this->assertSame($expected, $fixture->getVariableName()); + } + + /** + * @covers ::__construct + * @covers ::getType + */ + public function testHasType() + { + $expected = new String_(); + + $fixture = new Var_('myVariable', $expected); + + $this->assertSame($expected, $fixture->getType()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Var_('1.0', null, $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Var_('myVariable', new String_(), new Description('Description')); + + $this->assertSame('string $myVariable Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $typeResolver = new TypeResolver(); + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Var_::create('string $myVariable My Description', $typeResolver, $descriptionFactory, $context); + + $this->assertSame('string $myVariable My Description', (string)$fixture); + $this->assertSame('myVariable', $fixture->getVariableName()); + $this->assertInstanceOf(String_::class, $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Var_:: + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfEmptyBodyIsGiven() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + Var_::create('', new TypeResolver(), $descriptionFactory); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfBodyIsNotString() + { + Var_::create([]); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfResolverIsNull() + { + Var_::create('body'); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\TypeResolver + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfDescriptionFactoryIsNull() + { + Var_::create('body', new TypeResolver()); + } + + /** + * @covers ::__construct + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfVariableNameIsNotString() + { + new Var_([]); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php new file mode 100644 index 0000000000000000000000000000000000000000..5c487fd3daa4d662aad655117eff2664b7894a58 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlock/Tags/VersionTest.php @@ -0,0 +1,166 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\DocBlock\Tags; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\DocBlock\Tags\Version + * @covers :: + */ +class VersionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfCorrectTagNameIsReturned() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('version', $fixture->getName()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getName + */ + public function testIfTagCanBeRenderedUsingDefaultFormatter() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('@version 1.0 Description', $fixture->render()); + } + + /** + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version::__construct + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::render + */ + public function testIfTagCanBeRenderedUsingSpecificFormatter() + { + $fixture = new Version('1.0', new Description('Description')); + + $formatter = m::mock(Formatter::class); + $formatter->shouldReceive('format')->with($fixture)->andReturn('Rendered output'); + + $this->assertSame('Rendered output', $fixture->render($formatter)); + } + + /** + * @covers ::__construct + * @covers ::getVersion + */ + public function testHasVersionNumber() + { + $expected = '1.0'; + + $fixture = new Version($expected); + + $this->assertSame($expected, $fixture->getVersion()); + } + + /** + * @covers ::__construct + * @covers \phpDocumentor\Reflection\DocBlock\Tags\BaseTag::getDescription + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testHasDescription() + { + $expected = new Description('Description'); + + $fixture = new Version('1.0', $expected); + + $this->assertSame($expected, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::__toString + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testStringRepresentationIsReturned() + { + $fixture = new Version('1.0', new Description('Description')); + + $this->assertSame('1.0 Description', (string)$fixture); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethod() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $context = new Context(''); + + $version = '1.0'; + $description = new Description('My Description'); + + $descriptionFactory->shouldReceive('create')->with('My Description', $context)->andReturn($description); + + $fixture = Version::create('1.0 My Description', $descriptionFactory, $context); + + $this->assertSame('1.0 My Description', (string)$fixture); + $this->assertSame($version, $fixture->getVersion()); + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Version:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodCreatesEmptyVersionTag() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $descriptionFactory->shouldReceive('create')->never(); + + $fixture = Version::create('', $descriptionFactory, new Context('')); + + $this->assertSame('', (string)$fixture); + $this->assertSame(null, $fixture->getVersion()); + $this->assertSame(null, $fixture->getDescription()); + } + + /** + * @covers ::create + * @expectedException \InvalidArgumentException + */ + public function testFactoryMethodFailsIfVersionIsNotString() + { + $this->assertNull(Version::create([])); + } + + /** + * @covers ::create + */ + public function testFactoryMethodReturnsNullIfBodyDoesNotMatchRegex() + { + $this->assertNull(Version::create('dkhf<')); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f1261b65f749118eb9c321c97408a345d4e11ce7 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockFactoryTest.php @@ -0,0 +1,290 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\DocBlock\Description; +use phpDocumentor\Reflection\DocBlock\DescriptionFactory; +use phpDocumentor\Reflection\DocBlock\Tag; +use phpDocumentor\Reflection\DocBlock\TagFactory; +use phpDocumentor\Reflection\DocBlock\Tags\Param; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlockFactory + * @covers :: + * @uses \Webmozart\Assert\Assert + * @uses phpDocumentor\Reflection\DocBlock + */ +class DocBlockFactoryTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::createInstance + * @uses \phpDocumentor\Reflection\DocBlock\StandardTagFactory + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + */ + public function testCreateFactoryUsingFactoryMethod() + { + $fixture = DocBlockFactory::createInstance(); + + $this->assertInstanceOf(DocBlockFactory::class, $fixture); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromReflection() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docBlock = '/** This is a DocBlock */'; + $classReflector = m::mock(\ReflectionClass::class); + $classReflector->shouldReceive('getDocComment')->andReturn($docBlock); + $docblock = $fixture->create($classReflector); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromStringWithDocComment() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docblock = $fixture->create('/** This is a DocBlock */'); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::create + * @covers ::__construct + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testCreateDocBlockFromStringWithoutDocComment() + { + $fixture = new DocBlockFactory(m::mock(DescriptionFactory::class), m::mock(TagFactory::class)); + + $docblock = $fixture->create('This is a DocBlock'); + + $this->assertInstanceOf(DocBlock::class, $docblock); + $this->assertSame('This is a DocBlock', $docblock->getSummary()); + $this->assertEquals(new Description(''), $docblock->getDescription()); + $this->assertSame([], $docblock->getTags()); + $this->assertEquals(new Context(''), $docblock->getContext()); + $this->assertNull($docblock->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + * @dataProvider provideSummaryAndDescriptions + */ + public function testSummaryAndDescriptionAreSeparated($given, $summary, $description) + { + $tagFactory = m::mock(TagFactory::class); + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $docblock = $fixture->create($given); + + $this->assertSame($summary, $docblock->getSummary()); + $this->assertEquals(new Description($description), $docblock->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testDescriptionsRetainFormatting() + { + $tagFactory = m::mock(TagFactory::class); + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = <<create($given); + + $this->assertEquals(new Description($description), $docblock->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::create + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testTagsAreInterpretedUsingFactory() + { + $tagString = << This is with + multiline description. +TAG; + + $tag = m::mock(Tag::class); + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->with($tagString, m::type(Context::class))->andReturn($tag); + + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = << This is with + * multiline description. + */ +DOCBLOCK; + + $docblock = $fixture->create($given, new Context('')); + + $this->assertEquals([$tag], $docblock->getTags()); + } + + public function provideSummaryAndDescriptions() + { + return [ + ['This is a DocBlock', 'This is a DocBlock', ''], + [ + 'This is a DocBlock. This should still be summary.', + 'This is a DocBlock. This should still be summary.', + '' + ], + [ + <<shouldReceive('create')->with(m::any(), $context)->andReturn(new Param('param')); + $docblock = $fixture->create('/** @param MyType $param */', $context); + } + + /** + * @covers ::__construct + * @covers ::create + * + * @uses phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses phpDocumentor\Reflection\DocBlock\Description + */ + public function testTagsAreFilteredForNullValues() + { + $tagString = << This is with + multiline description. +TAG; + + $tagFactory = m::mock(TagFactory::class); + $tagFactory->shouldReceive('create')->with($tagString, m::any())->andReturn(null); + + $fixture = new DocBlockFactory(new DescriptionFactory($tagFactory), $tagFactory); + + $given = << This is with + * multiline description. + */ +DOCBLOCK; + + $docblock = $fixture->create($given, new Context('')); + + $this->assertEquals([], $docblock->getTags()); + } +} diff --git a/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php new file mode 100644 index 0000000000000000000000000000000000000000..4a8d4ded09264d9237288559d07d9a1a45dbdc13 --- /dev/null +++ b/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php @@ -0,0 +1,252 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\Types\Context; + +/** + * @coversDefaultClass phpDocumentor\Reflection\DocBlock + * @covers :: + * @uses \Webmozart\Assert\Assert + */ +class DocBlockTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getSummary + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockCanHaveASummary() + { + $summary = 'This is a summary'; + + $fixture = new DocBlock($summary); + + $this->assertSame($summary, $fixture->getSummary()); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfSummaryIsNotAString() + { + new DocBlock([]); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTemplateStartIsNotABoolean() + { + new DocBlock('', null, [], null, null, ['is not boolean']); + } + + /** + * @covers ::__construct + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTemplateEndIsNotABoolean() + { + new DocBlock('', null, [], null, null, false, ['is not boolean']); + } + + /** + * @covers ::__construct + * @covers ::getDescription + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockCanHaveADescription() + { + $description = new DocBlock\Description(''); + + $fixture = new DocBlock('', $description); + + $this->assertSame($description, $fixture->getDescription()); + } + + /** + * @covers ::__construct + * @covers ::getTags + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testDocBlockCanHaveTags() + { + $tags = [ + m::mock(DocBlock\Tag::class) + ]; + + $fixture = new DocBlock('', null, $tags); + + $this->assertSame($tags, $fixture->getTags()); + } + + /** + * @covers ::__construct + * @covers ::getTags + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + * + * @expectedException \InvalidArgumentException + */ + public function testDocBlockAllowsOnlyTags() + { + $tags = [ + null + ]; + + $fixture = new DocBlock('', null, $tags); + } + + /** + * @covers ::__construct + * @covers ::getTagsByName + * + * @uses \phpDocumentor\Reflection\DocBlock::getTags + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testFindTagsInDocBlockByName() + { + $tag1 = m::mock(DocBlock\Tag::class); + $tag2 = m::mock(DocBlock\Tag::class); + $tag3 = m::mock(DocBlock\Tag::class); + $tags = [$tag1, $tag2, $tag3]; + + $tag1->shouldReceive('getName')->andReturn('abc'); + $tag2->shouldReceive('getName')->andReturn('abcd'); + $tag3->shouldReceive('getName')->andReturn('ab'); + + $fixture = new DocBlock('', null, $tags); + + $this->assertSame([$tag2], $fixture->getTagsByName('abcd')); + $this->assertSame([], $fixture->getTagsByName('Ebcd')); + } + + /** + * @covers ::__construct + * @covers ::getTagsByName + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfNameForTagsIsNotString() + { + $fixture = new DocBlock(); + $fixture->getTagsByName([]); + } + + /** + * @covers ::__construct + * @covers ::hasTag + * + * @uses \phpDocumentor\Reflection\DocBlock::getTags + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\DocBlock\Tag + */ + public function testCheckIfThereAreTagsWithAGivenName() + { + $tag1 = m::mock(DocBlock\Tag::class); + $tag2 = m::mock(DocBlock\Tag::class); + $tag3 = m::mock(DocBlock\Tag::class); + $tags = [$tag1, $tag2, $tag3]; + + $tag1->shouldReceive('getName')->twice()->andReturn('abc'); + $tag2->shouldReceive('getName')->twice()->andReturn('abcd'); + $tag3->shouldReceive('getName')->once(); + + $fixture = new DocBlock('', null, $tags); + + $this->assertTrue($fixture->hasTag('abcd')); + $this->assertFalse($fixture->hasTag('Ebcd')); + } + + /** + * @covers ::__construct + * @covers ::hasTag + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfNameForCheckingTagsIsNotString() + { + $fixture = new DocBlock(); + $fixture->hasTag([]); + } + + /** + * @covers ::__construct + * @covers ::getContext + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testDocBlockKnowsInWhichNamespaceItIsAndWhichAliasesThereAre() + { + $context = new Context(''); + + $fixture = new DocBlock('', null, [], $context); + + $this->assertSame($context, $fixture->getContext()); + } + + /** + * @covers ::__construct + * @covers ::getLocation + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Location + */ + public function testDocBlockKnowsAtWhichLineItIs() + { + $location = new Location(10); + + $fixture = new DocBlock('', null, [], null, $location); + + $this->assertSame($location, $fixture->getLocation()); + } + + /** + * @covers ::__construct + * @covers ::isTemplateStart + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockKnowsIfItIsTheStartOfADocBlockTemplate() + { + $fixture = new DocBlock('', null, [], null, null, true); + + $this->assertTrue($fixture->isTemplateStart()); + } + + /** + * @covers ::__construct + * @covers ::isTemplateEnd + * + * @uses \phpDocumentor\Reflection\DocBlock\Description + */ + public function testDocBlockKnowsIfItIsTheEndOfADocBlockTemplate() + { + $fixture = new DocBlock('', null, [], null, null, false, true); + + $this->assertTrue($fixture->isTemplateEnd()); + } +} diff --git a/vendor/phpdocumentor/type-resolver/.gitignore b/vendor/phpdocumentor/type-resolver/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..82cfc4e957ca1cae69fb8686c6b3bc10f222f24e --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.gitignore @@ -0,0 +1,3 @@ +.idea +composer.lock +vendor diff --git a/vendor/phpdocumentor/type-resolver/.scrutinizer.yml b/vendor/phpdocumentor/type-resolver/.scrutinizer.yml new file mode 100644 index 0000000000000000000000000000000000000000..7d7372a841c5b8730321edbf1160ff6c869dcf26 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.scrutinizer.yml @@ -0,0 +1,31 @@ +before_commands: + - "composer install --no-dev --prefer-source" + +tools: + external_code_coverage: true + php_code_sniffer: + config: + standard: PSR2 + filter: + paths: ["src/*", "tests/*"] + php_cpd: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_loc: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_mess_detector: + enabled: true + config: + ruleset: phpmd.xml.dist + design_rules: { eval_expression: false } + filter: + paths: ["src/*"] + php_pdepend: + enabled: true + excluded_dirs: ["tests", "vendor"] + php_analyzer: + enabled: true + filter: + paths: ["src/*", "tests/*"] + sensiolabs_security_checker: true diff --git a/vendor/phpdocumentor/type-resolver/.travis.yml b/vendor/phpdocumentor/type-resolver/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..c882b141b8287f7e9bc5e44f99a435fed1168590 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/.travis.yml @@ -0,0 +1,34 @@ +language: php +php: + - 5.5 + - 5.6 + - 7.0 + - hhvm + - nightly + +matrix: + allow_failures: + - php: + - hhvm + - nightly + +cache: + directories: + - $HOME/.composer/cache + +script: + - vendor/bin/phpunit --coverage-clover=coverage.clover -v + - composer update --no-interaction --prefer-source + - vendor/bin/phpunit -v + +before_script: + - composer install --no-interaction + +after_script: + - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi + +notifications: + irc: "irc.freenode.org#phpdocumentor" + email: + - me@mikevanriel.com + - ashnazg@php.net diff --git a/vendor/phpdocumentor/type-resolver/LICENSE b/vendor/phpdocumentor/type-resolver/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..792e4040f26f0347b3beb069d6ea070e6ae14a69 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2010 Mike van Riel + +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/phpdocumentor/type-resolver/README.md b/vendor/phpdocumentor/type-resolver/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ca8147bc9c4181d3bfd2b812374ef70fcd2a4919 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/README.md @@ -0,0 +1,169 @@ +TypeResolver and FqsenResolver +============================== + +The specification on types in DocBlocks (PSR-5) describes various keywords and special constructs +but also how to statically resolve the partial name of a Class into a Fully Qualified Class Name (FQCN). + +PSR-5 also introduces an additional way to describe deeper elements than Classes, Interfaces and Traits +called the Fully Qualified Structural Element Name (FQSEN). Using this it is possible to refer to methods, +properties and class constants but also functions and global constants. + +This package provides two Resolvers that are capable of + +1. Returning a series of Value Object for given expression while resolving any partial class names, and +2. Returning an FQSEN object after resolving any partial Structural Element Names into Fully Qualified Structural + Element names. + +## Installing + +The easiest way to install this library is with [Composer](https://getcomposer.org) using the following command: + + $ composer require phpdocumentor/type-resolver + +## Examples + +Ready to dive in and don't want to read through all that text below? Just consult the [examples](examples) folder and +check which type of action that your want to accomplish. + +## On Types and Element Names + +This component can be used in one of two ways + +1. To resolve a Type or +2. To resolve a Fully Qualified Structural Element Name + +The big difference between these two is in the number of things it can resolve. + +The TypeResolver can resolve: + +- a php primitive or pseudo-primitive such as a string or void (`@var string` or `@return void`). +- a composite such as an array of string (`@var string[]`). +- a compound such as a string or integer (`@var string|integer`). +- an object or interface such as the TypeResolver class (`@var TypeResolver` + or `@var \phpDocumentor\Reflection\TypeResolver`) + + > please note that if you want to pass partial class names that additional steps are necessary, see the + > chapter `Resolving partial classes and FQSENs` for more information. + +Where the FqsenResolver can resolve: + +- Constant expressions (i.e. `@see \MyNamespace\MY_CONSTANT`) +- Function expressions (i.e. `@see \MyNamespace\myFunction()`) +- Class expressions (i.e. `@see \MyNamespace\MyClass`) +- Interface expressions (i.e. `@see \MyNamespace\MyInterface`) +- Trait expressions (i.e. `@see \MyNamespace\MyTrait`) +- Class constant expressions (i.e. `@see \MyNamespace\MyClass::MY_CONSTANT`) +- Property expressions (i.e. `@see \MyNamespace\MyClass::$myProperty`) +- Method expressions (i.e. `@see \MyNamespace\MyClass::myMethod()`) + +## Resolving a type + +In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver` +and call its `resolve` method like this: + + $typeResolver = new \phpDocumentor\Reflection\TypeResolver(); + $type = $typeResolver->resolve('string|integer'); + +In this example you will receive a Value Object of class `\phpDocumentor\Reflection\Types\Compound` that has two +elements, one of type `\phpDocumentor\Reflection\Types\String_` and one of type +`\phpDocumentor\Reflection\Types\Integer`. + +The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but +in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver +in which namespace the given expression occurs and which namespace aliases (or imports) apply. + +## Resolving an FQSEN + +A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using +the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this: + + $fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver(); + $fqsen = $fqsenResolver->resolve('\phpDocumentor\Reflection\FqsenResolver::resolve()'); + +In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class +name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`. + +The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural +Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will +inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply. + +## Resolving partial Classes and Structural Element Names + +Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class +names. + +For example, you have this file: + +```php + '\phpDocumentor\Reflection\Types'] + ); + +Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector +object or by providing the namespace that you'd like to extract and the source code of the file in which the given +type expression occurs. + + $contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory(); + $context = $contextFactory->createFromReflector(new ReflectionMethod('\My\Example\Classy', '__construct')); + +or + + $contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory(); + $context = $contextFactory->createForNamespace('\My\Example', file_get_contents('My/Example/Classy.php')); + +### Using the Context + +After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver +class as second argument and the Resolvers will take this into account when resolving partial names. + +To obtain the resolved class name for the `@var` tag in the example above you can do: + + $typeResolver = new \phpDocumentor\Reflection\TypeResolver(); + $type = $typeResolver->resolve('Types\Context', $context); + +When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call +the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be +`phpDocumentor\Reflection\Types\Context`. + +> Why is the FQSEN wrapped in another object `Object_`? +> +> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common +> type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it +> is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN. + +Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To +resolve that you can do the following: + + $fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver(); + $type = $fqsenResolver->resolve('Classy::otherFunction()', $context); + +Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the +`resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to +`\My\Example\Classy::otherFunction()`. diff --git a/vendor/phpdocumentor/type-resolver/composer.json b/vendor/phpdocumentor/type-resolver/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..abaa965d0e7a80b8a1dad649337d295f972e16aa --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/composer.json @@ -0,0 +1,27 @@ +{ + "name": "phpdocumentor/type-resolver", + "type": "library", + "license": "MIT", + "authors": [ + {"name": "Mike van Riel", "email": "me@mikevanriel.com"} + ], + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "autoload": { + "psr-4": {"phpDocumentor\\Reflection\\": ["src/"]} + }, + "autoload-dev": { + "psr-4": {"phpDocumentor\\Reflection\\": ["tests/unit"]} + }, + "require-dev": { + "phpunit/phpunit": "^5.2||^4.8.24", + "mockery/mockery": "^0.9.4" + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php b/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php new file mode 100644 index 0000000000000000000000000000000000000000..682b1d3da9e87b36845edb7b0113d987a897fb43 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/01-resolving-simple-types.php @@ -0,0 +1,13 @@ +resolve('string|integer')); + +// Will return the string "string|int" +var_dump((string)$typeResolver->resolve('string|integer')); diff --git a/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php b/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php new file mode 100644 index 0000000000000000000000000000000000000000..70aa5e42283118b5edeb7bae89754b3b63b8f3a8 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/02-resolving-classes.php @@ -0,0 +1,12 @@ + 'Mockery' ]); +var_dump((string)$typeResolver->resolve('Types\Resolver|m\MockInterface', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php b/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php new file mode 100644 index 0000000000000000000000000000000000000000..4f4282eb1fd39e00ce82e03801a81711f62c0484 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/03-resolving-all-elements.php @@ -0,0 +1,17 @@ +resolve('Types\Resolver::resolveFqsen()', $context)); + +// Property named: \phpDocumentor\Types\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php b/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php new file mode 100644 index 0000000000000000000000000000000000000000..957c97ddab616af7331eb4febe9b1cfdaa0c3234 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/04-discovering-the-context-using-class-reflection.php @@ -0,0 +1,30 @@ +createFromReflector(new ReflectionClass('My\\Example\\Classy')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); + +// Class named: \My\Example\string +// - Shows the difference between the FqsenResolver and TypeResolver; the FqsenResolver will assume +// that the given value is not a type but most definitely a reference to another element. This is +// because conflicts between type keywords and class names can exist and if you know a reference +// is not a type but an element you can force that keywords are resolved. +var_dump((string)$fqsenResolver->resolve('string', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php b/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php new file mode 100644 index 0000000000000000000000000000000000000000..10c0c883d8b3c94ca0a18c5bd8b5dbed3bbf088f --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/05-discovering-the-context-using-method-reflection.php @@ -0,0 +1,30 @@ +createFromReflector(new ReflectionMethod('My\\Example\\Classy', '__construct')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); + +// Class named: \My\Example\string +// - Shows the difference between the FqsenResolver and TypeResolver; the FqsenResolver will assume +// that the given value is not a type but most definitely a reference to another element. This is +// because conflicts between type keywords and class names can exist and if you know a reference +// is not a type but an element you can force that keywords are resolved. +var_dump((string)$fqsenResolver->resolve('string', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php b/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php new file mode 100644 index 0000000000000000000000000000000000000000..a93728c8e4e49c66e6de0b47d1bb5517dbc46616 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/06-discovering-the-context-using-file-contents.php @@ -0,0 +1,22 @@ +createForNamespace('My\Example', file_get_contents('Classy.php')); + +// Class named: \phpDocumentor\Reflection\Types\Resolver +var_dump((string)$typeResolver->resolve('Types\Resolver', $context)); + +// String +var_dump((string)$typeResolver->resolve('string', $context)); + +// Property named: \phpDocumentor\Reflection\Types\Resolver::$keyWords +var_dump((string)$fqsenResolver->resolve('Types\Resolver::$keyWords', $context)); diff --git a/vendor/phpdocumentor/type-resolver/examples/Classy.php b/vendor/phpdocumentor/type-resolver/examples/Classy.php new file mode 100644 index 0000000000000000000000000000000000000000..0705266f58eba6338bb111f0ea6cea812e845d80 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/examples/Classy.php @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + 40 + + + diff --git a/vendor/phpdocumentor/type-resolver/phpunit.xml.dist b/vendor/phpdocumentor/type-resolver/phpunit.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..3246bef4583ea014425de6c59a6d6e2fe850db5f --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + ./tests/unit + + + + + ./src/ + + + ./examples/ + ./vendor/ + + + + + + diff --git a/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php new file mode 100644 index 0000000000000000000000000000000000000000..a0e0041c344aea62415fe2b2bd5e13717a9be08e --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php @@ -0,0 +1,76 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\Types\Context; + +class FqsenResolver +{ + /** @var string Definition of the NAMESPACE operator in PHP */ + const OPERATOR_NAMESPACE = '\\'; + + public function resolve($fqsen, Context $context = null) + { + if ($context === null) { + $context = new Context(''); + } + + if ($this->isFqsen($fqsen)) { + return new Fqsen($fqsen); + } + + return $this->resolvePartialStructuralElementName($fqsen, $context); + } + + /** + * Tests whether the given type is a Fully Qualified Structural Element Name. + * + * @param string $type + * + * @return bool + */ + private function isFqsen($type) + { + return strpos($type, self::OPERATOR_NAMESPACE) === 0; + } + + /** + * Resolves a partial Structural Element Name (i.e. `Reflection\DocBlock`) to its FQSEN representation + * (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context. + * + * @param string $type + * @param Context $context + * + * @return Fqsen + */ + private function resolvePartialStructuralElementName($type, Context $context) + { + $typeParts = explode(self::OPERATOR_NAMESPACE, $type, 2); + + $namespaceAliases = $context->getNamespaceAliases(); + + // if the first segment is not an alias; prepend namespace name and return + if (!isset($namespaceAliases[$typeParts[0]])) { + $namespace = $context->getNamespace(); + if ('' !== $namespace) { + $namespace .= self::OPERATOR_NAMESPACE; + } + + return new Fqsen(self::OPERATOR_NAMESPACE . $namespace . $type); + } + + $typeParts[0] = $namespaceAliases[$typeParts[0]]; + + return new Fqsen(self::OPERATOR_NAMESPACE . implode(self::OPERATOR_NAMESPACE, $typeParts)); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Type.php b/vendor/phpdocumentor/type-resolver/src/Type.php new file mode 100644 index 0000000000000000000000000000000000000000..33ca5595871133540aad2962d8350f8d91af02de --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Type.php @@ -0,0 +1,18 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +interface Type +{ + public function __toString(); +} diff --git a/vendor/phpdocumentor/type-resolver/src/TypeResolver.php b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php new file mode 100644 index 0000000000000000000000000000000000000000..3a68a4d37c8fda8caba503fa774658af34acc81b --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php @@ -0,0 +1,266 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Object_; + +final class TypeResolver +{ + /** @var string Definition of the ARRAY operator for types */ + const OPERATOR_ARRAY = '[]'; + + /** @var string Definition of the NAMESPACE operator in PHP */ + const OPERATOR_NAMESPACE = '\\'; + + /** @var string[] List of recognized keywords and unto which Value Object they map */ + private $keywords = array( + 'string' => 'phpDocumentor\Reflection\Types\String_', + 'int' => 'phpDocumentor\Reflection\Types\Integer', + 'integer' => 'phpDocumentor\Reflection\Types\Integer', + 'bool' => 'phpDocumentor\Reflection\Types\Boolean', + 'boolean' => 'phpDocumentor\Reflection\Types\Boolean', + 'float' => 'phpDocumentor\Reflection\Types\Float_', + 'double' => 'phpDocumentor\Reflection\Types\Float_', + 'object' => 'phpDocumentor\Reflection\Types\Object_', + 'mixed' => 'phpDocumentor\Reflection\Types\Mixed', + 'array' => 'phpDocumentor\Reflection\Types\Array_', + 'resource' => 'phpDocumentor\Reflection\Types\Resource', + 'void' => 'phpDocumentor\Reflection\Types\Void_', + 'null' => 'phpDocumentor\Reflection\Types\Null_', + 'scalar' => 'phpDocumentor\Reflection\Types\Scalar', + 'callback' => 'phpDocumentor\Reflection\Types\Callable_', + 'callable' => 'phpDocumentor\Reflection\Types\Callable_', + 'false' => 'phpDocumentor\Reflection\Types\Boolean', + 'true' => 'phpDocumentor\Reflection\Types\Boolean', + 'self' => 'phpDocumentor\Reflection\Types\Self_', + '$this' => 'phpDocumentor\Reflection\Types\This', + 'static' => 'phpDocumentor\Reflection\Types\Static_' + ); + + /** @var FqsenResolver */ + private $fqsenResolver; + + /** + * Initializes this TypeResolver with the means to create and resolve Fqsen objects. + * + * @param FqsenResolver $fqsenResolver + */ + public function __construct(FqsenResolver $fqsenResolver = null) + { + $this->fqsenResolver = $fqsenResolver ?: new FqsenResolver(); + } + + /** + * Analyzes the given type and returns the FQCN variant. + * + * When a type is provided this method checks whether it is not a keyword or + * Fully Qualified Class Name. If so it will use the given namespace and + * aliases to expand the type to a FQCN representation. + * + * This method only works as expected if the namespace and aliases are set; + * no dynamic reflection is being performed here. + * + * @param string $type The relative or absolute type. + * @param Context $context + * + * @uses Context::getNamespace() to determine with what to prefix the type name. + * @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be + * replaced with another namespace. + * + * @return Type|null + */ + public function resolve($type, Context $context = null) + { + if (!is_string($type)) { + throw new \InvalidArgumentException( + 'Attempted to resolve type but it appeared not to be a string, received: ' . var_export($type, true) + ); + } + + $type = trim($type); + if (!$type) { + throw new \InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty'); + } + + if ($context === null) { + $context = new Context(''); + } + + switch (true) { + case $this->isKeyword($type): + return $this->resolveKeyword($type); + case ($this->isCompoundType($type)): + return $this->resolveCompoundType($type, $context); + case $this->isTypedArray($type): + return $this->resolveTypedArray($type, $context); + case $this->isFqsen($type): + return $this->resolveTypedObject($type); + case $this->isPartialStructuralElementName($type): + return $this->resolveTypedObject($type, $context); + // @codeCoverageIgnoreStart + default: + // I haven't got the foggiest how the logic would come here but added this as a defense. + throw new \RuntimeException( + 'Unable to resolve type "' . $type . '", there is no known method to resolve it' + ); + } + // @codeCoverageIgnoreEnd + } + + /** + * Adds a keyword to the list of Keywords and associates it with a specific Value Object. + * + * @param string $keyword + * @param string $typeClassName + * + * @return void + */ + public function addKeyword($keyword, $typeClassName) + { + if (!class_exists($typeClassName)) { + throw new \InvalidArgumentException( + 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class' + . ' but we could not find the class ' . $typeClassName + ); + } + + if (!in_array(Type::class, class_implements($typeClassName))) { + throw new \InvalidArgumentException( + 'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"' + ); + } + + $this->keywords[$keyword] = $typeClassName; + } + + /** + * Detects whether the given type represents an array. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isTypedArray($type) + { + return substr($type, -2) === self::OPERATOR_ARRAY; + } + + /** + * Detects whether the given type represents a PHPDoc keyword. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isKeyword($type) + { + return in_array(strtolower($type), array_keys($this->keywords), true); + } + + /** + * Detects whether the given type represents a relative structural element name. + * + * @param string $type A relative or absolute type as defined in the phpDocumentor documentation. + * + * @return bool + */ + private function isPartialStructuralElementName($type) + { + return ($type[0] !== self::OPERATOR_NAMESPACE) && !$this->isKeyword($type); + } + + /** + * Tests whether the given type is a Fully Qualified Structural Element Name. + * + * @param string $type + * + * @return bool + */ + private function isFqsen($type) + { + return strpos($type, self::OPERATOR_NAMESPACE) === 0; + } + + /** + * Tests whether the given type is a compound type (i.e. `string|int`). + * + * @param string $type + * + * @return bool + */ + private function isCompoundType($type) + { + return strpos($type, '|') !== false; + } + + /** + * Resolves the given typed array string (i.e. `string[]`) into an Array object with the right types set. + * + * @param string $type + * @param Context $context + * + * @return Array_ + */ + private function resolveTypedArray($type, Context $context) + { + return new Array_($this->resolve(substr($type, 0, -2), $context)); + } + + /** + * Resolves the given keyword (such as `string`) into a Type object representing that keyword. + * + * @param string $type + * + * @return Type + */ + private function resolveKeyword($type) + { + $className = $this->keywords[strtolower($type)]; + + return new $className(); + } + + /** + * Resolves the given FQSEN string into an FQSEN object. + * + * @param string $type + * + * @return Object_ + */ + private function resolveTypedObject($type, Context $context = null) + { + return new Object_($this->fqsenResolver->resolve($type, $context)); + } + + /** + * Resolves a compound type (i.e. `string|int`) into the appropriate Type objects or FQSEN. + * + * @param string $type + * @param Context $context + * + * @return Compound + */ + private function resolveCompoundType($type, Context $context) + { + $types = []; + + foreach (explode('|', $type) as $part) { + $types[] = $this->resolve($part, $context); + } + + return new Compound($types); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Array_.php b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php new file mode 100644 index 0000000000000000000000000000000000000000..45276c6bd02923e12114e6a6721ed7f4e32df9f2 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php @@ -0,0 +1,87 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\Type; + +/** + * Represents an array type as described in the PSR-5, the PHPDoc Standard. + * + * An array can be represented in two forms: + * + * 1. Untyped (`array`), where the key and value type is unknown and hence classified as 'Mixed'. + * 2. Types (`string[]`), where the value type is provided by preceding an opening and closing square bracket with a + * type name. + */ +final class Array_ implements Type +{ + /** @var Type */ + private $valueType; + + /** @var Type */ + private $keyType; + + /** + * Initializes this representation of an array with the given Type or Fqsen. + * + * @param Type $valueType + * @param Type $keyType + */ + public function __construct(Type $valueType = null, Type $keyType = null) + { + if ($keyType === null) { + $keyType = new Compound([ new String_(), new Integer() ]); + } + if ($valueType === null) { + $valueType = new Mixed(); + } + + $this->valueType = $valueType; + $this->keyType = $keyType; + } + + /** + * Returns the type for the keys of this array. + * + * @return Type + */ + public function getKeyType() + { + return $this->keyType; + } + + /** + * Returns the value for the keys of this array. + * + * @return Type + */ + public function getValueType() + { + return $this->valueType; + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + if ($this->valueType instanceof Mixed) { + return 'array'; + } + + return $this->valueType . '[]'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php new file mode 100644 index 0000000000000000000000000000000000000000..f82b19e5634aa442d289fa227af9f2e2b85d874d --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Boolean type. + */ +final class Boolean implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'bool'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php new file mode 100644 index 0000000000000000000000000000000000000000..68ebfbd064f885ea961040757f09d9e5939f94ce --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Callable type. + */ +final class Callable_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'callable'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Compound.php b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php new file mode 100644 index 0000000000000000000000000000000000000000..3e5ebb5c891ecc595277adaf399152852096182e --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php @@ -0,0 +1,82 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Compound Type. + * + * A Compound Type is not so much a special keyword or object reference but is a series of Types that are separated + * using an OR operator (`|`). This combination of types signifies that whatever is associated with this compound type + * may contain a value with any of the given types. + */ +final class Compound implements Type +{ + /** @var Type[] */ + private $types = []; + + /** + * Initializes a compound type (i.e. `string|int`) and tests if the provided types all implement the Type interface. + * + * @param Type[] $types + */ + public function __construct(array $types) + { + foreach ($types as $type) { + if (!$type instanceof Type) { + throw new \InvalidArgumentException('A compound type can only have other types as elements'); + } + } + + $this->types = $types; + } + + /** + * Returns the type at the given index. + * + * @param integer $index + * + * @return Type|null + */ + public function get($index) + { + if (!$this->has($index)) { + return null; + } + + return $this->types[$index]; + } + + /** + * Tests if this compound type has a type with the given index. + * + * @param integer $index + * + * @return bool + */ + public function has($index) + { + return isset($this->types[$index]); + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return implode('|', $this->types); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Context.php b/vendor/phpdocumentor/type-resolver/src/Types/Context.php new file mode 100644 index 0000000000000000000000000000000000000000..cc9534238425635b890cbcbdea4b24d5e1ca5188 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Context.php @@ -0,0 +1,84 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +/** + * Provides information about the Context in which the DocBlock occurs that receives this context. + * + * A DocBlock does not know of its own accord in which namespace it occurs and which namespace aliases are applicable + * for the block of code in which it is in. This information is however necessary to resolve Class names in tags since + * you can provide a short form or make use of namespace aliases. + * + * The phpDocumentor Reflection component knows how to create this class but if you use the DocBlock parser from your + * own application it is possible to generate a Context class using the ContextFactory; this will analyze the file in + * which an associated class resides for its namespace and imports. + * + * @see ContextFactory::createFromClassReflector() + * @see ContextFactory::createForNamespace() + */ +final class Context +{ + /** @var string The current namespace. */ + private $namespace = ''; + + /** @var array List of namespace aliases => Fully Qualified Namespace. */ + private $namespaceAliases = []; + + /** + * Initializes the new context and normalizes all passed namespaces to be in Qualified Namespace Name (QNN) + * format (without a preceding `\`). + * + * @param string $namespace The namespace where this DocBlock resides in. + * @param array $namespaceAliases List of namespace aliases => Fully Qualified Namespace. + */ + public function __construct($namespace, array $namespaceAliases = []) + { + $this->namespace = ('global' !== $namespace && 'default' !== $namespace) + ? trim((string)$namespace, '\\') + : ''; + + foreach ($namespaceAliases as $alias => $fqnn) { + if ($fqnn[0] === '\\') { + $fqnn = substr($fqnn, 1); + } + if ($fqnn[strlen($fqnn) - 1] === '\\') { + $fqnn = substr($fqnn, 0, -1); + } + + $namespaceAliases[$alias] = $fqnn; + } + + $this->namespaceAliases = $namespaceAliases; + } + + /** + * Returns the Qualified Namespace Name (thus without `\` in front) where the associated element is in. + * + * @return string + */ + public function getNamespace() + { + return $this->namespace; + } + + /** + * Returns a list of Qualified Namespace Names (thus without `\` in front) that are imported, the keys represent + * the alias for the imported Namespace. + * + * @return string[] + */ + public function getNamespaceAliases() + { + return $this->namespaceAliases; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..147df6946fcfd1678985e87a12c860c0c660986f --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php @@ -0,0 +1,210 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +/** + * Convenience class to create a Context for DocBlocks when not using the Reflection Component of phpDocumentor. + * + * For a DocBlock to be able to resolve types that use partial namespace names or rely on namespace imports we need to + * provide a bit of context so that the DocBlock can read that and based on it decide how to resolve the types to + * Fully Qualified names. + * + * @see Context for more information. + */ +final class ContextFactory +{ + /** The literal used at the end of a use statement. */ + const T_LITERAL_END_OF_USE = ';'; + + /** The literal used between sets of use statements */ + const T_LITERAL_USE_SEPARATOR = ','; + + /** + * Build a Context given a Class Reflection. + * + * @param \ReflectionClass $reflector + * + * @see Context for more information on Contexts. + * + * @return Context + */ + public function createFromReflector(\Reflector $reflector) + { + if (method_exists($reflector, 'getDeclaringClass')) { + $reflector = $reflector->getDeclaringClass(); + } + + $fileName = $reflector->getFileName(); + $namespace = $reflector->getNamespaceName(); + + if (file_exists($fileName)) { + return $this->createForNamespace($namespace, file_get_contents($fileName)); + } + + return new Context($namespace, []); + } + + /** + * Build a Context for a namespace in the provided file contents. + * + * @param string $namespace It does not matter if a `\` precedes the namespace name, this method first normalizes. + * @param string $fileContents the file's contents to retrieve the aliases from with the given namespace. + * + * @see Context for more information on Contexts. + * + * @return Context + */ + public function createForNamespace($namespace, $fileContents) + { + $namespace = trim($namespace, '\\'); + $useStatements = []; + $currentNamespace = ''; + $tokens = new \ArrayIterator(token_get_all($fileContents)); + + while ($tokens->valid()) { + switch ($tokens->current()[0]) { + case T_NAMESPACE: + $currentNamespace = $this->parseNamespace($tokens); + break; + case T_CLASS: + // Fast-forward the iterator through the class so that any + // T_USE tokens found within are skipped - these are not + // valid namespace use statements so should be ignored. + $braceLevel = 0; + $firstBraceFound = false; + while ($tokens->valid() && ($braceLevel > 0 || !$firstBraceFound)) { + if ($tokens->current() === '{' + || $tokens->current()[0] === T_CURLY_OPEN + || $tokens->current()[0] === T_DOLLAR_OPEN_CURLY_BRACES) { + if (!$firstBraceFound) { + $firstBraceFound = true; + } + $braceLevel++; + } + + if ($tokens->current() === '}') { + $braceLevel--; + } + $tokens->next(); + } + break; + case T_USE: + if ($currentNamespace === $namespace) { + $useStatements = array_merge($useStatements, $this->parseUseStatement($tokens)); + } + break; + } + $tokens->next(); + } + + return new Context($namespace, $useStatements); + } + + /** + * Deduce the name from tokens when we are at the T_NAMESPACE token. + * + * @param \ArrayIterator $tokens + * + * @return string + */ + private function parseNamespace(\ArrayIterator $tokens) + { + // skip to the first string or namespace separator + $this->skipToNextStringOrNamespaceSeparator($tokens); + + $name = ''; + while ($tokens->valid() && ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) + ) { + $name .= $tokens->current()[1]; + $tokens->next(); + } + + return $name; + } + + /** + * Deduce the names of all imports when we are at the T_USE token. + * + * @param \ArrayIterator $tokens + * + * @return string[] + */ + private function parseUseStatement(\ArrayIterator $tokens) + { + $uses = []; + $continue = true; + + while ($continue) { + $this->skipToNextStringOrNamespaceSeparator($tokens); + + list($alias, $fqnn) = $this->extractUseStatement($tokens); + $uses[$alias] = $fqnn; + if ($tokens->current()[0] === self::T_LITERAL_END_OF_USE) { + $continue = false; + } + } + + return $uses; + } + + /** + * Fast-forwards the iterator as longs as we don't encounter a T_STRING or T_NS_SEPARATOR token. + * + * @param \ArrayIterator $tokens + * + * @return void + */ + private function skipToNextStringOrNamespaceSeparator(\ArrayIterator $tokens) + { + while ($tokens->valid() && ($tokens->current()[0] !== T_STRING) && ($tokens->current()[0] !== T_NS_SEPARATOR)) { + $tokens->next(); + } + } + + /** + * Deduce the namespace name and alias of an import when we are at the T_USE token or have not reached the end of + * a USE statement yet. + * + * @param \ArrayIterator $tokens + * + * @return string + */ + private function extractUseStatement(\ArrayIterator $tokens) + { + $result = ['']; + while ($tokens->valid() + && ($tokens->current()[0] !== self::T_LITERAL_USE_SEPARATOR) + && ($tokens->current()[0] !== self::T_LITERAL_END_OF_USE) + ) { + if ($tokens->current()[0] === T_AS) { + $result[] = ''; + } + if ($tokens->current()[0] === T_STRING || $tokens->current()[0] === T_NS_SEPARATOR) { + $result[count($result) - 1] .= $tokens->current()[1]; + } + $tokens->next(); + } + + if (count($result) == 1) { + $backslashPos = strrpos($result[0], '\\'); + + if (false !== $backslashPos) { + $result[] = substr($result[0], $backslashPos + 1); + } else { + $result[] = $result[0]; + } + } + + return array_reverse($result); + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Float_.php b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php new file mode 100644 index 0000000000000000000000000000000000000000..e58d8966e04bd18e9f620838e22399bcb3b526e7 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a Float. + */ +final class Float_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'float'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Integer.php b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php new file mode 100644 index 0000000000000000000000000000000000000000..be4555ef6724057f2d430acdcbf3d4463e325774 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php @@ -0,0 +1,28 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +final class Integer implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'int'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php b/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php new file mode 100644 index 0000000000000000000000000000000000000000..79695f4542fd041c4bac7bb41021e3da3f6d115d --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Mixed.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing an unknown, or mixed, type. + */ +final class Mixed implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'mixed'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Null_.php b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php new file mode 100644 index 0000000000000000000000000000000000000000..203b42271935d7828578ca81a9ba3495125238c4 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing a null value or type. + */ +final class Null_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'null'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Object_.php b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php new file mode 100644 index 0000000000000000000000000000000000000000..b337c71572f7c8417fcd08329d92b93e1ecaf5fe --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php @@ -0,0 +1,70 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Fqsen; +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing an object. + * + * An object can be either typed or untyped. When an object is typed it means that it has an identifier, the FQSEN, + * pointing to an element in PHP. Object types that are untyped do not refer to a specific class but represent objects + * in general. + */ +final class Object_ implements Type +{ + /** @var Fqsen|null */ + private $fqsen; + + /** + * Initializes this object with an optional FQSEN, if not provided this object is considered 'untyped'. + * + * @param Fqsen $fqsen + */ + public function __construct(Fqsen $fqsen = null) + { + if (strpos((string)$fqsen, '::') !== false || strpos((string)$fqsen, '()') !== false) { + throw new \InvalidArgumentException( + 'Object types can only refer to a class, interface or trait but a method, function, constant or ' + . 'property was received: ' . (string)$fqsen + ); + } + + $this->fqsen = $fqsen; + } + + /** + * Returns the FQSEN associated with this object. + * + * @return Fqsen|null + */ + public function getFqsen() + { + return $this->fqsen; + } + + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + if ($this->fqsen) { + return (string)$this->fqsen; + } + + return 'object'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Resource.php b/vendor/phpdocumentor/type-resolver/src/Types/Resource.php new file mode 100644 index 0000000000000000000000000000000000000000..2c2526b7b6c3931dba3840c352856d9f0ae38a8b --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Resource.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'resource' Type. + */ +final class Resource implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'resource'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php new file mode 100644 index 0000000000000000000000000000000000000000..1e2a660299e16fef5546c43db396c8ed96212c87 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'scalar' pseudo-type, which is either a string, integer, float or boolean. + */ +final class Scalar implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'scalar'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Self_.php b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php new file mode 100644 index 0000000000000000000000000000000000000000..1ba3fc5a50ab9967f1fe6e414f0ebf352bae70ea --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php @@ -0,0 +1,33 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'self' type. + * + * Self, as a Type, represents the class in which the associated element was defined. + */ +final class Self_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'self'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Static_.php b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php new file mode 100644 index 0000000000000000000000000000000000000000..9eb67299cb904cded63753140ee2e1b7433a593a --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php @@ -0,0 +1,38 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the 'static' type. + * + * Self, as a Type, represents the class in which the associated element was called. This differs from self as self does + * not take inheritance into account but static means that the return type is always that of the class of the called + * element. + * + * See the documentation on late static binding in the PHP Documentation for more information on the difference between + * static and self. + */ +final class Static_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'static'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/String_.php b/vendor/phpdocumentor/type-resolver/src/Types/String_.php new file mode 100644 index 0000000000000000000000000000000000000000..8db596857d9cbbfe498d7e242024e6a391265d46 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/String_.php @@ -0,0 +1,31 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the type 'string'. + */ +final class String_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'string'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/This.php b/vendor/phpdocumentor/type-resolver/src/Types/This.php new file mode 100644 index 0000000000000000000000000000000000000000..c098a939ba4470469ea71f2e51e70f00ecc647d6 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/This.php @@ -0,0 +1,34 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the '$this' pseudo-type. + * + * $this, as a Type, represents the instance of the class associated with the element as it was called. $this is + * commonly used when documenting fluent interfaces since it represents that the same object is returned. + */ +final class This implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return '$this'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Void_.php b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php new file mode 100644 index 0000000000000000000000000000000000000000..3d1be272c3d8cf46cf96eb08a1734d332dde5648 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php @@ -0,0 +1,34 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use phpDocumentor\Reflection\Type; + +/** + * Value Object representing the pseudo-type 'void'. + * + * Void is generally only used when working with return types as it signifies that the method intentionally does not + * return any value. + */ +final class Void_ implements Type +{ + /** + * Returns a rendered output of the Type as it would be used in a DocBlock. + * + * @return string + */ + public function __toString() + { + return 'void'; + } +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f226f8ed0c3052907d777d0e20ccf0e7323c9129 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/TypeResolverTest.php @@ -0,0 +1,395 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use Mockery as m; +use phpDocumentor\Reflection\Types\Array_; +use phpDocumentor\Reflection\Types\Compound; +use phpDocumentor\Reflection\Types\Context; +use phpDocumentor\Reflection\Types\Object_; + +/** + * @coversDefaultClass phpDocumentor\Reflection\TypeResolver + */ +class TypeResolverTest extends \PHPUnit_Framework_TestCase +{ + /** + * @param string $keyword + * @param string $expectedClass + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Object_ + * + * @dataProvider provideKeywords + */ + public function testResolvingKeywords($keyword, $expectedClass) + { + $fixture = new TypeResolver(); + + $resolvedType = $fixture->resolve($keyword, new Context('')); + + $this->assertInstanceOf($expectedClass, $resolvedType); + } + + /** + * @param string $fqsen + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + * + * @dataProvider provideFqcn + */ + public function testResolvingFQSENs($fqsen) + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve($fqsen, new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame($fqsen, (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingRelativeQSENsBasedOnNamespace() + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve('DocBlock', new Context('phpDocumentor\Reflection')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame('\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingRelativeQSENsBasedOnNamespaceAlias() + { + $fixture = new TypeResolver(); + + /** @var Object_ $resolvedType */ + $resolvedType = $fixture->resolve( + 'm\MockInterface', + new Context('phpDocumentor\Reflection', ['m' => '\Mockery']) + ); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $resolvedType->getFqsen()); + $this->assertSame('\Mockery\MockInterface', (string)$resolvedType); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingTypedArrays() + { + $fixture = new TypeResolver(); + + /** @var Array_ $resolvedType */ + $resolvedType = $fixture->resolve('string[]', new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $resolvedType); + $this->assertSame('string[]', (string)$resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $resolvedType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingNestedTypedArrays() + { + $fixture = new TypeResolver(); + + /** @var Array_ $resolvedType */ + $resolvedType = $fixture->resolve('string[][]', new Context('')); + + /** @var Array_ $childValueType */ + $childValueType = $resolvedType->getValueType(); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $resolvedType); + + $this->assertSame('string[][]', (string)$resolvedType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $childValueType); + + $this->assertSame('string[]', (string)$childValueType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $childValueType->getKeyType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $childValueType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\String_ + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingCompoundTypes() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('string|Reflection\DocBlock', new Context('phpDocumentor')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('string|\phpDocumentor\Reflection\DocBlock', (string)$resolvedType); + + /** @var String $secondType */ + $firstType = $resolvedType->get(0); + + /** @var Object_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Fqsen', $secondType->getFqsen()); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Object_ + * @uses phpDocumentor\Reflection\Fqsen + * @uses phpDocumentor\Reflection\FqsenResolver + */ + public function testResolvingCompoundTypedArrayTypes() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('\stdClass[]|Reflection\DocBlock[]', new Context('phpDocumentor')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('\stdClass[]|\phpDocumentor\Reflection\DocBlock[]', (string)$resolvedType); + + /** @var Array_ $secondType */ + $firstType = $resolvedType->get(0); + + /** @var Array_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $firstType->getValueType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Object_', $secondType->getValueType()); + } + + /** + * This test asserts that the parameter order is correct. + * + * When you pass two arrays separated by the compound operator (i.e. 'integer[]|string[]') then we always split the + * expression in its compound parts and then we parse the types with the array operators. If we were to switch the + * order around then 'integer[]|string[]' would read as an array of string or integer array; which is something + * other than what we intend. + * + * @covers ::__construct + * @covers ::resolve + * @covers :: + * + * @uses phpDocumentor\Reflection\Types\Context + * @uses phpDocumentor\Reflection\Types\Compound + * @uses phpDocumentor\Reflection\Types\Array_ + * @uses phpDocumentor\Reflection\Types\Integer + * @uses phpDocumentor\Reflection\Types\String_ + */ + public function testResolvingCompoundTypesWithTwoArrays() + { + $fixture = new TypeResolver(); + + /** @var Compound $resolvedType */ + $resolvedType = $fixture->resolve('integer[]|string[]', new Context('')); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Compound', $resolvedType); + $this->assertSame('int[]|string[]', (string)$resolvedType); + + /** @var Array_ $firstType */ + $firstType = $resolvedType->get(0); + + /** @var Array_ $secondType */ + $secondType = $resolvedType->get(1); + + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $firstType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Integer', $firstType->getValueType()); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\Array_', $secondType); + $this->assertInstanceOf('phpDocumentor\Reflection\Types\String_', $secondType->getValueType()); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\TypeResolver::resolve + * @uses phpDocumentor\Reflection\TypeResolver:: + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testAddingAKeyword() + { + // Assign + $typeMock = m::mock(Type::class); + + // Act + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', get_class($typeMock)); + + // Assert + $result = $fixture->resolve('mock', new Context('')); + $this->assertInstanceOf(get_class($typeMock), $result); + $this->assertNotSame($typeMock, $result); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\Types\Context + * @expectedException \InvalidArgumentException + */ + public function testAddingAKeywordFailsIfTypeClassDoesNotExist() + { + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', 'IDoNotExist'); + } + + /** + * @covers ::__construct + * @covers ::addKeyword + * @uses phpDocumentor\Reflection\Types\Context + * @expectedException \InvalidArgumentException + */ + public function testAddingAKeywordFailsIfTypeClassDoesNotImplementTypeInterface() + { + $fixture = new TypeResolver(); + $fixture->addKeyword('mock', 'stdClass'); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @uses phpDocumentor\Reflection\Types\Context + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTypeIsEmpty() + { + $fixture = new TypeResolver(); + $fixture->resolve(' ', new Context('')); + } + + /** + * @covers ::__construct + * @covers ::resolve + * @uses phpDocumentor\Reflection\Types\Context + * + * @expectedException \InvalidArgumentException + */ + public function testExceptionIsThrownIfTypeIsNotAString() + { + $fixture = new TypeResolver(); + $fixture->resolve(['a'], new Context('')); + } + + /** + * Returns a list of keywords and expected classes that are created from them. + * + * @return string[][] + */ + public function provideKeywords() + { + return [ + ['string', 'phpDocumentor\Reflection\Types\String_'], + ['int', 'phpDocumentor\Reflection\Types\Integer'], + ['integer', 'phpDocumentor\Reflection\Types\Integer'], + ['float', 'phpDocumentor\Reflection\Types\Float_'], + ['double', 'phpDocumentor\Reflection\Types\Float_'], + ['bool', 'phpDocumentor\Reflection\Types\Boolean'], + ['boolean', 'phpDocumentor\Reflection\Types\Boolean'], + ['resource', 'phpDocumentor\Reflection\Types\Resource'], + ['null', 'phpDocumentor\Reflection\Types\Null_'], + ['callable', 'phpDocumentor\Reflection\Types\Callable_'], + ['callback', 'phpDocumentor\Reflection\Types\Callable_'], + ['array', 'phpDocumentor\Reflection\Types\Array_'], + ['scalar', 'phpDocumentor\Reflection\Types\Scalar'], + ['object', 'phpDocumentor\Reflection\Types\Object_'], + ['mixed', 'phpDocumentor\Reflection\Types\Mixed'], + ['void', 'phpDocumentor\Reflection\Types\Void_'], + ['$this', 'phpDocumentor\Reflection\Types\This'], + ['static', 'phpDocumentor\Reflection\Types\Static_'], + ['self', 'phpDocumentor\Reflection\Types\Self_'], + ]; + } + + /** + * Provides a list of FQSENs to test the resolution patterns with. + * + * @return string[][] + */ + public function provideFqcn() + { + return [ + 'namespace' => ['\phpDocumentor\Reflection'], + 'class' => ['\phpDocumentor\Reflection\DocBlock'], + ]; + } +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php new file mode 100644 index 0000000000000000000000000000000000000000..20d63c959b98bb143449adb8cb605b354d4217ef --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php @@ -0,0 +1,188 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types { + +// Added imports on purpose as mock for the unit tests, please do not remove. + use Mockery as m; + use phpDocumentor\Reflection\DocBlock, + phpDocumentor\Reflection\DocBlock\Tag; + use phpDocumentor; + use \ReflectionClass; // yes, the slash is part of the test + + /** + * @coversDefaultClass \phpDocumentor\Reflection\Types\ContextFactory + * @covers :: + */ + class ContextFactoryTest extends \PHPUnit_Framework_TestCase + { + /** + * @covers ::createFromReflector + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsNamespaceFromClassReflection() + { + $fixture = new ContextFactory(); + $context = $fixture->createFromReflector(new ReflectionClass($this)); + + $this->assertSame(__NAMESPACE__, $context->getNamespace()); + } + + /** + * @covers ::createFromReflector + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsAliasesFromClassReflection() + { + $fixture = new ContextFactory(); + $expected = [ + 'm' => 'Mockery', + 'DocBlock' => 'phpDocumentor\Reflection\DocBlock', + 'Tag' => 'phpDocumentor\Reflection\DocBlock\Tag', + 'phpDocumentor' => 'phpDocumentor', + 'ReflectionClass' => 'ReflectionClass' + ]; + $context = $fixture->createFromReflector(new ReflectionClass($this)); + + $this->assertSame($expected, $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsNamespaceFromProvidedNamespaceAndContent() + { + $fixture = new ContextFactory(); + $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); + + $this->assertSame(__NAMESPACE__, $context->getNamespace()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testReadsAliasesFromProvidedNamespaceAndContent() + { + $fixture = new ContextFactory(); + $expected = [ + 'm' => 'Mockery', + 'DocBlock' => 'phpDocumentor\Reflection\DocBlock', + 'Tag' => 'phpDocumentor\Reflection\DocBlock\Tag', + 'phpDocumentor' => 'phpDocumentor', + 'ReflectionClass' => 'ReflectionClass' + ]; + $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); + + $this->assertSame($expected, $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testTraitUseIsNotDetectedAsNamespaceUse() + { + $php = "createForNamespace('Foo', $php); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createForNamespace + * @uses phpDocumentor\Reflection\Types\Context + */ + public function testAllOpeningBracesAreCheckedWhenSearchingForEndOfClass() + { + $php = 'createForNamespace('Foo', $php); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createFromReflector + */ + public function testEmptyFileName() + { + $fixture = new ContextFactory(); + $context = $fixture->createFromReflector(new \ReflectionClass('stdClass')); + + $this->assertSame([], $context->getNamespaceAliases()); + } + + /** + * @covers ::createFromReflector + */ + public function testEvalDClass() + { + eval(<<createFromReflector(new \ReflectionClass('Foo\Bar')); + + $this->assertSame([], $context->getNamespaceAliases()); + } + } +} + +namespace phpDocumentor\Reflection\Types\Mock { + // the following import should not show in the tests above + use phpDocumentor\Reflection\DocBlock\Description; +} diff --git a/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php new file mode 100644 index 0000000000000000000000000000000000000000..165f415dd3da43c495fa12507863ceafd119b482 --- /dev/null +++ b/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextTest.php @@ -0,0 +1,61 @@ + + * @license http://www.opensource.org/licenses/mit-license.php MIT + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection\Types; + +use Mockery as m; + +/** + * @coversDefaultClass \phpDocumentor\Reflection\Types\Context + */ +class ContextTest extends \PHPUnit_Framework_TestCase +{ + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testProvidesANormalizedNamespace() + { + $fixture = new Context('\My\Space'); + $this->assertSame('My\Space', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testInterpretsNamespaceNamedGlobalAsRootNamespace() + { + $fixture = new Context('global'); + $this->assertSame('', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespace + */ + public function testInterpretsNamespaceNamedDefaultAsRootNamespace() + { + $fixture = new Context('default'); + $this->assertSame('', $fixture->getNamespace()); + } + + /** + * @covers ::__construct + * @covers ::getNamespaceAliases + */ + public function testProvidesNormalizedNamespaceAliases() + { + $fixture = new Context('', ['Space' => '\My\Space']); + $this->assertSame(['Space' => 'My\Space'], $fixture->getNamespaceAliases()); + } +} diff --git a/vendor/phpspec/prophecy/.gitignore b/vendor/phpspec/prophecy/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..88ee1c14c9a54c6e36907e99da00e20f964ac66e --- /dev/null +++ b/vendor/phpspec/prophecy/.gitignore @@ -0,0 +1,5 @@ +*.tgz +*.phar +/composer.lock +/vendor +/phpunit.xml diff --git a/vendor/phpspec/prophecy/.travis.yml b/vendor/phpspec/prophecy/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..a277922bed281231edf38ffd5cbaec223d8f07a2 --- /dev/null +++ b/vendor/phpspec/prophecy/.travis.yml @@ -0,0 +1,39 @@ +language: php + +sudo: false + +cache: + directories: + - $HOME/.composer/cache + +branches: + except: + - /^bugfix\/.*$/ + - /^feature\/.*$/ + - /^optimization\/.*$/ + +matrix: + include: + - php: 5.3 + - php: 5.4 + - php: 5.5 + - php: 5.6 + env: DEPENDENCIES='low' + - php: 5.6 + - php: 7.0 + - php: 7.1 + # Use the newer stack for HHVM as HHVM does not support Precise anymore since a long time and so Precise has an outdated version + - php: hhvm + sudo: required + dist: trusty + group: edge + fast_finish: true + +install: + - export COMPOSER_ROOT_VERSION=dev-master + - if [ "$DEPENDENCIES" != "low" ]; then composer update; fi; + - if [ "$DEPENDENCIES" == "low" ]; then composer update --prefer-lowest; fi; + +script: + - vendor/bin/phpspec run -fpretty -v + - vendor/bin/phpunit diff --git a/vendor/phpspec/prophecy/CHANGES.md b/vendor/phpspec/prophecy/CHANGES.md new file mode 100644 index 0000000000000000000000000000000000000000..996567aab32161d29bdc6a0948933b4820067c62 --- /dev/null +++ b/vendor/phpspec/prophecy/CHANGES.md @@ -0,0 +1,165 @@ +1.7.0 / 2017-03-02 +================== + +* Add full PHP 7.1 Support (thanks @prolic) +* Allow `sebastian/comparator ^2.0` (thanks @sebastianbergmann) +* Allow `sebastian/recursion-context ^3.0` (thanks @sebastianbergmann) +* Allow `\Error` instances in `ThrowPromise` (thanks @jameshalsall) +* Support `phpspec/phpspect ^3.2` (thanks @Sam-Burns) +* Fix failing builds (thanks @Sam-Burns) + +1.6.2 / 2016-11-21 +================== + +* Added support for detecting @method on interfaces that the class itself implements, or when the stubbed class is an interface itself (thanks @Seldaek) +* Added support for sebastian/recursion-context 2 (thanks @sebastianbergmann) +* Added testing on PHP 7.1 on Travis (thanks @danizord) +* Fixed the usage of the phpunit comparator (thanks @Anyqax) + +1.6.1 / 2016-06-07 +================== + + * Ignored empty method names in invalid `@method` phpdoc + * Fixed the mocking of SplFileObject + * Added compatibility with phpdocumentor/reflection-docblock 3 + +1.6.0 / 2016-02-15 +================== + + * Add Variadics support (thanks @pamil) + * Add ProphecyComparator for comparing objects that need revealing (thanks @jon-acker) + * Add ApproximateValueToken (thanks @dantleech) + * Add support for 'self' and 'parent' return type (thanks @bendavies) + * Add __invoke to allowed reflectable methods list (thanks @ftrrtf) + * Updated ExportUtil to reflect the latest changes by Sebastian (thanks @jakari) + * Specify the required php version for composer (thanks @jakzal) + * Exclude 'args' in the generated backtrace (thanks @oradwell) + * Fix code generation for scalar parameters (thanks @trowski) + * Fix missing sprintf in InvalidArgumentException __construct call (thanks @emmanuelballery) + * Fix phpdoc for magic methods (thanks @Tobion) + * Fix PhpDoc for interfaces usage (thanks @ImmRanneft) + * Prevent final methods from being manually extended (thanks @kamioftea) + * Enhance exception for invalid argument to ThrowPromise (thanks @Tobion) + +1.5.0 / 2015-04-27 +================== + + * Add support for PHP7 scalar type hints (thanks @trowski) + * Add support for PHP7 return types (thanks @trowski) + * Update internal test suite to support PHP7 + +1.4.1 / 2015-04-27 +================== + + * Fixed bug in closure-based argument tokens (#181) + +1.4.0 / 2015-03-27 +================== + + * Fixed errors in return type phpdocs (thanks @sobit) + * Fixed stringifying of hash containing one value (thanks @avant1) + * Improved clarity of method call expectation exception (thanks @dantleech) + * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart) + * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty) + * Support for mocking classes with methods that return references (thanks @edsonmedina) + * Improved object comparison (thanks @whatthejeff) + * Adopted '^' in composer dependencies (thanks @GrahamCampbell) + * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff) + * Magic methods are now filtered for keywords (thanks @seagoj) + * More readable errors for failure when expecting single calls (thanks @dantleech) + +1.3.1 / 2014-11-17 +================== + + * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()` + +1.3.0 / 2014-11-14 +================== + + * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()` + * Fix HHVM compatibility + * Remove dead code (thanks @stof) + * Add support for DirectoryIterators (thanks @shanethehat) + +1.2.0 / 2014-07-18 +================== + + * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz) + * Fixed a segfault appearing in some cases (thanks @dmoreaulf) + * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener) + * Added support for internal classes using keywords as method names (thanks @milan) + * Added IdenticalValueToken and Argument::is (thanks @florianv) + * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff) + +1.1.2 / 2014-01-24 +================== + + * Spy automatically promotes spied method call to an expected one + +1.1.1 / 2014-01-15 +================== + + * Added support for HHVM + +1.1.0 / 2014-01-01 +================== + + * Changed the generated class names to use a static counter instead of a random number + * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein) + * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein) + * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty) + * Added support for properties in ObjectStateToken (thanks @adrienbrault) + * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty) + * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault) + * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein) + * Added StringContainToken and Argument::containingString() (thanks @peterjmit) + * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty) + * Fixed the comparison of objects in ExactValuetoken (thanks @sstok) + * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled`` + +1.0.4 / 2013-08-10 +================== + + * Better randomness for generated class names (thanks @sstok) + * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok) + * Add support for old-style (method name === class name) constructors (thanks @l310 for report) + +1.0.3 / 2013-07-04 +================== + + * Support callable typehints (thanks @stof) + * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli) + * New ArrayEntryToken (thanks @kagux) + +1.0.2 / 2013-05-19 +================== + + * Logical `AND` token added (thanks @kagux) + * Logical `NOT` token added (thanks @kagux) + * Add support for setting custom constructor arguments + * Properly stringify hashes + * Record calls that throw exceptions + * Migrate spec suite to PhpSpec 2.0 + +1.0.1 / 2013-04-30 +================== + + * Fix broken UnexpectedCallException message + * Trim AggregateException message + +1.0.0 / 2013-04-29 +================== + + * Improve exception messages + +1.0.0-BETA2 / 2013-04-03 +======================== + + * Add more debug information to CallTimes and Call prediction exception messages + * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium) + * Fix some typos in the exception messages (thanks @pborreli) + +1.0.0-BETA1 / 2013-03-25 +======================== + + * Initial release diff --git a/vendor/phpspec/prophecy/CONTRIBUTING.md b/vendor/phpspec/prophecy/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..4a8169d081ef3064d08a6e70a3c1fc7427e0a78a --- /dev/null +++ b/vendor/phpspec/prophecy/CONTRIBUTING.md @@ -0,0 +1,22 @@ +Contributing +------------ + +Prophecy is an open source, community-driven project. If you'd like to contribute, +feel free to do this, but remember to follow these few simple rules: + +- Make your feature addition or bug fix, +- Add either specs or examples for any changes you're making (bugfixes or additions) + (please look into `spec/` folder for some examples). This is important so we don't break + it in a future version unintentionally, +- Commit your code, but do not mess with `CHANGES.md`, + +Running tests +------------- + +Make sure that you don't break anything with your changes by running: + +```bash +$> composer install --prefer-dist +$> vendor/bin/phpspec run +$> vendor/bin/phpunit +``` diff --git a/vendor/phpspec/prophecy/LICENSE b/vendor/phpspec/prophecy/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..c8b364711a50e5bbb07f2f046411138645cb8008 --- /dev/null +++ b/vendor/phpspec/prophecy/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2013 Konstantin Kudryashov + Marcello Duarte + +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/phpspec/prophecy/README.md b/vendor/phpspec/prophecy/README.md new file mode 100644 index 0000000000000000000000000000000000000000..65ec16c4fc300e7d0c6feed75e1a2eaf66dc66f1 --- /dev/null +++ b/vendor/phpspec/prophecy/README.md @@ -0,0 +1,391 @@ +# Prophecy + +[![Stable release](https://poser.pugx.org/phpspec/prophecy/version.svg)](https://packagist.org/packages/phpspec/prophecy) +[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy) + +Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking +framework. Though initially it was created to fulfil phpspec2 needs, it is flexible +enough to be used inside any testing framework out there with minimal effort. + +## A simple example + +```php +prophet->prophesize('App\Security\Hasher'); + $user = new App\Entity\User($hasher->reveal()); + + $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass'); + + $user->setPassword('qwerty'); + + $this->assertEquals('hashed_pass', $user->getPassword()); + } + + protected function setup() + { + $this->prophet = new \Prophecy\Prophet; + } + + protected function tearDown() + { + $this->prophet->checkPredictions(); + } +} +``` + +## Installation + +### Prerequisites + +Prophecy requires PHP 5.3.3 or greater. + +### Setup through composer + +First, add Prophecy to the list of dependencies inside your `composer.json`: + +```json +{ + "require-dev": { + "phpspec/prophecy": "~1.0" + } +} +``` + +Then simply install it with composer: + +```bash +$> composer install --prefer-dist +``` + +You can read more about Composer on its [official webpage](http://getcomposer.org). + +## How to use it + +First of all, in Prophecy every word has a logical meaning, even the name of the library +itself (Prophecy). When you start feeling that, you'll become very fluid with this +tool. + +For example, Prophecy has been named that way because it concentrates on describing the future +behavior of objects with very limited knowledge about them. But as with any other prophecy, +those object prophecies can't create themselves - there should be a Prophet: + +```php +$prophet = new Prophecy\Prophet; +``` + +The Prophet creates prophecies by *prophesizing* them: + +```php +$prophecy = $prophet->prophesize(); +``` + +The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes, +that's your specific object prophecy, which describes how your object would behave +in the near future. But first, you need to specify which object you're talking about, +right? + +```php +$prophecy->willExtend('stdClass'); +$prophecy->willImplement('SessionHandlerInterface'); +``` + +There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells +object prophecy that our object should extend specific class, the second one says that +it should implement some interface. Obviously, objects in PHP can implement multiple +interfaces, but extend only one parent class. + +### Dummies + +Ok, now we have our object prophecy. What can we do with it? First of all, we can get +our object *dummy* by revealing its prophecy: + +```php +$dummy = $prophecy->reveal(); +``` + +The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend +and/or implement preset classes/interfaces by overriding all their public methods. The key +point about dummies is that they do not hold any logic - they just do nothing. Any method +of the dummy will always return `null` and the dummy will never throw any exceptions. +Dummy is your friend if you don't care about the actual behavior of this double and just need +a token object to satisfy a method typehint. + +You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still +assigned to `$prophecy` variable and in order to manipulate with your expectations, you +should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your +prophecy. + +### Stubs + +Ok, now we know how to create basic prophecies and reveal dummies from them. That's +awesome if we don't care about our _doubles_ (objects that reflect originals) +interactions. If we do, we need to use *stubs* or *mocks*. + +A stub is an object double, which doesn't have any expectations about the object behavior, +but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic, +but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called +method signature does different things (has logic). To create stubs in Prophecy: + +```php +$prophecy->read('123')->willReturn('value'); +``` + +Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this +call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific +method with arguments prophecy. Method prophecies give you the ability to create method +promises or predictions. We'll talk about method predictions later in the _Mocks_ section. + +#### Promises + +Promises are logical blocks, that represent your fictional methods in prophecy terms +and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method. +As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple +shortcut to: + +```php +$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value'))); +``` + +This promise will cause any call to our double's `read()` method with exactly one +argument - `'123'` to always return `'value'`. But that's only for this +promise, there's plenty others you can use: + +- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call +- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call +- `ThrowPromise` or `->willThrow` - causes the method to throw specific exception +- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic + +Keep in mind, that you can always add even more promises by implementing +`Prophecy\Promise\PromiseInterface`. + +#### Method prophecies idempotency + +Prophecy enforces same method prophecies and, as a consequence, same promises and +predictions for the same method calls with the same arguments. This means: + +```php +$methodProphecy1 = $prophecy->read('123'); +$methodProphecy2 = $prophecy->read('123'); +$methodProphecy3 = $prophecy->read('321'); + +$methodProphecy1 === $methodProphecy2; +$methodProphecy1 !== $methodProphecy3; +``` + +That's interesting, right? Now you might ask me how would you define more complex +behaviors where some method call changes behavior of others. In PHPUnit or Mockery +you do that by predicting how many times your method will be called. In Prophecy, +you'll use promises for that: + +```php +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName('everzet')->will(function () { + $this->getName()->willReturn('everzet'); +}); + +// For PHP 5.3 +$user->setName('everzet')->will(function ($args, $user) { + $user->getName()->willReturn('everzet'); +}); + +// Or +$user->setName('everzet')->will(function ($args) use ($user) { + $user->getName()->willReturn('everzet'); +}); +``` + +And now it doesn't matter how many times or in which order your methods are called. +What matters is their behaviors and how well you faked it. + +#### Arguments wildcarding + +The previous example is awesome (at least I hope it is for you), but that's not +optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better +way? In fact there is, but it involves understanding what this `'everzet'` +actually is. + +You see, even if method arguments used during method prophecy creation look +like simple method arguments, in reality they are not. They are argument token +wildcards. As a matter of fact, `->setName('everzet')` looks like a simple call just +because Prophecy automatically transforms it under the hood into: + +```php +$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet')); +``` + +Those argument tokens are simple PHP classes, that implement +`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments +with your expectations. And yes, those classnames are damn big. That's why there's a +shortcut class `Prophecy\Argument`, which you can use to create tokens like that: + +```php +use Prophecy\Argument; + +$user->setName(Argument::exact('everzet')); +``` + +`ExactValueToken` is not very useful in our case as it forced us to hardcode the username. +That's why Prophecy comes bundled with a bunch of other tokens: + +- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value +- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value +- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or + classname +- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns + a specific value +- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback +- `AnyValueToken` or `Argument::any()` - matches any argument +- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature +- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value + +And you can add even more by implementing `TokenInterface` with your own custom classes. + +So, let's refactor our initial `{set,get}Name()` logic with argument tokens: + +```php +use Prophecy\Argument; + +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName(Argument::type('string'))->will(function ($args) { + $this->getName()->willReturn($args[0]); +}); + +// For PHP 5.3 +$user->setName(Argument::type('string'))->will(function ($args, $user) { + $user->getName()->willReturn($args[0]); +}); + +// Or +$user->setName(Argument::type('string'))->will(function ($args) use ($user) { + $user->getName()->willReturn($args[0]); +}); +``` + +That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it. +We've just described how our stub object should behave, even though the original object could have +no behavior whatsoever. + +One last bit about arguments now. You might ask, what happens in case of: + +```php +use Prophecy\Argument; + +$user->getName()->willReturn(null); + +// For PHP 5.4 +$user->setName(Argument::type('string'))->will(function ($args) { + $this->getName()->willReturn($args[0]); +}); + +// For PHP 5.3 +$user->setName(Argument::type('string'))->will(function ($args, $user) { + $user->getName()->willReturn($args[0]); +}); + +// Or +$user->setName(Argument::type('string'))->will(function ($args) use ($user) { + $user->getName()->willReturn($args[0]); +}); + +$user->setName(Argument::any())->will(function () { +}); +``` + +Nothing. Your stub will continue behaving the way it did before. That's because of how +arguments wildcarding works. Every argument token type has a different score level, which +wildcard then uses to calculate the final arguments match score and use the method prophecy +promise that has the highest score. In this case, `Argument::type()` in case of success +scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first +`setName()` method prophecy and its promise. The simple rule of thumb - more precise token +always wins. + +#### Getting stub objects + +Ok, now we know how to define our prophecy method promises, let's get our stub from +it: + +```php +$stub = $prophecy->reveal(); +``` + +As you might see, the only difference between how we get dummies and stubs is that with +stubs we describe every object conversation instead of just agreeing with `null` returns +(object being *dummy*). As a matter of fact, after you define your first promise +(method call), Prophecy will force you to define all the communications - it throws +the `UnexpectedCallException` for any call you didn't describe with object prophecy before +calling it on a stub. + +### Mocks + +Now we know how to define doubles without behavior (dummies) and doubles with behavior, but +no expectations (stubs). What's left is doubles for which we have some expectations. These +are called mocks and in Prophecy they look almost exactly the same as stubs, except that +they define *predictions* instead of *promises* on method prophecies: + +```php +$entityManager->flush()->shouldBeCalled(); +``` + +#### Predictions + +The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy. +Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime +of your doubles, Prophecy records every single call you're making against it inside your +code. After that, Prophecy can use this collected information to check if it matches defined +predictions. You can assign predictions to method prophecies using the +`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact, +the `shouldBeCalled()` method we used earlier is just a shortcut to: + +```php +$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction()); +``` + +It checks if your method of interest (that matches both the method name and the arguments wildcard) +was called 1 or more times. If the prediction failed then it throws an exception. When does this +check happen? Whenever you call `checkPredictions()` on the main Prophet object: + +```php +$prophet->checkPredictions(); +``` + +In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions +are defined, it would do nothing. So it won't harm to call it after every test. + +There are plenty more predictions you can play with: + +- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times +- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called +- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called + `$count` times +- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback + +Of course, you can always create your own custom prediction any time by implementing +`PredictionInterface`. + +### Spies + +The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous +section, Prophecy records every call made during the double's entire lifetime. This means +you don't need to record predictions in order to check them. You can also do it +manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method: + +```php +$em = $prophet->prophesize('Doctrine\ORM\EntityManager'); + +$controller->createUser($em->reveal()); + +$em->flush()->shouldHaveBeenCalled(); +``` + +Such manipulation with doubles is called spying. And with Prophecy it just works. diff --git a/vendor/phpspec/prophecy/composer.json b/vendor/phpspec/prophecy/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..7918065f0991e80c3f8811047c30406d91872462 --- /dev/null +++ b/vendor/phpspec/prophecy/composer.json @@ -0,0 +1,50 @@ +{ + "name": "phpspec/prophecy", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "keywords": ["Mock", "Stub", "Dummy", "Double", "Fake", "Spy"], + "homepage": "https://github.com/phpspec/prophecy", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + + "require": { + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "doctrine/instantiator": "^1.0.2", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + + "autoload-dev": { + "psr-4": { + "Fixtures\\Prophecy\\": "fixtures" + } + }, + + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + } +} diff --git a/vendor/phpspec/prophecy/fixtures/EmptyClass.php b/vendor/phpspec/prophecy/fixtures/EmptyClass.php new file mode 100644 index 0000000000000000000000000000000000000000..4db3b50ab11d089acd06f4ed5f1f4bce701347d5 --- /dev/null +++ b/vendor/phpspec/prophecy/fixtures/EmptyClass.php @@ -0,0 +1,7 @@ + + + + + + + + + + tests + + + + + + ./src/ + + + diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..b82f1b893b2d75e155e9b8951a8c30c97cd6d627 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/ArgumentsWildcardSpec.php @@ -0,0 +1,128 @@ +beConstructedWith(array(42, 'zet', $object)); + + $class = get_class($object->getWrappedObject()); + $hash = spl_object_hash($object->getWrappedObject()); + + $this->__toString()->shouldReturn("exact(42), exact(\"zet\"), exact($class:$hash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } + + function it_generates_string_representation_from_all_tokens_imploded( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->__toString()->willReturn('token_1'); + $token2->__toString()->willReturn('token_2'); + $token3->__toString()->willReturn('token_3'); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->__toString()->shouldReturn('token_1, token_2, token_3'); + } + + function it_exposes_list_of_tokens(TokenInterface $token) + { + $this->beConstructedWith(array($token)); + + $this->getTokens()->shouldReturn(array($token)); + } + + function it_returns_score_of_1_if_there_are_no_tokens_and_arguments() + { + $this->beConstructedWith(array()); + + $this->scoreArguments(array())->shouldReturn(1); + } + + function it_should_return_match_score_based_on_all_tokens_score( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(18); + } + + function it_returns_false_if_there_is_less_arguments_than_tokens( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument(null)->willReturn(false); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2))->shouldReturn(false); + } + + function it_returns_false_if_there_is_less_tokens_than_arguments( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(5); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj, 4))->shouldReturn(false); + } + + function it_should_return_false_if_one_of_the_tokens_returns_false( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + $token2->scoreArgument(2)->willReturn(false); + $token2->isLast()->willReturn(false); + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(false); + } + + function it_should_calculate_score_until_last_token( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->scoreArgument('one')->willReturn(3); + $token1->isLast()->willReturn(false); + + $token2->scoreArgument(2)->willReturn(7); + $token2->isLast()->willReturn(true); + + $token3->scoreArgument($obj = new \stdClass())->willReturn(10); + $token3->isLast()->willReturn(false); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..a43e923cf37fa39fa0cb2f3a094a5d7379ea1807 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValueTokenSpec.php @@ -0,0 +1,28 @@ +shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function its_string_representation_is_star() + { + $this->__toString()->shouldReturn('*'); + } + + function it_scores_any_argument_as_3() + { + $this->scoreArgument(42)->shouldReturn(3); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c29076f59359957ab97f92415ce0cbdf9640d832 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/AnyValuesTokenSpec.php @@ -0,0 +1,28 @@ +shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_last() + { + $this->shouldBeLast(); + } + + function its_string_representation_is_star_with_followup() + { + $this->__toString()->shouldReturn('* [, ...]'); + } + + function it_scores_any_argument_as_2() + { + $this->scoreArgument(42)->shouldReturn(2); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..8799d6d519684d233699762a438e0a136b6ec100 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ApproximateValueTokenSpec.php @@ -0,0 +1,55 @@ +beConstructedWith(10.12345678, 4); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\ApproximateValueToken'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_10_if_rounded_argument_matches_rounded_value() + { + $this->scoreArgument(10.12345)->shouldReturn(10); + } + + function it_does_not_score_if_rounded_argument_does_not_match_rounded_value() + { + $this->scoreArgument(10.1234)->shouldReturn(false); + } + + function it_uses_a_default_precision_of_zero() + { + $this->beConstructedWith(10.7); + $this->scoreArgument(11.4)->shouldReturn(10); + } + + function it_does_not_score_if_rounded_argument_is_not_numeric() + { + $this->scoreArgument('hello')->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldBe('≅10.1235'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..cc81fe01a4e89d6bb73d00ead25160a9107e6d73 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayCountTokenSpec.php @@ -0,0 +1,58 @@ +beConstructedWith(2); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_6_if_argument_array_has_proper_count() + { + $this->scoreArgument(array(1,2))->shouldReturn(6); + } + + function it_scores_6_if_argument_countable_object_has_proper_count(\Countable $countable) + { + $countable->count()->willReturn(2); + $this->scoreArgument($countable)->shouldReturn(6); + } + + function it_does_not_score_if_argument_is_neither_array_nor_countable_object() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(5)->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_if_argument_array_has_wrong_count() + { + $this->scoreArgument(array(1))->shouldReturn(false); + } + + function it_does_not_score_if_argument_countable_object_has_wrong_count(\Countable $countable) + { + $countable->count()->willReturn(3); + $this->scoreArgument($countable)->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldBe('count(2)'); + } + +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..632118aebb0507f5c7b319a4fb6b953c5f66cc65 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEntryTokenSpec.php @@ -0,0 +1,202 @@ +beConstructedWith($key, $value); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_key_and_value($key, $value) + { + $this->getKey()->shouldBe($key); + $this->getValue()->shouldBe($value); + } + + function its_string_representation_tells_that_its_an_array_containing_the_key_value_pair($key, $value) + { + $key->__toString()->willReturn('key'); + $value->__toString()->willReturn('value'); + $this->__toString()->shouldBe('[..., key => value, ...]'); + } + + function it_wraps_non_token_value_into_ExactValueToken(TokenInterface $key, \stdClass $object) + { + $this->beConstructedWith($key, $object); + $this->getValue()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); + } + + function it_wraps_non_token_key_into_ExactValueToken(\stdClass $object, TokenInterface $value) + { + $this->beConstructedWith($object, $value); + $this->getKey()->shouldHaveType('\Prophecy\Argument\Token\ExactValueToken'); + } + + function it_scores_array_half_of_combined_scores_from_key_and_value_tokens($key, $value) + { + $key->scoreArgument('key')->willReturn(4); + $value->scoreArgument('value')->willReturn(6); + $this->scoreArgument(array('key'=>'value'))->shouldBe(5); + } + + function it_scores_traversable_object_half_of_combined_scores_from_key_and_value_tokens( + TokenInterface $key, + TokenInterface $value, + \Iterator $object + ) { + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $key->scoreArgument('key')->willReturn(6); + $value->scoreArgument('value')->willReturn(2); + $this->scoreArgument($object)->shouldBe(4); + } + + function it_throws_exception_during_scoring_of_array_accessible_object_if_key_is_not_ExactValueToken( + TokenInterface $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $key->__toString()->willReturn('any_token'); + $this->beConstructedWith($key,$value); + $errorMessage = 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. + 'But you used `any_token`.'; + $this->shouldThrow(new InvalidArgumentException($errorMessage))->duringScoreArgument($object); + } + + function it_scores_array_accessible_object_half_of_combined_scores_from_key_and_value_tokens( + ExactValueToken $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(true); + $object->offsetGet('key')->willReturn('value'); + $key->getValue()->willReturn('key'); + $key->scoreArgument('key')->willReturn(3); + $value->scoreArgument('value')->willReturn(1); + $this->scoreArgument($object)->shouldBe(2); + } + + function it_accepts_any_key_token_type_to_score_object_that_is_both_traversable_and_array_accessible( + TokenInterface $key, + TokenInterface $value, + \ArrayIterator $object + ) { + $this->beConstructedWith($key, $value); + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $this->shouldNotThrow(new InvalidArgumentException)->duringScoreArgument($object); + } + + function it_does_not_score_if_argument_is_neither_array_nor_traversable_nor_array_accessible() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_empty_array() + { + $this->scoreArgument(array())->shouldBe(false); + } + + function it_does_not_score_array_if_key_and_value_tokens_do_not_score_same_entry($key, $value) + { + $argument = array(1 => 'foo', 2 => 'bar'); + $key->scoreArgument(1)->willReturn(true); + $key->scoreArgument(2)->willReturn(false); + $value->scoreArgument('foo')->willReturn(false); + $value->scoreArgument('bar')->willReturn(true); + $this->scoreArgument($argument)->shouldBe(false); + } + + function it_does_not_score_traversable_object_without_entries(\Iterator $object) + { + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(false); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_traversable_object_if_key_and_value_tokens_do_not_score_same_entry( + TokenInterface $key, + TokenInterface $value, + \Iterator $object + ) { + $object->current()->willReturn('foo'); + $object->current()->will(function () use ($object) { + $object->valid()->willReturn(false); + + return 'bar'; + }); + $object->key()->willReturn(1); + $object->key()->willReturn(2); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $key->scoreArgument(1)->willReturn(true); + $key->scoreArgument(2)->willReturn(false); + $value->scoreArgument('foo')->willReturn(false); + $value->scoreArgument('bar')->willReturn(true); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_array_accessible_object_if_it_has_no_offset_with_key_token_value( + ExactValueToken $key, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(false); + $key->getValue()->willReturn('key'); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry( + ExactValueToken $key, + TokenInterface $value, + \ArrayAccess $object + ) { + $object->offsetExists('key')->willReturn(true); + $object->offsetGet('key')->willReturn('value'); + $key->getValue()->willReturn('key'); + $value->scoreArgument('value')->willReturn(false); + $key->scoreArgument('key')->willReturn(true); + $this->scoreArgument($object)->shouldBe(false); + } + + function its_score_is_capped_at_8($key, $value) + { + $key->scoreArgument('key')->willReturn(10); + $value->scoreArgument('value')->willReturn(10); + $this->scoreArgument(array('key'=>'value'))->shouldBe(8); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..e57ff8cd4a3e046e2069122cafc81c51c03f4d24 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ArrayEveryEntryTokenSpec.php @@ -0,0 +1,96 @@ +beConstructedWith($value); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_value($value) + { + $this->getValue()->shouldBe($value); + } + + function its_string_representation_tells_that_its_an_array_containing_only_value($value) + { + $value->__toString()->willReturn('value'); + $this->__toString()->shouldBe('[value, ..., value]'); + } + + function it_wraps_non_token_value_into_ExactValueToken(\stdClass $stdClass) + { + $this->beConstructedWith($stdClass); + $this->getValue()->shouldHaveType('Prophecy\Argument\Token\ExactValueToken'); + } + + function it_does_not_score_if_argument_is_neither_array_nor_traversable() + { + $this->scoreArgument('string')->shouldBe(false); + $this->scoreArgument(new \stdClass)->shouldBe(false); + } + + function it_does_not_score_empty_array() + { + $this->scoreArgument(array())->shouldBe(false); + } + + function it_does_not_score_traversable_object_without_entries(\Iterator $object) + { + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(false); + $this->scoreArgument($object)->shouldBe(false); + } + + function it_scores_avg_of_scores_from_value_tokens($value) + { + $value->scoreArgument('value1')->willReturn(6); + $value->scoreArgument('value2')->willReturn(3); + $this->scoreArgument(array('value1', 'value2'))->shouldBe(4.5); + } + + function it_scores_false_if_entry_scores_false($value) + { + $value->scoreArgument('value1')->willReturn(6); + $value->scoreArgument('value2')->willReturn(false); + $this->scoreArgument(array('value1', 'value2'))->shouldBe(false); + } + + function it_does_not_score_array_keys($value) + { + $value->scoreArgument('value')->willReturn(6); + $value->scoreArgument('key')->shouldNotBeCalled(0); + $this->scoreArgument(array('key' => 'value'))->shouldBe(6); + } + + function it_scores_traversable_object_from_value_token(TokenInterface $value, \Iterator $object) + { + $object->current()->will(function ($args, $object) { + $object->valid()->willReturn(false); + + return 'value'; + }); + $object->key()->willReturn('key'); + $object->rewind()->willReturn(null); + $object->next()->willReturn(null); + $object->valid()->willReturn(true); + $value->scoreArgument('value')->willReturn(2); + $this->scoreArgument($object)->shouldBe(2); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..4395bf097de783db911d8896b1a046e9dcd3e325 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/CallbackTokenSpec.php @@ -0,0 +1,42 @@ +beConstructedWith('get_class'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_7_if_argument_matches_callback() + { + $this->beConstructedWith(function ($argument) { return 2 === $argument; }); + + $this->scoreArgument(2)->shouldReturn(7); + } + + function it_does_not_scores_if_argument_does_not_match_callback() + { + $this->beConstructedWith(function ($argument) { return 2 === $argument; }); + + $this->scoreArgument(5)->shouldReturn(false); + } + + function its_string_representation_should_tell_that_its_callback() + { + $this->__toString()->shouldReturn('callback()'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..14322f8290bd8695c7b3742f2efcd7900e5b0b20 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php @@ -0,0 +1,152 @@ +beConstructedWith(42); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_holds_value() + { + $this->getValue()->shouldReturn(42); + } + + function it_scores_10_if_value_is_equal_to_argument() + { + $this->scoreArgument(42)->shouldReturn(10); + $this->scoreArgument('42')->shouldReturn(10); + } + + function it_scores_10_if_value_is_an_object_and_equal_to_argument() + { + $value = new \DateTime(); + $value2 = clone $value; + + $this->beConstructedWith($value); + $this->scoreArgument($value2)->shouldReturn(10); + } + + function it_does_not_scores_if_value_is_not_equal_to_argument() + { + $this->scoreArgument(50)->shouldReturn(false); + $this->scoreArgument(new \stdClass())->shouldReturn(false); + } + + function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument() + { + $value = new ExactValueTokenFixtureB('ABC'); + $value2 = new ExactValueTokenFixtureB('CBA'); + + $this->beConstructedWith($value); + $this->scoreArgument($value2)->shouldReturn(false); + } + + function it_does_not_scores_if_value_type_and_is_not_equal_to_argument() + { + $this->beConstructedWith(false); + $this->scoreArgument(0)->shouldReturn(false); + } + + function it_generates_proper_string_representation_for_integer() + { + $this->beConstructedWith(42); + $this->__toString()->shouldReturn('exact(42)'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->beConstructedWith('some string'); + $this->__toString()->shouldReturn('exact("some string")'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->beConstructedWith("some\nstring"); + $this->__toString()->shouldReturn('exact("some\\nstring")'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->beConstructedWith(42.3); + $this->__toString()->shouldReturn('exact(42.3)'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->beConstructedWith(true); + $this->__toString()->shouldReturn('exact(true)'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->beConstructedWith(false); + $this->__toString()->shouldReturn('exact(false)'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->beConstructedWith(null); + $this->__toString()->shouldReturn('exact(null)'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->beConstructedWith(array()); + $this->__toString()->shouldReturn('exact([])'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->beConstructedWith(array('zet', 42)); + $this->__toString()->shouldReturn('exact(["zet", 42])'); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->beConstructedWith($resource); + $this->__toString()->shouldReturn('exact(stream:'.$resource.')'); + } + + function it_generates_proper_string_representation_for_object(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->beConstructedWith($object); + $this->__toString()->shouldReturn("exact($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } +} + +class ExactValueTokenFixtureA +{ + public $errors; +} + +class ExactValueTokenFixtureB extends ExactValueTokenFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..00c3a2157fc099beaf9db3c35600bd3cf8f85369 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/IdenticalValueTokenSpec.php @@ -0,0 +1,152 @@ +beConstructedWith(42); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\IdenticalValueToken'); + } + + function it_scores_11_if_string_value_is_identical_to_argument() + { + $this->beConstructedWith('foo'); + $this->scoreArgument('foo')->shouldReturn(11); + } + + function it_scores_11_if_boolean_value_is_identical_to_argument() + { + $this->beConstructedWith(false); + $this->scoreArgument(false)->shouldReturn(11); + } + + function it_scores_11_if_integer_value_is_identical_to_argument() + { + $this->beConstructedWith(31); + $this->scoreArgument(31)->shouldReturn(11); + } + + function it_scores_11_if_float_value_is_identical_to_argument() + { + $this->beConstructedWith(31.12); + $this->scoreArgument(31.12)->shouldReturn(11); + } + + function it_scores_11_if_array_value_is_identical_to_argument() + { + $this->beConstructedWith(array('foo' => 'bar')); + $this->scoreArgument(array('foo' => 'bar'))->shouldReturn(11); + } + + function it_scores_11_if_object_value_is_identical_to_argument() + { + $object = new \stdClass(); + + $this->beConstructedWith($object); + $this->scoreArgument($object)->shouldReturn(11); + } + + function it_scores_false_if_value_is_not_identical_to_argument() + { + $this->beConstructedWith(new \stdClass()); + $this->scoreArgument('foo')->shouldReturn(false); + } + + function it_scores_false_if_object_value_is_not_the_same_instance_than_argument() + { + $this->beConstructedWith(new \stdClass()); + $this->scoreArgument(new \stdClass())->shouldReturn(false); + } + + function it_scores_false_if_integer_value_is_not_identical_to_boolean_argument() + { + $this->beConstructedWith(1); + $this->scoreArgument(true)->shouldReturn(false); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_generates_proper_string_representation_for_integer() + { + $this->beConstructedWith(42); + $this->__toString()->shouldReturn('identical(42)'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->beConstructedWith('some string'); + $this->__toString()->shouldReturn('identical("some string")'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->beConstructedWith("some\nstring"); + $this->__toString()->shouldReturn('identical("some\\nstring")'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->beConstructedWith(42.3); + $this->__toString()->shouldReturn('identical(42.3)'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->beConstructedWith(true); + $this->__toString()->shouldReturn('identical(true)'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->beConstructedWith(false); + $this->__toString()->shouldReturn('identical(false)'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->beConstructedWith(null); + $this->__toString()->shouldReturn('identical(null)'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->beConstructedWith(array()); + $this->__toString()->shouldReturn('identical([])'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->beConstructedWith(array('zet', 42)); + $this->__toString()->shouldReturn('identical(["zet", 42])'); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->beConstructedWith($resource); + $this->__toString()->shouldReturn('identical(stream:'.$resource.')'); + } + + function it_generates_proper_string_representation_for_object($object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->beConstructedWith($object); + $this->__toString()->shouldReturn("identical($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))"); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..a79acf4cc6a1f84f6e1b56404e4f3e8abdaf4a20 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalAndTokenSpec.php @@ -0,0 +1,69 @@ +beConstructedWith(array()); + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->beConstructedWith(array()); + $this->shouldNotBeLast(); + } + + function it_generates_string_representation_from_all_tokens_imploded( + TokenInterface $token1, + TokenInterface $token2, + TokenInterface $token3 + ) { + $token1->__toString()->willReturn('token_1'); + $token2->__toString()->willReturn('token_2'); + $token3->__toString()->willReturn('token_3'); + + $this->beConstructedWith(array($token1, $token2, $token3)); + $this->__toString()->shouldReturn('bool(token_1 AND token_2 AND token_3)'); + } + + function it_wraps_non_token_arguments_into_ExactValueToken() + { + $this->beConstructedWith(array(15, '1985')); + $this->__toString()->shouldReturn("bool(exact(15) AND exact(\"1985\"))"); + } + + function it_scores_the_maximum_score_from_all_scores_returned_by_tokens(TokenInterface $token1, TokenInterface $token2) + { + $token1->scoreArgument(1)->willReturn(10); + $token2->scoreArgument(1)->willReturn(5); + $this->beConstructedWith(array($token1, $token2)); + $this->scoreArgument(1)->shouldReturn(10); + } + + function it_does_not_score_if_there_are_no_arguments_or_tokens() + { + $this->beConstructedWith(array()); + $this->scoreArgument('any')->shouldReturn(false); + } + + function it_does_not_score_if_either_of_tokens_does_not_score(TokenInterface $token1, TokenInterface $token2) + { + $token1->scoreArgument(1)->willReturn(10); + $token1->scoreArgument(2)->willReturn(false); + + $token2->scoreArgument(1)->willReturn(false); + $token2->scoreArgument(2)->willReturn(10); + + $this->beConstructedWith(array($token1, $token2)); + + $this->scoreArgument(1)->shouldReturn(false); + $this->scoreArgument(2)->shouldReturn(false); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c2cbbad17412f985ada3e373f06b526eb4f4a3b2 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/LogicalNotTokenSpec.php @@ -0,0 +1,62 @@ +beConstructedWith($token); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_holds_originating_token($token) + { + $this->getOriginatingToken()->shouldReturn($token); + } + + function it_has_simple_string_representation($token) + { + $token->__toString()->willReturn('value'); + $this->__toString()->shouldBe('not(value)'); + } + + function it_wraps_non_token_argument_into_ExactValueToken() + { + $this->beConstructedWith(5); + $token = $this->getOriginatingToken(); + $token->shouldhaveType('Prophecy\Argument\Token\ExactValueToken'); + $token->getValue()->shouldBe(5); + } + + function it_scores_4_if_preset_token_does_not_match_the_argument($token) + { + $token->scoreArgument('argument')->willReturn(false); + $this->scoreArgument('argument')->shouldBe(4); + } + + function it_does_not_score_if_preset_token_matches_argument($token) + { + $token->scoreArgument('argument')->willReturn(5); + $this->scoreArgument('argument')->shouldBe(false); + } + + function it_is_last_if_preset_token_is_last($token) + { + $token->isLast()->willReturn(true); + $this->shouldBeLast(); + } + + function it_is_not_last_if_preset_token_is_not_last($token) + { + $token->isLast()->willReturn(false); + $this->shouldNotBeLast(); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..d71b22a00ed21325e95e30bb26b87bd66843e85a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ObjectStateTokenSpec.php @@ -0,0 +1,89 @@ +beConstructedWith('getName', 'stdClass'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_8_if_argument_object_has_specific_method_state(\ReflectionClass $reflection) + { + $reflection->getName()->willReturn('stdClass'); + + $this->scoreArgument($reflection)->shouldReturn(8); + } + + function it_scores_8_if_argument_object_has_specific_property_state(\stdClass $class) + { + $class->getName = 'stdClass'; + + $this->scoreArgument($class)->shouldReturn(8); + } + + function it_does_not_score_if_argument_method_state_does_not_match() + { + $value = new ObjectStateTokenFixtureB('ABC'); + $value2 = new ObjectStateTokenFixtureB('CBA'); + + $this->beConstructedWith('getSelf', $value); + $this->scoreArgument($value2)->shouldReturn(false); + } + + function it_does_not_score_if_argument_property_state_does_not_match(\stdClass $class) + { + $class->getName = 'SplFileInfo'; + + $this->scoreArgument($class)->shouldReturn(false); + } + + function it_does_not_score_if_argument_object_does_not_have_method_or_property(ObjectStateTokenFixtureA $class) + { + $this->scoreArgument($class)->shouldReturn(false); + } + + function it_does_not_score_if_argument_is_not_object() + { + $this->scoreArgument(42)->shouldReturn(false); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldReturn('state(getName(), "stdClass")'); + } +} + +class ObjectStateTokenFixtureA +{ + public $errors; +} + +class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } + + public function getSelf() + { + return $this; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c7fd26523196aa77d1400bfe36bd93fc7586b0c9 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/StringContainsTokenSpec.php @@ -0,0 +1,49 @@ +beConstructedWith('a substring'); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Argument\Token\StringContainsToken'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_holds_value() + { + $this->getValue()->shouldReturn('a substring'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_6_if_the_argument_contains_the_value() + { + $this->scoreArgument('Argument containing a substring')->shouldReturn(6); + } + + function it_does_not_score_if_the_argument_does_not_contain_the_value() + { + $this->scoreArgument('Argument will not match')->shouldReturn(false); + } + + function its_string_representation_shows_substring() + { + $this->__toString()->shouldReturn('contains("a substring")'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..2829f31f732d8fc3ba3fbe27220e15adc2fc5013 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/TypeTokenSpec.php @@ -0,0 +1,57 @@ +beConstructedWith('integer'); + } + + function it_implements_TokenInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface'); + } + + function it_is_not_last() + { + $this->shouldNotBeLast(); + } + + function it_scores_5_if_argument_matches_simple_type() + { + $this->beConstructedWith('integer'); + + $this->scoreArgument(42)->shouldReturn(5); + } + + function it_does_not_scores_if_argument_does_not_match_simple_type() + { + $this->beConstructedWith('integer'); + + $this->scoreArgument(42.0)->shouldReturn(false); + } + + function it_scores_5_if_argument_is_an_instance_of_specified_class(\ReflectionObject $object) + { + $this->beConstructedWith('ReflectionClass'); + + $this->scoreArgument($object)->shouldReturn(5); + } + + function it_has_simple_string_representation() + { + $this->__toString()->shouldReturn('type(integer)'); + } + + function it_scores_5_if_argument_is_an_instance_of_specified_interface(TokenInterface $interface) + { + $this->beConstructedWith('Prophecy\Argument\Token\TokenInterface'); + + $this->scoreArgument($interface)->shouldReturn(5); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..64232a4d225cf6463b40fb6e1b2d78ab7af846e5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/ArgumentSpec.php @@ -0,0 +1,107 @@ +exact(42); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ExactValueToken'); + $token->getValue()->shouldReturn(42); + } + + function it_has_a_shortcut_for_any_argument_token() + { + $token = $this->any(); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_multiple_arguments_token() + { + $token = $this->cetera(); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\AnyValuesToken'); + } + + function it_has_a_shortcut_for_type_token() + { + $token = $this->type('integer'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\TypeToken'); + } + + function it_has_a_shortcut_for_callback_token() + { + $token = $this->that('get_class'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\CallbackToken'); + } + + function it_has_a_shortcut_for_object_state_token() + { + $token = $this->which('getName', 'everzet'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ObjectStateToken'); + } + + function it_has_a_shortcut_for_logical_and_token() + { + $token = $this->allOf('integer', 5); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalAndToken'); + } + + function it_has_a_shortcut_for_array_count_token() + { + $token = $this->size(5); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayCountToken'); + } + + function it_has_a_shortcut_for_array_entry_token() + { + $token = $this->withEntry('key', 'value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + } + + function it_has_a_shortcut_for_array_every_entry_token() + { + $token = $this->withEveryEntry('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEveryEntryToken'); + } + + function it_has_a_shortcut_for_identical_value_token() + { + $token = $this->is('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\IdenticalValueToken'); + } + + function it_has_a_shortcut_for_array_entry_token_matching_any_key() + { + $token = $this->containing('value'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + $token->getKey()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_array_entry_token_matching_any_value() + { + $token = $this->withKey('key'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ArrayEntryToken'); + $token->getValue()->shouldHaveType('Prophecy\Argument\Token\AnyValueToken'); + } + + function it_has_a_shortcut_for_logical_not_token() + { + $token = $this->not('kagux'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\LogicalNotToken'); + } + + function it_has_a_shortcut_for_string_contains_token() + { + $token = $this->containingString('string'); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\StringContainsToken'); + } + + function it_has_a_shortcut_for_approximate_token() + { + $token = $this->approximate(10); + $token->shouldBeAnInstanceOf('Prophecy\Argument\Token\ApproximateValueToken'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..83d61f1eca9a4d0b9c3ec3b1e3cd8f755c37ddd5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallCenterSpec.php @@ -0,0 +1,180 @@ +scoreArguments(array(5, 2, 3))->willReturn(10); + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3)); + + $calls = $this->findCalls('setValues', $wildcard); + $calls->shouldHaveCount(1); + + $calls[0]->shouldBeAnInstanceOf('Prophecy\Call\Call'); + $calls[0]->getMethodName()->shouldReturn('setValues'); + $calls[0]->getArguments()->shouldReturn(array(5, 2, 3)); + $calls[0]->getReturnValue()->shouldReturn(null); + } + + function it_returns_null_for_any_call_through_makeCall_if_no_method_prophecies_added( + $objectProphecy + ) + { + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'setValues', array(5, 2, 3))->shouldReturn(null); + } + + function it_executes_promise_of_method_prophecy_that_matches_signature_passed_to_makeCall( + $objectProphecy, + MethodProphecy $method1, + MethodProphecy $method2, + MethodProphecy $method3, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2, + ArgumentsWildcard $arguments3, + PromiseInterface $promise + ) { + $method1->hasReturnVoid()->willReturn(false); + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $arguments1->scoreArguments(array('world', 'everything'))->willReturn(false); + + $method2->hasReturnVoid()->willReturn(false); + $method2->getMethodName()->willReturn('setTitle'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $arguments2->scoreArguments(array('world', 'everything'))->willReturn(false); + + $method3->hasReturnVoid()->willReturn(false); + $method3->getMethodName()->willReturn('getName'); + $method3->getArgumentsWildcard()->willReturn($arguments3); + $method3->getPromise()->willReturn($promise); + $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); + + $objectProphecy->getMethodProphecies()->willReturn(array( + 'method1' => array($method1), + 'method2' => array($method2, $method3) + )); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method1, $method3)); + $objectProphecy->reveal()->willReturn(new \stdClass()); + + $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method3)->willReturn(42); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything'))->shouldReturn(42); + + $calls = $this->findCalls('getName', $arguments3); + $calls->shouldHaveCount(1); + $calls[0]->getReturnValue()->shouldReturn(42); + } + + function it_executes_promise_of_method_prophecy_that_matches_with_highest_score_to_makeCall( + $objectProphecy, + MethodProphecy $method1, + MethodProphecy $method2, + MethodProphecy $method3, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2, + ArgumentsWildcard $arguments3, + PromiseInterface $promise + ) { + $method1->hasReturnVoid()->willReturn(false); + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $arguments1->scoreArguments(array('world', 'everything'))->willReturn(50); + + $method2->hasReturnVoid()->willReturn(false); + $method2->getMethodName()->willReturn('getName'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $method2->getPromise()->willReturn($promise); + $arguments2->scoreArguments(array('world', 'everything'))->willReturn(300); + + $method3->hasReturnVoid()->willReturn(false); + $method3->getMethodName()->willReturn('getName'); + $method3->getArgumentsWildcard()->willReturn($arguments3); + $arguments3->scoreArguments(array('world', 'everything'))->willReturn(200); + + $objectProphecy->getMethodProphecies()->willReturn(array( + 'method1' => array($method1), + 'method2' => array($method2, $method3) + )); + $objectProphecy->getMethodProphecies('getName')->willReturn(array( + $method1, $method2, $method3 + )); + $objectProphecy->reveal()->willReturn(new \stdClass()); + + $promise->execute(array('world', 'everything'), $objectProphecy->getWrappedObject(), $method2) + ->willReturn('second'); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) + ->shouldReturn('second'); + } + + function it_throws_exception_if_call_does_not_match_any_of_defined_method_prophecies( + $objectProphecy, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->scoreArguments(array('world', 'everything'))->willReturn(false); + $arguments->__toString()->willReturn('arg1, arg2'); + + $objectProphecy->getMethodProphecies()->willReturn(array('method1' => array($method))); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); + + $this->shouldThrow('Prophecy\Exception\Call\UnexpectedCallException') + ->duringMakeCall($objectProphecy, 'getName', array('world', 'everything')); + } + + function it_returns_null_if_method_prophecy_that_matches_makeCall_arguments_has_no_promise( + $objectProphecy, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->hasReturnVoid()->willReturn(false); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $method->getPromise()->willReturn(null); + $arguments->scoreArguments(array('world', 'everything'))->willReturn(100); + + $objectProphecy->getMethodProphecies()->willReturn(array($method)); + $objectProphecy->getMethodProphecies('getName')->willReturn(array($method)); + + $this->makeCall($objectProphecy, 'getName', array('world', 'everything')) + ->shouldReturn(null); + } + + function it_finds_recorded_calls_by_a_method_name_and_arguments_wildcard( + $objectProphecy, + ArgumentsWildcard $wildcard + ) { + $objectProphecy->getMethodProphecies()->willReturn(array()); + + $this->makeCall($objectProphecy, 'getName', array('world')); + $this->makeCall($objectProphecy, 'getName', array('everything')); + $this->makeCall($objectProphecy, 'setName', array(42)); + + $wildcard->scoreArguments(array('world'))->willReturn(false); + $wildcard->scoreArguments(array('everything'))->willReturn(10); + + $calls = $this->findCalls('getName', $wildcard); + + $calls->shouldHaveCount(1); + $calls[0]->getMethodName()->shouldReturn('getName'); + $calls[0]->getArguments()->shouldReturn(array('everything')); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..a622b493c45fc073b7649eeab4d6a7bcdd2155f9 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Call/CallSpec.php @@ -0,0 +1,51 @@ +beConstructedWith('setValues', array(5, 2), 42, $exception, 'some_file.php', 23); + } + + function it_exposes_method_name_through_getter() + { + $this->getMethodName()->shouldReturn('setValues'); + } + + function it_exposes_arguments_through_getter() + { + $this->getArguments()->shouldReturn(array(5, 2)); + } + + function it_exposes_return_value_through_getter() + { + $this->getReturnValue()->shouldReturn(42); + } + + function it_exposes_exception_through_getter($exception) + { + $this->getException()->shouldReturn($exception); + } + + function it_exposes_file_and_line_through_getter() + { + $this->getFile()->shouldReturn('some_file.php'); + $this->getLine()->shouldReturn(23); + } + + function it_returns_shortpath_to_callPlace() + { + $this->getCallPlace()->shouldReturn('some_file.php:23'); + } + + function it_returns_unknown_as_callPlace_if_no_file_or_line_provided() + { + $this->beConstructedWith('setValues', array(), 0, null, null, null); + + $this->getCallPlace()->shouldReturn('unknown'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c174e73c02907d23c445580bd67718346b5e8163 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ClosureComparatorSpec.php @@ -0,0 +1,39 @@ +shouldHaveType('SebastianBergmann\Comparator\Comparator'); + } + + function it_accepts_only_closures() + { + $this->accepts(123, 321)->shouldReturn(false); + $this->accepts('string', 'string')->shouldReturn(false); + $this->accepts(false, true)->shouldReturn(false); + $this->accepts(true, false)->shouldReturn(false); + $this->accepts((object)array(), (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + + $this->accepts(function(){}, function(){})->shouldReturn(true); + } + + function it_asserts_that_all_closures_are_different() + { + $this->shouldThrow()->duringAssertEquals(function(){}, function(){}); + } + + function it_asserts_that_all_closures_are_different_even_if_its_the_same_closure() + { + $closure = function(){}; + + $this->shouldThrow()->duringAssertEquals($closure, $closure); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php new file mode 100644 index 0000000000000000000000000000000000000000..6b13336d2ac7411888ba7cb6d8b212a65e5d6e56 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/FactorySpec.php @@ -0,0 +1,20 @@ +shouldHaveType('SebastianBergmann\Comparator\Factory'); + } + + function it_should_have_ClosureComparator_registered() + { + $comparator = $this->getInstance()->getComparatorFor(function(){}, function(){}); + $comparator->shouldHaveType('Prophecy\Comparator\ClosureComparator'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..06bf6f17d12a08dadbf23eee52948c0fc3111367 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Comparator/ProphecyComparatorSpec.php @@ -0,0 +1,39 @@ +shouldHaveType('SebastianBergmann\Comparator\ObjectComparator'); + } + + function it_accepts_only_prophecy_objects() + { + $this->accepts(123, 321)->shouldReturn(false); + $this->accepts('string', 'string')->shouldReturn(false); + $this->accepts(false, true)->shouldReturn(false); + $this->accepts(true, false)->shouldReturn(false); + $this->accepts((object)array(), (object)array())->shouldReturn(false); + $this->accepts(function(){}, (object)array())->shouldReturn(false); + $this->accepts(function(){}, function(){})->shouldReturn(false); + + $prophet = new Prophet(); + $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); + + $this->accepts($prophecy, $prophecy)->shouldReturn(true); + } + + function it_asserts_that_an_object_is_equal_to_its_revealed_prophecy() + { + $prophet = new Prophet(); + $prophecy = $prophet->prophesize('Prophecy\Prophecy\ObjectProphecy'); + + $this->shouldNotThrow()->duringAssertEquals($prophecy->reveal(), $prophecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..4fd28d7eb190b6092377b167bb3d724b0cceda49 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php @@ -0,0 +1,54 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_100() + { + $this->getPriority()->shouldReturn(100); + } + + function it_supports_anything(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_makes_all_constructor_arguments_optional( + ClassNode $class, + MethodNode $method, + ArgumentNode $arg1, + ArgumentNode $arg2 + ) { + $class->hasMethod('__construct')->willReturn(true); + $class->getMethod('__construct')->willReturn($method); + $method->getArguments()->willReturn(array($arg1, $arg2)); + + $arg1->setDefault(null)->shouldBeCalled(); + $arg2->setDefault(null)->shouldBeCalled(); + + $method->setCode(Argument::type('string'))->shouldBeCalled(); + + $this->apply($class); + } + + function it_creates_new_constructor_if_object_has_none(ClassNode $class) + { + $class->hasMethod('__construct')->willReturn(false); + $class->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode')) + ->shouldBeCalled(); + + $this->apply($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..9d04421af945eadb726e24b5a20d8b9b9a40fc85 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/HhvmExceptionPatchSpec.php @@ -0,0 +1,34 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_minus_50() + { + $this->getPriority()->shouldReturn(-50); + } + + function it_uses_parent_code_for_setTraceOptions(ClassNode $node, MethodNode $method, MethodNode $getterMethod) + { + $node->hasMethod('setTraceOptions')->willReturn(true); + $node->getMethod('setTraceOptions')->willReturn($method); + $node->hasMethod('getTraceOptions')->willReturn(true); + $node->getMethod('getTraceOptions')->willReturn($getterMethod); + + $method->useParentCode()->shouldBeCalled(); + $getterMethod->useParentCode()->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..1c454e62d910df5fc3ec10525991f5fc686a5744 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/KeywordPatchSpec.php @@ -0,0 +1,43 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_49() + { + $this->getPriority()->shouldReturn(49); + } + + function it_will_remove_echo_and_eval_methods( + ClassNode $node, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3 + ) { + $node->removeMethod('eval')->shouldBeCalled(); + $node->removeMethod('echo')->shouldBeCalled(); + + $method1->getName()->willReturn('echo'); + $method2->getName()->willReturn('eval'); + $method3->getName()->willReturn('notKeyword'); + + $node->getMethods()->willReturn(array( + 'echo' => $method1, + 'eval' => $method2, + 'notKeyword' => $method3, + )); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..f7a56317cc8586e361b91aa4a27567dbead7df2c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/MagicCallPatchSpec.php @@ -0,0 +1,140 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_supports_anything(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_discovers_api_using_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApi'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_ignores_existing_methods(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('undefinedMethod'))->shouldBeCalled(); + $node->addMethod(new MethodNode('definedMethod'))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_ignores_empty_methods_from_phpdoc(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiInvalidMethodDefinition'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode(''))->shouldNotBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_implemented_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_own_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('stdClass'); + $node->getInterfaces()->willReturn(array('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplemented')); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_discovers_api_using_phpdoc_from_extended_parent_interfaces(ClassNode $node) + { + $node->getParentClass()->willReturn('spec\Prophecy\Doubler\ClassPatch\MagicalApiImplementedExtended'); + $node->getInterfaces()->willReturn(array()); + + $node->addMethod(new MethodNode('implementedMethod'))->shouldBeCalled(); + + $this->apply($node); + } + + function it_has_50_priority() + { + $this->getPriority()->shouldReturn(50); + } +} + +/** + * @method void undefinedMethod() + */ +class MagicalApi +{ + /** + * @return void + */ + public function definedMethod() + { + + } +} + +/** + * @method void invalidMethodDefinition + * @method void + * @method + */ +class MagicalApiInvalidMethodDefinition +{ +} + +/** + * @method void undefinedMethod() + * @method void definedMethod() + */ +class MagicalApiExtended extends MagicalApi +{ + +} + +/** + */ +class MagicalApiImplemented implements MagicalApiInterface +{ + +} + +/** + */ +class MagicalApiImplementedExtended extends MagicalApiImplemented +{ +} + +/** + * @method void implementedMethod() + */ +interface MagicalApiInterface +{ + +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..96f0e20a3b53132705ce7b872a1dfbb9ba101740 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ProphecySubjectPatchSpec.php @@ -0,0 +1,79 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_has_priority_of_0() + { + $this->getPriority()->shouldReturn(0); + } + + function it_supports_any_class(ClassNode $node) + { + $this->supports($node)->shouldReturn(true); + } + + function it_forces_class_to_implement_ProphecySubjectInterface(ClassNode $node) + { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->shouldBeCalled(); + + $node->addProperty('objectProphecy', 'private')->willReturn(null); + $node->getMethods()->willReturn(array()); + $node->hasMethod(Argument::any())->willReturn(false); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $this->apply($node); + } + + function it_forces_all_class_methods_except_constructor_to_proxy_calls_into_prophecy_makeCall( + ClassNode $node, + MethodNode $constructor, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3 + ) { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface')->willReturn(null); + $node->addProperty('objectProphecy', 'private')->willReturn(null); + $node->hasMethod(Argument::any())->willReturn(false); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $constructor->getName()->willReturn('__construct'); + $method1->getName()->willReturn('method1'); + $method2->getName()->willReturn('method2'); + $method3->getName()->willReturn('method3'); + + $method1->getReturnType()->willReturn('int'); + $method2->getReturnType()->willReturn('int'); + $method3->getReturnType()->willReturn('void'); + + $node->getMethods()->willReturn(array( + 'method1' => $method1, + 'method2' => $method2, + 'method3' => $method3, + )); + + $constructor->setCode(Argument::any())->shouldNotBeCalled(); + + $method1->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + $method2->setCode('return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + $method3->setCode('$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());') + ->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..effd61e7b8a7cfba59a9219bf97a1f9e1b371705 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatchSpec.php @@ -0,0 +1,43 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_50() + { + $this->getPriority()->shouldReturn(50); + } + + function it_supports_ReflectionClass_only(ClassNode $reflectionClassNode, ClassNode $anotherClassNode) + { + $reflectionClassNode->getParentClass()->willReturn('ReflectionClass'); + $anotherClassNode->getParentClass()->willReturn('stdClass'); + + $this->supports($reflectionClassNode)->shouldReturn(true); + $this->supports($anotherClassNode)->shouldReturn(false); + } + + function it_makes_all_newInstance_arguments_optional( + ClassNode $class, + MethodNode $method, + ArgumentNode $arg1 + ) { + $class->getMethod('newInstance')->willReturn($method); + $method->getArguments()->willReturn(array($arg1)); + $arg1->setDefault(null)->shouldBeCalled(); + + $this->apply($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..5bc3958c8ebbad193ec97c3a6197ec3fba84d360 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/SplFileInfoPatchSpec.php @@ -0,0 +1,85 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function its_priority_is_50() + { + $this->getPriority()->shouldReturn(50); + } + + function it_does_not_support_nodes_without_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('stdClass'); + $this->supports($node)->shouldReturn(false); + } + + function it_supports_nodes_with_SplFileInfo_as_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('SplFileInfo'); + $this->supports($node)->shouldReturn(true); + } + + function it_supports_nodes_with_derivative_of_SplFileInfo_as_parent_class(ClassNode $node) + { + $node->getParentClass()->willReturn('SplFileInfo'); + $this->supports($node)->shouldReturn(true); + } + + function it_adds_a_method_to_node_if_not_exists(ClassNode $node) + { + $node->hasMethod('__construct')->willReturn(false); + $node->addMethod(Argument::any())->shouldBeCalled(); + $node->getParentClass()->shouldBeCalled(); + + $this->apply($node); + } + + function it_updates_existing_method_if_found(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->shouldBeCalled(); + + $method->useParentCode()->shouldBeCalled(); + + $this->apply($node); + } + + function it_should_not_supply_a_file_for_a_directory_iterator(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->willReturn('DirectoryIterator'); + + $method->setCode(Argument::that(function($value) { + return strpos($value, '.php') === false; + }))->shouldBeCalled(); + + $this->apply($node); + } + + function it_should_supply_a_file_for_a_spl_file_object(ClassNode $node, MethodNode $method) + { + $node->hasMethod('__construct')->willReturn(true); + $node->getMethod('__construct')->willReturn($method); + $node->getParentClass()->willReturn('SplFileObject'); + + $method->setCode(Argument::that(function($value) { + return strpos($value, '.php') !== false; + }))->shouldBeCalled(); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..abce2f1e31194de0aa0e194e0975364f44e975ab --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/TraversablePatchSpec.php @@ -0,0 +1,50 @@ +shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface'); + } + + function it_supports_class_that_implements_only_Traversable(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable')); + + $this->supports($node)->shouldReturn(true); + } + + function it_does_not_support_class_that_implements_Iterator(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable', 'Iterator')); + + $this->supports($node)->shouldReturn(false); + } + + function it_does_not_support_class_that_implements_IteratorAggregate(ClassNode $node) + { + $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate')); + + $this->supports($node)->shouldReturn(false); + } + + function it_has_100_priority() + { + $this->getPriority()->shouldReturn(100); + } + + function it_forces_node_to_implement_IteratorAggregate(ClassNode $node) + { + $node->addInterface('Iterator')->shouldBeCalled(); + + $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null); + + $this->apply($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..b58b1a80abfb38d202cc281030b0b9a5f690e8ce --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/DoublerSpec.php @@ -0,0 +1,115 @@ +beConstructedWith($mirror, $creator, $namer); + } + + function it_does_not_have_patches_by_default() + { + $this->getClassPatches()->shouldHaveCount(0); + } + + function its_registerClassPatch_adds_a_patch_to_the_doubler(ClassPatchInterface $patch) + { + $this->registerClassPatch($patch); + $this->getClassPatches()->shouldReturn(array($patch)); + } + + function its_getClassPatches_sorts_patches_by_priority( + ClassPatchInterface $alt1, + ClassPatchInterface $alt2, + ClassPatchInterface $alt3, + ClassPatchInterface $alt4 + ) { + $alt1->getPriority()->willReturn(2); + $alt2->getPriority()->willReturn(50); + $alt3->getPriority()->willReturn(10); + $alt4->getPriority()->willReturn(0); + + $this->registerClassPatch($alt1); + $this->registerClassPatch($alt2); + $this->registerClassPatch($alt3); + $this->registerClassPatch($alt4); + + $this->getClassPatches()->shouldReturn(array($alt2, $alt3, $alt1, $alt4)); + } + + function its_double_mirrors_alterates_and_instantiates_provided_class( + $mirror, + $creator, + $namer, + ClassPatchInterface $alt1, + ClassPatchInterface $alt2, + \ReflectionClass $class, + \ReflectionClass $interface1, + \ReflectionClass $interface2, + ClassNode $node + ) { + $mirror->reflect($class, array($interface1, $interface2))->willReturn($node); + $alt1->supports($node)->willReturn(true); + $alt2->supports($node)->willReturn(false); + $alt1->getPriority()->willReturn(1); + $alt2->getPriority()->willReturn(2); + $namer->name($class, array($interface1, $interface2))->willReturn('SplStack'); + $class->getName()->willReturn('stdClass'); + $interface1->getName()->willReturn('ArrayAccess'); + $interface2->getName()->willReturn('Iterator'); + + $alt1->apply($node)->shouldBeCalled(); + $alt2->apply($node)->shouldNotBeCalled(); + $creator->create('SplStack', $node)->shouldBeCalled(); + + $this->registerClassPatch($alt1); + $this->registerClassPatch($alt2); + + $this->double($class, array($interface1, $interface2)) + ->shouldReturnAnInstanceOf('SplStack'); + } + + function it_double_instantiates_a_class_with_constructor_argument( + $mirror, + \ReflectionClass $class, + ClassNode $node, + $namer + ) { + $class->getName()->willReturn('ReflectionClass'); + $mirror->reflect($class, array())->willReturn($node); + $namer->name($class, array())->willReturn('ReflectionClass'); + + $double = $this->double($class, array(), array('stdClass')); + $double->shouldBeAnInstanceOf('ReflectionClass'); + $double->getName()->shouldReturn('stdClass'); + } + + function it_can_instantiate_class_with_final_constructor( + $mirror, + \ReflectionClass $class, + ClassNode $node, + $namer + ) { + $class->getName()->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); + $mirror->reflect($class, array())->willReturn($node); + $namer->name($class, array())->willReturn('spec\Prophecy\Doubler\WithFinalConstructor'); + + $double = $this->double($class, array()); + + $double->shouldBeAnInstanceOf('spec\Prophecy\Doubler\WithFinalConstructor'); + } +} + +class WithFinalConstructor +{ + final public function __construct() {} +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..2e85b6ca555b9e340e4d91c57e3d40addaa341dd --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCodeGeneratorSpec.php @@ -0,0 +1,362 @@ +getParentClass()->willReturn('RuntimeException'); + $class->getInterfaces()->willReturn(array( + 'Prophecy\Doubler\Generator\MirroredInterface', 'ArrayAccess', 'ArrayIterator' + )); + $class->getProperties()->willReturn(array('name' => 'public', 'email' => 'private')); + $class->getMethods()->willReturn(array($method1, $method2, $method3, $method4)); + + $method1->getName()->willReturn('getName'); + $method1->getVisibility()->willReturn('public'); + $method1->returnsReference()->willReturn(false); + $method1->isStatic()->willReturn(true); + $method1->getArguments()->willReturn(array($argument11, $argument12)); + $method1->hasReturnType()->willReturn(true); + $method1->getReturnType()->willReturn('string'); + $method1->hasNullableReturnType()->willReturn(true); + $method1->getCode()->willReturn('return $this->name;'); + + $method2->getName()->willReturn('getEmail'); + $method2->getVisibility()->willReturn('protected'); + $method2->returnsReference()->willReturn(false); + $method2->isStatic()->willReturn(false); + $method2->getArguments()->willReturn(array($argument21)); + $method2->hasReturnType()->willReturn(false); + $method2->hasNullableReturnType()->willReturn(true); + $method2->getCode()->willReturn('return $this->email;'); + + $method3->getName()->willReturn('getRefValue'); + $method3->getVisibility()->willReturn('public'); + $method3->returnsReference()->willReturn(true); + $method3->isStatic()->willReturn(false); + $method3->getArguments()->willReturn(array($argument31)); + $method3->hasReturnType()->willReturn(true); + $method3->getReturnType()->willReturn('string'); + $method3->hasNullableReturnType()->willReturn(false); + $method3->getCode()->willReturn('return $this->refValue;'); + + $method4->getName()->willReturn('doSomething'); + $method4->getVisibility()->willReturn('public'); + $method4->returnsReference()->willReturn(false); + $method4->isStatic()->willReturn(false); + $method4->getArguments()->willReturn(array()); + $method4->hasReturnType()->willReturn(true); + $method4->getReturnType()->willReturn('void'); + $method4->hasNullableReturnType()->willReturn(false); + $method4->getCode()->willReturn('return;'); + + $argument11->getName()->willReturn('fullname'); + $argument11->getTypeHint()->willReturn('array'); + $argument11->isOptional()->willReturn(true); + $argument11->getDefault()->willReturn(null); + $argument11->isPassedByReference()->willReturn(false); + $argument11->isVariadic()->willReturn(false); + $argument11->isNullable()->willReturn(false); + + $argument12->getName()->willReturn('class'); + $argument12->getTypeHint()->willReturn('ReflectionClass'); + $argument12->isOptional()->willReturn(false); + $argument12->isPassedByReference()->willReturn(false); + $argument12->isVariadic()->willReturn(false); + $argument12->isNullable()->willReturn(false); + + $argument21->getName()->willReturn('default'); + $argument21->getTypeHint()->willReturn('string'); + $argument21->isOptional()->willReturn(true); + $argument21->getDefault()->willReturn('ever.zet@gmail.com'); + $argument21->isPassedByReference()->willReturn(false); + $argument21->isVariadic()->willReturn(false); + $argument21->isNullable()->willReturn(true); + + $argument31->getName()->willReturn('refValue'); + $argument31->getTypeHint()->willReturn(null); + $argument31->isOptional()->willReturn(false); + $argument31->getDefault()->willReturn(); + $argument31->isPassedByReference()->willReturn(false); + $argument31->isVariadic()->willReturn(false); + $argument31->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class): ?string { +return $this->name; +} +protected function getEmail(?string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue): string { +return $this->refValue; +} +public function doSomething(): void { +return; +} + +} +} +PHP; + } elseif (version_compare(PHP_VERSION, '7.0', '>=')) { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class): string { +return $this->name; +} +protected function getEmail(string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue): string { +return $this->refValue; +} +public function doSomething() { +return; +} + +} +} +PHP; + } else { + $expected = <<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface, \ArrayAccess, \ArrayIterator { +public $name; +private $email; + +public static function getName(array $fullname = NULL, \ReflectionClass $class) { +return $this->name; +} +protected function getEmail(\string $default = 'ever.zet@gmail.com') { +return $this->email; +} +public function &getRefValue( $refValue) { +return $this->refValue; +} +public function doSomething() { +return; +} + +} +} +PHP; + } + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_generates_proper_php_code_for_variadics( + ClassNode $class, + MethodNode $method1, + MethodNode $method2, + MethodNode $method3, + MethodNode $method4, + ArgumentNode $argument1, + ArgumentNode $argument2, + ArgumentNode $argument3, + ArgumentNode $argument4 + ) { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array( + $method1, $method2, $method3, $method4 + )); + + $method1->getName()->willReturn('variadic'); + $method1->getVisibility()->willReturn('public'); + $method1->returnsReference()->willReturn(false); + $method1->isStatic()->willReturn(false); + $method1->getArguments()->willReturn(array($argument1)); + $method1->hasReturnType()->willReturn(false); + $method1->getCode()->willReturn(''); + + $method2->getName()->willReturn('variadicByRef'); + $method2->getVisibility()->willReturn('public'); + $method2->returnsReference()->willReturn(false); + $method2->isStatic()->willReturn(false); + $method2->getArguments()->willReturn(array($argument2)); + $method2->hasReturnType()->willReturn(false); + $method2->getCode()->willReturn(''); + + $method3->getName()->willReturn('variadicWithType'); + $method3->getVisibility()->willReturn('public'); + $method3->returnsReference()->willReturn(false); + $method3->isStatic()->willReturn(false); + $method3->getArguments()->willReturn(array($argument3)); + $method3->hasReturnType()->willReturn(false); + $method3->getCode()->willReturn(''); + + $method4->getName()->willReturn('variadicWithTypeByRef'); + $method4->getVisibility()->willReturn('public'); + $method4->returnsReference()->willReturn(false); + $method4->isStatic()->willReturn(false); + $method4->getArguments()->willReturn(array($argument4)); + $method4->hasReturnType()->willReturn(false); + $method4->getCode()->willReturn(''); + + $argument1->getName()->willReturn('args'); + $argument1->getTypeHint()->willReturn(null); + $argument1->isOptional()->willReturn(false); + $argument1->isPassedByReference()->willReturn(false); + $argument1->isVariadic()->willReturn(true); + $argument1->isNullable()->willReturn(false); + + $argument2->getName()->willReturn('args'); + $argument2->getTypeHint()->willReturn(null); + $argument2->isOptional()->willReturn(false); + $argument2->isPassedByReference()->willReturn(true); + $argument2->isVariadic()->willReturn(true); + $argument2->isNullable()->willReturn(false); + + $argument3->getName()->willReturn('args'); + $argument3->getTypeHint()->willReturn('\ReflectionClass'); + $argument3->isOptional()->willReturn(false); + $argument3->isPassedByReference()->willReturn(false); + $argument3->isVariadic()->willReturn(true); + $argument3->isNullable()->willReturn(false); + + $argument4->getName()->willReturn('args'); + $argument4->getTypeHint()->willReturn('\ReflectionClass'); + $argument4->isOptional()->willReturn(false); + $argument4->isPassedByReference()->willReturn(true); + $argument4->isVariadic()->willReturn(true); + $argument4->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + $expected = <<<'PHP' +namespace { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + +public function variadic( ...$args) { + +} +public function variadicByRef( &...$args) { + +} +public function variadicWithType(\\ReflectionClass ...$args) { + +} +public function variadicWithTypeByRef(\\ReflectionClass &...$args) { + +} + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_overrides_properly_methods_with_args_passed_by_reference( + ClassNode $class, + MethodNode $method, + ArgumentNode $argument + ) { + $class->getParentClass()->willReturn('RuntimeException'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array($method)); + + $method->getName()->willReturn('getName'); + $method->getVisibility()->willReturn('public'); + $method->isStatic()->willReturn(false); + $method->getArguments()->willReturn(array($argument)); + $method->hasReturnType()->willReturn(false); + $method->returnsReference()->willReturn(false); + $method->getCode()->willReturn('return $this->name;'); + + $argument->getName()->willReturn('fullname'); + $argument->getTypeHint()->willReturn('array'); + $argument->isOptional()->willReturn(true); + $argument->getDefault()->willReturn(null); + $argument->isPassedByReference()->willReturn(true); + $argument->isVariadic()->willReturn(false); + $argument->isNullable()->willReturn(false); + + $code = $this->generate('CustomClass', $class); + $expected =<<<'PHP' +namespace { +class CustomClass extends \RuntimeException implements \Prophecy\Doubler\Generator\MirroredInterface { + +public function getName(array &$fullname = NULL) { +return $this->name; +} + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_generates_empty_class_for_empty_ClassNode(ClassNode $class) + { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array()); + + $code = $this->generate('CustomClass', $class); + $expected =<<<'PHP' +namespace { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } + + function it_wraps_class_in_namespace_if_it_is_namespaced(ClassNode $class) + { + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Prophecy\Doubler\Generator\MirroredInterface')); + $class->getProperties()->willReturn(array()); + $class->getMethods()->willReturn(array()); + + $code = $this->generate('My\Awesome\CustomClass', $class); + $expected =<<<'PHP' +namespace My\Awesome { +class CustomClass extends \stdClass implements \Prophecy\Doubler\Generator\MirroredInterface { + + +} +} +PHP; + $expected = strtr($expected, array("\r\n" => "\n", "\r" => "\n")); + $code->shouldBe($expected); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..e7cae23bc01cb51aea5a75e0768155a3ace24118 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/ClassCreatorSpec.php @@ -0,0 +1,37 @@ +beConstructedWith($generator); + } + + function it_evaluates_code_generated_by_ClassCodeGenerator($generator, ClassNode $class) + { + $generator->generate('stdClass', $class)->shouldBeCalled()->willReturn( + 'return 42;' + ); + + $this->create('stdClass', $class)->shouldReturn(42); + } + + function it_throws_an_exception_if_class_does_not_exist_after_evaluation($generator, ClassNode $class) + { + $generator->generate('CustomClass', $class)->shouldBeCalled()->willReturn( + 'return 42;' + ); + + $class->getParentClass()->willReturn('stdClass'); + $class->getInterfaces()->willReturn(array('Interface1', 'Interface2')); + + $this->shouldThrow('Prophecy\Exception\Doubler\ClassCreatorException') + ->duringCreate('CustomClass', $class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..2c8d1886ab19a4e435d389d2373fdeb9eb95640e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ArgumentNodeSpec.php @@ -0,0 +1,92 @@ +beConstructedWith('name'); + } + + function it_is_not_be_passed_by_reference_by_default() + { + $this->shouldNotBePassedByReference(); + } + + function it_is_passed_by_reference_if_marked() + { + $this->setAsPassedByReference(); + $this->shouldBePassedByReference(); + } + + function it_is_not_variadic_by_default() + { + $this->shouldNotBeVariadic(); + } + + function it_is_variadic_if_marked() + { + $this->setAsVariadic(); + $this->shouldBeVariadic(); + } + + function it_does_not_have_default_by_default() + { + $this->shouldNotHaveDefault(); + } + + function it_does_not_have_default_if_variadic() + { + $this->setDefault(null); + $this->setAsVariadic(); + $this->shouldNotHaveDefault(); + } + + function it_does_have_default_if_not_variadic() + { + $this->setDefault(null); + $this->setAsVariadic(false); + $this->hasDefault()->shouldReturn(true); + } + + function it_has_name_with_which_it_was_been_constructed() + { + $this->getName()->shouldReturn('name'); + } + + function it_has_no_typehint_by_default() + { + $this->getTypeHint()->shouldReturn(null); + } + + function its_typeHint_is_mutable() + { + $this->setTypeHint('array'); + $this->getTypeHint()->shouldReturn('array'); + } + + function it_does_not_have_default_value_by_default() + { + $this->getDefault()->shouldReturn(null); + } + + function it_is_not_optional_by_default() + { + $this->isOptional()->shouldReturn(false); + } + + function its_default_is_mutable() + { + $this->setDefault(array()); + $this->getDefault()->shouldReturn(array()); + } + + function it_is_marked_as_optional_when_default_is_set() + { + $this->setDefault(null); + $this->isOptional()->shouldReturn(true); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..16fc498b46a6e3a822ddb11636b0588a1c15d366 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/ClassNodeSpec.php @@ -0,0 +1,185 @@ +getParentClass()->shouldReturn('stdClass'); + } + + function its_parentClass_is_mutable() + { + $this->setParentClass('Exception'); + $this->getParentClass()->shouldReturn('Exception'); + } + + function its_parentClass_is_set_to_stdClass_if_user_set_null() + { + $this->setParentClass(null); + $this->getParentClass()->shouldReturn('stdClass'); + } + + function it_does_not_implement_any_interface_by_default() + { + $this->getInterfaces()->shouldHaveCount(0); + } + + function its_addInterface_adds_item_to_the_list_of_implemented_interfaces() + { + $this->addInterface('MyInterface'); + $this->getInterfaces()->shouldHaveCount(1); + } + + function its_hasInterface_returns_true_if_class_implements_interface() + { + $this->addInterface('MyInterface'); + $this->hasInterface('MyInterface')->shouldReturn(true); + } + + function its_hasInterface_returns_false_if_class_does_not_implements_interface() + { + $this->hasInterface('MyInterface')->shouldReturn(false); + } + + function it_supports_implementation_of_multiple_interfaces() + { + $this->addInterface('MyInterface'); + $this->addInterface('MySecondInterface'); + $this->getInterfaces()->shouldHaveCount(2); + } + + function it_ignores_same_interfaces_added_twice() + { + $this->addInterface('MyInterface'); + $this->addInterface('MyInterface'); + + $this->getInterfaces()->shouldHaveCount(1); + $this->getInterfaces()->shouldReturn(array('MyInterface')); + } + + function it_does_not_have_methods_by_default() + { + $this->getMethods()->shouldHaveCount(0); + } + + function it_can_has_methods(MethodNode $method1, MethodNode $method2) + { + $method1->getName()->willReturn('__construct'); + $method2->getName()->willReturn('getName'); + + $this->addMethod($method1); + $this->addMethod($method2); + + $this->getMethods()->shouldReturn(array( + '__construct' => $method1, + 'getName' => $method2 + )); + } + + function its_hasMethod_returns_true_if_method_exists(MethodNode $method) + { + $method->getName()->willReturn('getName'); + + $this->addMethod($method); + + $this->hasMethod('getName')->shouldReturn(true); + } + + function its_getMethod_returns_method_by_name(MethodNode $method) + { + $method->getName()->willReturn('getName'); + + $this->addMethod($method); + + $this->getMethod('getName')->shouldReturn($method); + } + + function its_hasMethod_returns_false_if_method_does_not_exists() + { + $this->hasMethod('getName')->shouldReturn(false); + } + + function its_hasMethod_returns_false_if_method_has_been_removed(MethodNode $method) + { + $method->getName()->willReturn('getName'); + $this->addMethod($method); + $this->removeMethod('getName'); + + $this->hasMethod('getName')->shouldReturn(false); + } + + + function it_does_not_have_properties_by_default() + { + $this->getProperties()->shouldHaveCount(0); + } + + function it_is_able_to_have_properties() + { + $this->addProperty('title'); + $this->addProperty('text', 'private'); + $this->getProperties()->shouldReturn(array( + 'title' => 'public', + 'text' => 'private' + )); + } + + function its_addProperty_does_not_accept_unsupported_visibility() + { + $this->shouldThrow('InvalidArgumentException')->duringAddProperty('title', 'town'); + } + + function its_addProperty_lowercases_visibility_before_setting() + { + $this->addProperty('text', 'PRIVATE'); + $this->getProperties()->shouldReturn(array('text' => 'private')); + } + + function its_has_no_unextendable_methods_by_default() + { + $this->getUnextendableMethods()->shouldHaveCount(0); + } + + function its_addUnextendableMethods_adds_an_unextendable_method() + { + $this->addUnextendableMethod('testMethod'); + $this->getUnextendableMethods()->shouldHaveCount(1); + } + + function its_methods_are_extendable_by_default() + { + $this->isExtendable('testMethod')->shouldReturn(true); + } + + function its_unextendable_methods_are_not_extendable() + { + $this->addUnextendableMethod('testMethod'); + $this->isExtendable('testMethod')->shouldReturn(false); + } + + function its_addUnextendableMethods_doesnt_create_duplicates() + { + $this->addUnextendableMethod('testMethod'); + $this->addUnextendableMethod('testMethod'); + $this->getUnextendableMethods()->shouldHaveCount(1); + } + + function it_throws_an_exception_when_adding_a_method_that_isnt_extendable(MethodNode $method) + { + $this->addUnextendableMethod('testMethod'); + $method->getName()->willReturn('testMethod'); + + $expectedException = new MethodNotExtendableException( + "Method `testMethod` is not extendable, so can not be added.", + "stdClass", + "testMethod" + ); + $this->shouldThrow($expectedException)->duringAddMethod($method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..14cfe8dec7c8254c217b20e6e2c173668f7737e3 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/Generator/Node/MethodNodeSpec.php @@ -0,0 +1,134 @@ +beConstructedWith('getTitle'); + } + + function it_has_a_name() + { + $this->getName()->shouldReturn('getTitle'); + } + + function it_has_public_visibility_by_default() + { + $this->getVisibility()->shouldReturn('public'); + } + + function its_visibility_is_mutable() + { + $this->setVisibility('private'); + $this->getVisibility()->shouldReturn('private'); + } + + function it_is_not_static_by_default() + { + $this->shouldNotBeStatic(); + } + + function it_does_not_return_a_reference_by_default() + { + $this->returnsReference()->shouldReturn(false); + } + + function it_should_be_settable_as_returning_a_reference_through_setter() + { + $this->setReturnsReference(); + $this->returnsReference()->shouldReturn(true); + } + + function it_should_be_settable_as_static_through_setter() + { + $this->setStatic(); + $this->shouldBeStatic(); + } + + function it_accepts_only_supported_visibilities() + { + $this->shouldThrow('InvalidArgumentException')->duringSetVisibility('stealth'); + } + + function it_lowercases_visibility_before_setting_it() + { + $this->setVisibility('Public'); + $this->getVisibility()->shouldReturn('public'); + } + + function its_useParentCode_causes_method_to_call_parent(ArgumentNode $argument1, ArgumentNode $argument2) + { + $argument1->getName()->willReturn('objectName'); + $argument2->getName()->willReturn('default'); + + $argument1->isVariadic()->willReturn(false); + $argument2->isVariadic()->willReturn(true); + + $this->addArgument($argument1); + $this->addArgument($argument2); + + $this->useParentCode(); + + $this->getCode()->shouldReturn( + 'return parent::getTitle($objectName, ...$default);' + ); + } + + function its_code_is_mutable() + { + $this->setCode('echo "code";'); + $this->getCode()->shouldReturn('echo "code";'); + } + + function its_reference_returning_methods_will_generate_exceptions() + { + $this->setCode('echo "code";'); + $this->setReturnsReference(); + $this->getCode()->shouldReturn("throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), 'getTitle');"); + } + + function its_setCode_provided_with_null_cleans_method_body() + { + $this->setCode(null); + $this->getCode()->shouldReturn(''); + } + + function it_is_constructable_with_code() + { + $this->beConstructedWith('getTitle', 'die();'); + $this->getCode()->shouldReturn('die();'); + } + + function it_does_not_have_arguments_by_default() + { + $this->getArguments()->shouldHaveCount(0); + } + + function it_supports_adding_arguments(ArgumentNode $argument1, ArgumentNode $argument2) + { + $this->addArgument($argument1); + $this->addArgument($argument2); + + $this->getArguments()->shouldReturn(array($argument1, $argument2)); + } + + function it_does_not_have_return_type_by_default() + { + $this->hasReturnType()->shouldReturn(false); + } + + function it_setReturnType_sets_return_type() + { + $returnType = 'string'; + + $this->setReturnType($returnType); + + $this->hasReturnType()->shouldReturn(true); + $this->getReturnType()->shouldReturn($returnType); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..fdf1e9621c133d7f84366961c230f02ae6b36fb2 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/LazyDoubleSpec.php @@ -0,0 +1,79 @@ +beConstructedWith($doubler); + } + + function it_returns_anonymous_double_instance_by_default($doubler, ProphecySubjectInterface $double) + { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance()->shouldReturn($double); + } + + function it_returns_class_double_instance_if_set($doubler, ProphecySubjectInterface $double, \ReflectionClass $class) + { + $doubler->double($class, array())->willReturn($double); + + $this->setParentClass($class); + + $this->getInstance()->shouldReturn($double); + } + + function it_returns_same_double_instance_if_called_2_times( + $doubler, + ProphecySubjectInterface $double1, + ProphecySubjectInterface $double2 + ) { + $doubler->double(null, array())->willReturn($double1); + $doubler->double(null, array())->willReturn($double2); + + $this->getInstance()->shouldReturn($double2); + $this->getInstance()->shouldReturn($double2); + } + + function its_setParentClass_throws_ClassNotFoundException_if_class_not_found() + { + $this->shouldThrow('Prophecy\Exception\Doubler\ClassNotFoundException') + ->duringSetParentClass('SomeUnexistingClass'); + } + + function its_setParentClass_throws_exception_if_prophecy_is_already_created( + $doubler, + ProphecySubjectInterface $double + ) { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance(); + + $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') + ->duringSetParentClass('stdClass'); + } + + function its_addInterface_throws_InterfaceNotFoundException_if_no_interface_found() + { + $this->shouldThrow('Prophecy\Exception\Doubler\InterfaceNotFoundException') + ->duringAddInterface('SomeUnexistingInterface'); + } + + function its_addInterface_throws_exception_if_prophecy_is_already_created( + $doubler, + ProphecySubjectInterface $double + ) { + $doubler->double(null, array())->willReturn($double); + + $this->getInstance(); + + $this->shouldThrow('Prophecy\Exception\Doubler\DoubleException') + ->duringAddInterface('ArrayAccess'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..1e9b17fb65be35e0563a59a87d24f7b47e164750 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Doubler/NameGeneratorSpec.php @@ -0,0 +1,60 @@ +getName()->willReturn('stdClass'); + $this->name($class, array())->shouldStartWith('Double\stdClass\\'); + } + + function its_name_generates_name_based_on_namespaced_class_reflection(\ReflectionClass $class) + { + $class->getName()->willReturn('Some\Custom\Class'); + $this->name($class, array())->shouldStartWith('Double\Some\Custom\Class\P'); + } + + function its_name_generates_name_based_on_interface_shortnames( + \ReflectionClass $interface1, + \ReflectionClass $interface2 + ) { + $interface1->getShortName()->willReturn('HandlerInterface'); + $interface2->getShortName()->willReturn('LoaderInterface'); + + $this->name(null, array($interface1, $interface2))->shouldStartWith( + 'Double\HandlerInterface\LoaderInterface\P' + ); + } + + function it_generates_proper_name_for_no_class_and_interfaces_list() + { + $this->name(null, array())->shouldStartWith('Double\stdClass\P'); + } + + function its_name_generates_name_based_only_on_class_if_its_available( + \ReflectionClass $class, + \ReflectionClass $interface1, + \ReflectionClass $interface2 + ) { + $class->getName()->willReturn('Some\Custom\Class'); + $interface1->getShortName()->willReturn('HandlerInterface'); + $interface2->getShortName()->willReturn('LoaderInterface'); + + $this->name($class, array($interface1, $interface2))->shouldStartWith( + 'Double\Some\Custom\Class\P' + ); + } + + public function getMatchers() + { + return array( + 'startWith' => function ($subject, $string) { + return 0 === strpos($subject, $string); + }, + ); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..5e2c635b4c70dea13d888f2ea4b5868c863a42f8 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Call/UnexpectedCallExceptionSpec.php @@ -0,0 +1,30 @@ +beConstructedWith('msg', $objectProphecy, 'getName', array('arg1', 'arg2')); + } + + function it_is_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); + } + + function it_exposes_method_name_through_getter() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_exposes_arguments_through_getter() + { + $this->getArguments()->shouldReturn(array('arg1', 'arg2')); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..da3aa580006929105363aade6a2898a2d0379d33 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassCreatorExceptionSpec.php @@ -0,0 +1,26 @@ +beConstructedWith('', $node); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } + + function it_contains_a_reflected_node($node) + { + $this->getClassNode()->shouldReturn($node); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c4f547a78a1f9ba0f76fab58e74a8d2e475dfaf1 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassMirrorExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('', $class); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } + + function it_contains_a_reflected_class_link($class) + { + $this->getReflectedClass()->shouldReturn($class); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..251512b9bb6ee73545f58a755b25bfefcec78b46 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/ClassNotFoundExceptionSpec.php @@ -0,0 +1,25 @@ +beConstructedWith('msg', 'CustomClass'); + } + + function it_is_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Exception'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoubleException'); + } + + function its_getClassname_returns_classname() + { + $this->getClassname()->shouldReturn('CustomClass'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..6fe5a19aeb4274da9cdf7c1af9099bf65e6875d2 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/DoubleExceptionSpec.php @@ -0,0 +1,14 @@ +shouldBeAnInstanceOf('RuntimeException'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\DoublerException'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..ad1a439e77c63b2c471fb7f203b227bbc03f4a19 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/InterfaceNotFoundExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('msg', 'CustomInterface'); + } + + function it_extends_ClassNotFoundException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Doubler\ClassNotFoundException'); + } + + function its_getClassname_returns_classname() + { + $this->getClassname()->shouldReturn('CustomInterface'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..5028b0263fb09947d9137fcee14a615bd9fc226e --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotExtendableExceptionSpec.php @@ -0,0 +1,29 @@ +beConstructedWith('', 'User', 'getName'); + } + + function it_is_DoubleException() + { + $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_has_classname() + { + $this->getClassName()->shouldReturn('User'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..a889dd7ef45c64e773a7ad2ae84ca933bd352384 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Doubler/MethodNotFoundExceptionSpec.php @@ -0,0 +1,40 @@ +beConstructedWith('', 'User', 'getName', array(1, 2, 3)); + } + + function it_is_DoubleException() + { + $this->shouldHaveType('Prophecy\Exception\Doubler\DoubleException'); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_has_classnamej() + { + $this->getClassname()->shouldReturn('User'); + } + + function it_has_an_arguments_list() + { + $this->getArguments()->shouldReturn(array(1, 2, 3)); + } + + function it_has_a_default_null_argument_list() + { + $this->beConstructedWith('', 'User', 'getName'); + $this->getArguments()->shouldReturn(null); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..d78ea7386fa95f710acaa470b3d806cfa383b818 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/AggregateExceptionSpec.php @@ -0,0 +1,50 @@ +beConstructedWith(null); + } + + function it_is_prediction_exception() + { + $this->shouldBeAnInstanceOf('RuntimeException'); + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_can_store_objectProphecy_link(ObjectProphecy $object) + { + $this->setObjectProphecy($object); + $this->getObjectProphecy()->shouldReturn($object); + } + + function it_should_not_have_exceptions_at_the_beginning() + { + $this->getExceptions()->shouldHaveCount(0); + } + + function it_should_append_exception_through_append_method(PredictionException $exception) + { + $exception->getMessage()->willReturn('Exception #1'); + + $this->append($exception); + + $this->getExceptions()->shouldReturn(array($exception)); + } + + function it_should_update_message_during_append(PredictionException $exception) + { + $exception->getMessage()->willReturn('Exception #1'); + + $this->append($exception); + + $this->getMessage()->shouldReturn(" Exception #1"); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c2aa31dff9936f57d1c9fb0e1e82119133093107 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/NoCallsExceptionSpec.php @@ -0,0 +1,27 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy); + } + + function it_is_PredictionException() + { + $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_extends_MethodProphecyException() + { + $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..e18932edcdb675bc8ea1d12c127aa86c088fa5e0 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsCountExceptionSpec.php @@ -0,0 +1,27 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy, 5, array($call1, $call2)); + } + + function it_extends_UnexpectedCallsException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prediction\UnexpectedCallsException'); + } + + function it_should_expose_expectedCount_through_getter() + { + $this->getExpectedCount()->shouldReturn(5); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..49d12d597de5b969ddd03b4e2ae59e805b604c0c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prediction/UnexpectedCallsExceptionSpec.php @@ -0,0 +1,33 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy, array($call1, $call2)); + } + + function it_is_PredictionException() + { + $this->shouldHaveType('Prophecy\Exception\Prediction\PredictionException'); + } + + function it_extends_MethodProphecyException() + { + $this->shouldHaveType('Prophecy\Exception\Prophecy\MethodProphecyException'); + } + + function it_should_expose_calls_list_through_getter($call1, $call2) + { + $this->getCalls()->shouldReturn(array($call1, $call2)); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..d05c66a587b15dbd991a8ee6fce11da3021c4dc4 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/MethodProphecyExceptionSpec.php @@ -0,0 +1,28 @@ +getObjectProphecy()->willReturn($objectProphecy); + + $this->beConstructedWith('message', $methodProphecy); + } + + function it_extends_DoubleException() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ObjectProphecyException'); + } + + function it_holds_a_stub_reference($methodProphecy) + { + $this->getMethodProphecy()->shouldReturn($methodProphecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..91ffd5b9c03d67cfdee029e815dec147d9bd94ba --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Exception/Prophecy/ObjectProphecyExceptionSpec.php @@ -0,0 +1,24 @@ +beConstructedWith('message', $objectProphecy); + } + + function it_should_be_a_prophecy_exception() + { + $this->shouldBeAnInstanceOf('Prophecy\Exception\Prophecy\ProphecyException'); + } + + function it_holds_double_reference($objectProphecy) + { + $this->getObjectProphecy()->shouldReturn($objectProphecy); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..4f03db2f2d801cb798c9921b004045947e81abdd --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallPredictionSpec.php @@ -0,0 +1,42 @@ +shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_is_more_than_one_call_been_made( + ObjectProphecy $object, + MethodProphecy $method, + Call $call + ) { + $this->check(array($call), $object, $method)->shouldReturn(null); + } + + function it_throws_NoCallsException_if_no_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + $object->reveal()->willReturn(new \stdClass()); + $object->findProphecyMethodCalls('getName', Argument::any())->willReturn(array()); + + $this->shouldThrow('Prophecy\Exception\Prediction\NoCallsException') + ->duringCheck(array(), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..52ce31cfd1793070d3c34929ed6d02a0d99b5728 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallTimesPredictionSpec.php @@ -0,0 +1,50 @@ +beConstructedWith(2); + } + + function it_is_prediction() + { + $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_were_exact_amount_of_calls_being_made( + ObjectProphecy $object, + MethodProphecy $method, + Call $call1, + Call $call2 + ) { + $this->check(array($call1, $call2), $object, $method)->shouldReturn(null); + } + + function it_throws_UnexpectedCallsCountException_if_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + Call $call, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + + $call->getMethodName()->willReturn('getName'); + $call->getArguments()->willReturn(array(5, 4, 'three')); + $call->getCallPlace()->willReturn('unknown'); + + $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsCountException') + ->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..6da95f06a3292be22337d7159502d965610f73d5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/CallbackPredictionSpec.php @@ -0,0 +1,34 @@ +beConstructedWith('get_class'); + } + + function it_is_prediction() + { + $this->shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_proxies_call_to_callback(ObjectProphecy $object, MethodProphecy $method, Call $call) + { + $returnFirstCallCallback = function ($calls, $object, $method) { + throw new RuntimeException; + }; + + $this->beConstructedWith($returnFirstCallCallback); + + $this->shouldThrow('RuntimeException')->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..b5fa28a9eea472ba692167e5e4eb926e5ad00bbd --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prediction/NoCallsPredictionSpec.php @@ -0,0 +1,41 @@ +shouldHaveType('Prophecy\Prediction\PredictionInterface'); + } + + function it_does_nothing_if_there_is_no_calls_made(ObjectProphecy $object, MethodProphecy $method) + { + $this->check(array(), $object, $method)->shouldReturn(null); + } + + function it_throws_UnexpectedCallsException_if_calls_found( + ObjectProphecy $object, + MethodProphecy $method, + Call $call, + ArgumentsWildcard $arguments + ) { + $method->getObjectProphecy()->willReturn($object); + $method->getMethodName()->willReturn('getName'); + $method->getArgumentsWildcard()->willReturn($arguments); + $arguments->__toString()->willReturn('123'); + + $call->getMethodName()->willReturn('getName'); + $call->getArguments()->willReturn(array(5, 4, 'three')); + $call->getCallPlace()->willReturn('unknown'); + + $this->shouldThrow('Prophecy\Exception\Prediction\UnexpectedCallsException') + ->duringCheck(array($call), $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..fb1dc62eb98d059c5a13484bb38ab47dec4881e2 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/CallbackPromiseSpec.php @@ -0,0 +1,96 @@ +beConstructedWith('get_class'); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_should_execute_closure_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = function ($args) { + return $args[0]; + }; + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_static_array_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = array('spec\Prophecy\Promise\ClassCallback', 'staticCallbackMethod'); + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_instance_array_callback(ObjectProphecy $object, MethodProphecy $method) + { + $class = new ClassCallback(); + $firstArgumentCallback = array($class, 'callbackMethod'); + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_execute_string_function_callback(ObjectProphecy $object, MethodProphecy $method) + { + $firstArgumentCallback = 'spec\Prophecy\Promise\functionCallbackFirstArgument'; + + $this->beConstructedWith($firstArgumentCallback); + + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + +} + +/** + * Class used to test callbackpromise + * + * @param array + * @return string + */ +class ClassCallback +{ + /** + * @param array $args + */ + function callbackMethod($args) + { + return $args[0]; + } + + /** + * @param array $args + */ + static function staticCallbackMethod($args) + { + return $args[0]; + } +} + +/** + * Callback function used to test callbackpromise + * + * @param array + * @return string + */ +function functionCallbackFirstArgument($args) +{ + return $args[0]; +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..1cef3aa641825c361e22ea87b036161ce01de2dc --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnArgumentPromiseSpec.php @@ -0,0 +1,31 @@ +shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_should_return_first_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('one'); + } + + function it_should_return_null_if_no_arguments_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(null); + } + + function it_should_return_nth_argument_if_provided(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith(1); + $this->execute(array('one', 'two'), $object, $method)->shouldReturn('two'); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..bc6a99188e57471f92161b64e7c3bd0cec1a40bb --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ReturnPromiseSpec.php @@ -0,0 +1,49 @@ +beConstructedWith(array(42)); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_returns_value_it_was_constructed_with(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(42); + } + + function it_always_returns_last_value_left_in_the_return_values(ObjectProphecy $object, MethodProphecy $method) + { + $this->execute(array(), $object, $method)->shouldReturn(42); + $this->execute(array(), $object, $method)->shouldReturn(42); + } + + function it_consequently_returns_multiple_values_it_was_constructed_with( + ObjectProphecy $object, + MethodProphecy $method + ) { + $this->beConstructedWith(array(42, 24, 12)); + + $this->execute(array(), $object, $method)->shouldReturn(42); + $this->execute(array(), $object, $method)->shouldReturn(24); + $this->execute(array(), $object, $method)->shouldReturn(12); + } + + function it_returns_null_if_constructed_with_empty_array(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith(array()); + + $this->execute(array(), $object, $method)->shouldReturn(null); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..b5a10bc1eba6b5227cfd7383660816ee7d57e50c --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Promise/ThrowPromiseSpec.php @@ -0,0 +1,92 @@ +beConstructedWith('RuntimeException'); + } + + function it_is_promise() + { + $this->shouldBeAnInstanceOf('Prophecy\Promise\PromiseInterface'); + } + + function it_instantiates_and_throws_exception_from_provided_classname(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith('InvalidArgumentException'); + + $this->shouldThrow('InvalidArgumentException') + ->duringExecute(array(), $object, $method); + } + + function it_instantiates_exceptions_with_required_arguments(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith('spec\Prophecy\Promise\RequiredArgumentException'); + + $this->shouldThrow('spec\Prophecy\Promise\RequiredArgumentException') + ->duringExecute(array(), $object, $method); + } + + function it_throws_provided_exception(ObjectProphecy $object, MethodProphecy $method) + { + $this->beConstructedWith($exc = new \RuntimeException('Some exception')); + + $this->shouldThrow($exc)->duringExecute(array(), $object, $method); + } + + function it_throws_error_instances(ObjectProphecy $object, MethodProphecy $method) + { + if (!class_exists('\Error')) { + throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); + } + + $this->beConstructedWith($exc = new \Error('Error exception')); + + $this->shouldThrow($exc)->duringExecute(array(), $object, $method); + } + + function it_throws_errors_by_class_name() + { + if (!class_exists('\Error')) { + throw new SkippingException('The class Error, introduced in PHP 7, does not exist'); + } + + $this->beConstructedWith('\Error'); + + $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_does_not_throw_something_that_is_not_throwable_by_class_name() + { + $this->beConstructedWith('\stdClass'); + + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_does_not_throw_something_that_is_not_throwable_by_instance() + { + $this->beConstructedWith(new \stdClass()); + + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } + + function it_throws_an_exception_by_class_name() + { + $this->beConstructedWith('\Exception'); + + $this->shouldNotThrow('Prophecy\Exception\InvalidArgumentException')->duringInstantiation(); + } +} + +class RequiredArgumentException extends \Exception +{ + final public function __construct($message, $code) {} +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php new file mode 100644 index 0000000000000000000000000000000000000000..969e644a776ccb8e1bd86ac453db070b0b3151a6 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/MethodProphecySpec.php @@ -0,0 +1,342 @@ +reveal()->willReturn($reflection); + + $this->beConstructedWith($objectProphecy, 'getName', null); + } + + function it_is_initializable() + { + $this->shouldHaveType('Prophecy\Prophecy\MethodProphecy'); + } + + function its_constructor_throws_MethodNotFoundException_for_unexisting_method($objectProphecy) + { + $this->shouldThrow('Prophecy\Exception\Doubler\MethodNotFoundException')->during( + '__construct', array($objectProphecy, 'getUnexisting', null) + ); + } + + function its_constructor_throws_MethodProphecyException_for_final_methods($objectProphecy, ClassWithFinalMethod $subject) + { + $objectProphecy->reveal()->willReturn($subject); + + $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->during( + '__construct', array($objectProphecy, 'finalMethod', null) + ); + } + + function its_constructor_transforms_array_passed_as_3rd_argument_to_ArgumentsWildcard( + $objectProphecy + ) + { + $this->beConstructedWith($objectProphecy, 'getName', array(42, 33)); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldNotBe(null); + $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); + } + + function its_constructor_does_not_touch_third_argument_if_it_is_null($objectProphecy) + { + $this->beConstructedWith($objectProphecy, 'getName', null); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldBe(null); + } + + function it_records_promise_through_will_method(PromiseInterface $promise, $objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->will($promise); + $this->getPromise()->shouldReturn($promise); + } + + function it_adds_itself_to_ObjectProphecy_during_call_to_will(PromiseInterface $objectProphecy, $promise) + { + $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); + + $this->will($promise); + } + + function it_adds_ReturnPromise_during_willReturn_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturn(42); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnPromise'); + } + + function it_adds_ThrowPromise_during_willThrow_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willThrow('RuntimeException'); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ThrowPromise'); + } + + function it_adds_ReturnArgumentPromise_during_willReturnArgument_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturnArgument(); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); + } + + function it_adds_ReturnArgumentPromise_during_willReturnArgument_call_with_index_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->willReturnArgument(1); + $promise = $this->getPromise(); + $promise->shouldBeAnInstanceOf('Prophecy\Promise\ReturnArgumentPromise'); + $promise->execute(array('one', 'two'), $objectProphecy, $this)->shouldReturn('two'); + } + + function it_adds_CallbackPromise_during_will_call_with_callback_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $callback = function () {}; + + $this->will($callback); + $this->getPromise()->shouldBeAnInstanceOf('Prophecy\Promise\CallbackPromise'); + } + + function it_records_prediction_through_should_method(PredictionInterface $prediction, $objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('should', array($prediction)); + $this->getPrediction()->shouldReturn($prediction); + } + + function it_adds_CallbackPrediction_during_should_call_with_callback_argument($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $callback = function () {}; + + $this->callOnWrappedObject('should', array($callback)); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallbackPrediction'); + } + + function it_adds_itself_to_ObjectProphecy_during_call_to_should($objectProphecy, PredictionInterface $prediction) + { + $objectProphecy->addMethodProphecy($this)->shouldBeCalled(); + + $this->callOnWrappedObject('should', array($prediction)); + } + + function it_adds_CallPrediction_during_shouldBeCalled_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldBeCalled', array()); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallPrediction'); + } + + function it_adds_NoCallsPrediction_during_shouldNotBeCalled_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldNotBeCalled', array()); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\NoCallsPrediction'); + } + + function it_adds_CallTimesPrediction_during_shouldBeCalledTimes_call($objectProphecy) + { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->callOnWrappedObject('shouldBeCalledTimes', array(5)); + $this->getPrediction()->shouldBeAnInstanceOf('Prophecy\Prediction\CallTimesPrediction'); + } + + function it_checks_prediction_via_shouldHave_method_call( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + } + + function it_sets_return_promise_during_shouldHave_call_if_none_was_set_before( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + + $this->getPromise()->shouldReturnAnInstanceOf('Prophecy\Promise\ReturnPromise'); + } + + function it_does_not_set_return_promise_during_shouldHave_call_if_it_was_set_before( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction)); + + $this->getPromise()->shouldReturn($promise); + } + + function it_records_checked_predictions( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction1, + PredictionInterface $prediction2, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction1->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); + $prediction2->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willReturn(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + $this->callOnWrappedObject('shouldHave', array($prediction1)); + $this->callOnWrappedObject('shouldHave', array($prediction2)); + + $this->getCheckedPredictions()->shouldReturn(array($prediction1, $prediction2)); + } + + function it_records_even_failed_checked_predictions( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2, + PromiseInterface $promise + ) { + $objectProphecy->addMethodProphecy($this)->willReturn(null); + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->willThrow(new \RuntimeException()); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->will($promise); + $this->withArguments($arguments); + + try { + $this->callOnWrappedObject('shouldHave', array($prediction)); + } catch (\Exception $e) {} + + $this->getCheckedPredictions()->shouldReturn(array($prediction)); + } + + function it_checks_prediction_via_shouldHave_method_call_with_callback( + $objectProphecy, + ArgumentsWildcard $arguments, + Call $call1, + Call $call2 + ) { + $callback = function ($calls, $object, $method) { + throw new \RuntimeException; + }; + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + + $this->withArguments($arguments); + $this->shouldThrow('RuntimeException')->duringShouldHave($callback); + } + + function it_does_nothing_during_checkPrediction_if_no_prediction_set() + { + $this->checkPrediction()->shouldReturn(null); + } + + function it_checks_set_prediction_during_checkPrediction( + $objectProphecy, + ArgumentsWildcard $arguments, + PredictionInterface $prediction, + Call $call1, + Call $call2 + ) { + $prediction->check(array($call1, $call2), $objectProphecy->getWrappedObject(), $this)->shouldBeCalled(); + $objectProphecy->findProphecyMethodCalls('getName', $arguments)->willReturn(array($call1, $call2)); + $objectProphecy->addMethodProphecy($this)->willReturn(null); + + $this->withArguments($arguments); + $this->callOnWrappedObject('should', array($prediction)); + $this->checkPrediction(); + } + + function it_links_back_to_ObjectProphecy_through_getter($objectProphecy) + { + $this->getObjectProphecy()->shouldReturn($objectProphecy); + } + + function it_has_MethodName() + { + $this->getMethodName()->shouldReturn('getName'); + } + + function it_contains_ArgumentsWildcard_it_was_constructed_with($objectProphecy, ArgumentsWildcard $wildcard) + { + $this->beConstructedWith($objectProphecy, 'getName', $wildcard); + + $this->getArgumentsWildcard()->shouldReturn($wildcard); + } + + function its_ArgumentWildcard_is_mutable_through_setter(ArgumentsWildcard $wildcard) + { + $this->withArguments($wildcard); + + $this->getArgumentsWildcard()->shouldReturn($wildcard); + } + + function its_withArguments_transforms_passed_array_into_ArgumentsWildcard() + { + $this->withArguments(array(42, 33)); + + $wildcard = $this->getArgumentsWildcard(); + $wildcard->shouldNotBe(null); + $wildcard->__toString()->shouldReturn('exact(42), exact(33)'); + } + + function its_withArguments_throws_exception_if_wrong_arguments_provided() + { + $this->shouldThrow('Prophecy\Exception\InvalidArgumentException')->duringWithArguments(42); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php new file mode 100644 index 0000000000000000000000000000000000000000..c6afb3ef0224976118f92f9c1e1dcbaa806c7143 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/ObjectProphecySpec.php @@ -0,0 +1,283 @@ +beConstructedWith($lazyDouble); + + $lazyDouble->getInstance()->willReturn($double); + } + + function it_implements_ProphecyInterface() + { + $this->shouldBeAnInstanceOf('Prophecy\Prophecy\ProphecyInterface'); + } + + function it_sets_parentClass_during_willExtend_call($lazyDouble) + { + $lazyDouble->setParentClass('123')->shouldBeCalled(); + + $this->willExtend('123'); + } + + function it_adds_interface_during_willImplement_call($lazyDouble) + { + $lazyDouble->addInterface('222')->shouldBeCalled(); + + $this->willImplement('222'); + } + + function it_sets_constructor_arguments_during_willBeConstructedWith_call($lazyDouble) + { + $lazyDouble->setArguments(array(1, 2, 5))->shouldBeCalled(); + + $this->willBeConstructedWith(array(1, 2, 5)); + } + + function it_does_not_have_method_prophecies_by_default() + { + $this->getMethodProphecies()->shouldHaveCount(0); + } + + function it_should_get_method_prophecies_by_method_name( + MethodProphecy $method1, + MethodProphecy $method2, + ArgumentsWildcard $arguments + ) { + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments); + $method2->getMethodName()->willReturn('setName'); + $method2->getArgumentsWildcard()->willReturn($arguments); + + $this->addMethodProphecy($method1); + $this->addMethodProphecy($method2); + + $methods = $this->getMethodProphecies('setName'); + $methods->shouldHaveCount(1); + $methods[0]->getMethodName()->shouldReturn('setName'); + } + + function it_should_return_empty_array_if_no_method_prophecies_found() + { + $methods = $this->getMethodProphecies('setName'); + $methods->shouldHaveCount(0); + } + + function it_should_proxy_makeProphecyMethodCall_to_CallCenter($lazyDouble, CallCenter $callCenter) + { + $this->beConstructedWith($lazyDouble, $callCenter); + + $callCenter->makeCall($this->getWrappedObject(), 'setName', array('everzet'))->willReturn(42); + + $this->makeProphecyMethodCall('setName', array('everzet'))->shouldReturn(42); + } + + function it_should_reveal_arguments_and_return_values_from_callCenter( + $lazyDouble, + CallCenter $callCenter, + RevealerInterface $revealer + ) { + $this->beConstructedWith($lazyDouble, $callCenter, $revealer); + + $revealer->reveal(array('question'))->willReturn(array('life')); + $revealer->reveal('answer')->willReturn(42); + + $callCenter->makeCall($this->getWrappedObject(), 'setName', array('life'))->willReturn('answer'); + + $this->makeProphecyMethodCall('setName', array('question'))->shouldReturn(42); + } + + function it_should_proxy_getProphecyMethodCalls_to_CallCenter( + $lazyDouble, + CallCenter $callCenter, + ArgumentsWildcard $wildcard, + Call $call + ) { + $this->beConstructedWith($lazyDouble, $callCenter); + + $callCenter->findCalls('setName', $wildcard)->willReturn(array($call)); + + $this->findProphecyMethodCalls('setName', $wildcard)->shouldReturn(array($call)); + } + + function its_addMethodProphecy_adds_method_prophecy( + MethodProphecy $methodProphecy, + ArgumentsWildcard $argumentsWildcard + ) { + $methodProphecy->getArgumentsWildcard()->willReturn($argumentsWildcard); + $methodProphecy->getMethodName()->willReturn('getUsername'); + + $this->addMethodProphecy($methodProphecy); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array($methodProphecy) + )); + } + + function its_addMethodProphecy_handles_prophecies_with_different_arguments( + MethodProphecy $methodProphecy1, + MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->getMethodName()->willReturn('getUsername'); + + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->getMethodName()->willReturn('getUsername'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array( + $methodProphecy1, + $methodProphecy2, + ) + )); + } + + function its_addMethodProphecy_handles_prophecies_for_different_methods( + MethodProphecy $methodProphecy1, + MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->getMethodName()->willReturn('getUsername'); + + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->getMethodName()->willReturn('isUsername'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->getMethodProphecies()->shouldReturn(array( + 'getUsername' => array( + $methodProphecy1 + ), + 'isUsername' => array( + $methodProphecy2 + ) + )); + } + + function its_addMethodProphecy_throws_exception_when_method_has_no_ArgumentsWildcard(MethodProphecy $methodProphecy) + { + $methodProphecy->getArgumentsWildcard()->willReturn(null); + $methodProphecy->getObjectProphecy()->willReturn($this); + $methodProphecy->getMethodName()->willReturn('getTitle'); + + $this->shouldThrow('Prophecy\Exception\Prophecy\MethodProphecyException')->duringAddMethodProphecy( + $methodProphecy + ); + } + + function it_returns_null_after_checkPredictions_call_if_there_is_no_method_prophecies() + { + $this->checkProphecyMethodsPredictions()->shouldReturn(null); + } + + function it_throws_AggregateException_during_checkPredictions_if_predictions_fail( + MethodProphecy $methodProphecy1, MethodProphecy $methodProphecy2, + ArgumentsWildcard $argumentsWildcard1, + ArgumentsWildcard $argumentsWildcard2 + ) { + $methodProphecy1->getMethodName()->willReturn('getName'); + $methodProphecy1->getArgumentsWildcard()->willReturn($argumentsWildcard1); + $methodProphecy1->checkPrediction() + ->willThrow('Prophecy\Exception\Prediction\AggregateException'); + + $methodProphecy2->getMethodName()->willReturn('setName'); + $methodProphecy2->getArgumentsWildcard()->willReturn($argumentsWildcard2); + $methodProphecy2->checkPrediction() + ->willThrow('Prophecy\Exception\Prediction\AggregateException'); + + $this->addMethodProphecy($methodProphecy1); + $this->addMethodProphecy($methodProphecy2); + + $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') + ->duringCheckProphecyMethodsPredictions(); + } + + function it_returns_new_MethodProphecy_instance_for_arbitrary_call( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $return = $this->getProphecy(); + $return->shouldBeAnInstanceOf('Prophecy\Prophecy\MethodProphecy'); + $return->getMethodName()->shouldReturn('getProphecy'); + } + + function it_returns_same_MethodProphecy_for_same_registered_signature( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3)); + $methodProphecy2 = $this->getProphecy(1, 2, 3); + + $methodProphecy2->shouldBe($methodProphecy1); + } + + function it_returns_new_MethodProphecy_for_different_signatures( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $value = new ObjectProphecySpecFixtureB('ABC'); + $value2 = new ObjectProphecySpecFixtureB('CBA'); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(1, 2, 3, $value)); + $methodProphecy2 = $this->getProphecy(1, 2, 3, $value2); + + $methodProphecy2->shouldNotBe($methodProphecy1); + } + + function it_returns_new_MethodProphecy_for_all_callback_signatures( + Doubler $doubler, + ProphecySubjectInterface $reflection + ) { + $doubler->double(Argument::any())->willReturn($reflection); + + $this->addMethodProphecy($methodProphecy1 = $this->getProphecy(function(){})); + $methodProphecy2 = $this->getProphecy(function(){}); + + $methodProphecy2->shouldNotBe($methodProphecy1); + } +} + +class ObjectProphecySpecFixtureA +{ + public $errors; +} + +class ObjectProphecySpecFixtureB extends ObjectProphecySpecFixtureA +{ + public $errors; + public $value = null; + + public function __construct($value) + { + $this->value = $value; + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..fcaa7ca3a3b194b9d6ef6df4e766c7dab04cb486 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Prophecy/RevealerSpec.php @@ -0,0 +1,44 @@ +shouldBeAnInstanceOf('Prophecy\Prophecy\RevealerInterface'); + } + + function it_reveals_single_instance_of_ProphecyInterface(ProphecyInterface $prophecy, \stdClass $object) + { + $prophecy->reveal()->willReturn($object); + + $this->reveal($prophecy)->shouldReturn($object); + } + + function it_reveals_instances_of_ProphecyInterface_inside_array( + ProphecyInterface $prophecy1, + ProphecyInterface $prophecy2, + \stdClass $object1, + \stdClass $object2 + ) { + $prophecy1->reveal()->willReturn($object1); + $prophecy2->reveal()->willReturn($object2); + + $this->reveal(array( + array('item' => $prophecy2), + $prophecy1 + ))->shouldReturn(array( + array('item' => $object2), + $object1 + )); + } + + function it_does_not_touch_non_prophecy_interface() + { + $this->reveal(42)->shouldReturn(42); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..67f0275259e91a2bbfc2adaca8e0b8a9cdf705f5 --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/ProphetSpec.php @@ -0,0 +1,81 @@ +double(null, array())->willReturn($double); + + $this->beConstructedWith($doubler); + } + + function it_constructs_new_prophecy_on_prophesize_call() + { + $prophecy = $this->prophesize(); + $prophecy->shouldBeAnInstanceOf('Prophecy\Prophecy\ObjectProphecy'); + } + + function it_constructs_new_prophecy_with_parent_class_if_specified($doubler, ProphecySubjectInterface $newDouble) + { + $doubler->double(Argument::any(), array())->willReturn($newDouble); + + $this->prophesize('Prophecy\Prophet')->reveal()->shouldReturn($newDouble); + } + + function it_constructs_new_prophecy_with_interface_if_specified($doubler, ProphecySubjectInterface $newDouble) + { + $doubler->double(null, Argument::any())->willReturn($newDouble); + + $this->prophesize('ArrayAccess')->reveal()->shouldReturn($newDouble); + } + + function it_exposes_all_created_prophecies_through_getter() + { + $prophecy1 = $this->prophesize(); + $prophecy2 = $this->prophesize(); + + $this->getProphecies()->shouldReturn(array($prophecy1, $prophecy2)); + } + + function it_does_nothing_during_checkPredictions_call_if_no_predictions_defined() + { + $this->checkPredictions()->shouldReturn(null); + } + + function it_throws_AggregateException_if_defined_predictions_fail( + MethodProphecy $method1, + MethodProphecy $method2, + ArgumentsWildcard $arguments1, + ArgumentsWildcard $arguments2 + ) { + $method1->getMethodName()->willReturn('getName'); + $method1->getArgumentsWildcard()->willReturn($arguments1); + $method1->checkPrediction()->willReturn(null); + + $method2->getMethodName()->willReturn('isSet'); + $method2->getArgumentsWildcard()->willReturn($arguments2); + $method2->checkPrediction()->willThrow( + 'Prophecy\Exception\Prediction\AggregateException' + ); + + $this->prophesize()->addMethodProphecy($method1); + $this->prophesize()->addMethodProphecy($method2); + + $this->shouldThrow('Prophecy\Exception\Prediction\AggregateException') + ->duringCheckPredictions(); + } + + function it_exposes_doubler_through_getter($doubler) + { + $this->getDoubler()->shouldReturn($doubler); + } +} diff --git a/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php b/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php new file mode 100644 index 0000000000000000000000000000000000000000..80573cffb349af8bf5686251b4aabf3ff5a5538a --- /dev/null +++ b/vendor/phpspec/prophecy/spec/Prophecy/Util/StringUtilSpec.php @@ -0,0 +1,91 @@ +stringify(42)->shouldReturn('42'); + } + + function it_generates_proper_string_representation_for_string() + { + $this->stringify('some string')->shouldReturn('"some string"'); + } + + function it_generates_single_line_representation_for_multiline_string() + { + $this->stringify("some\nstring")->shouldReturn('"some\\nstring"'); + } + + function it_generates_proper_string_representation_for_double() + { + $this->stringify(42.3)->shouldReturn('42.3'); + } + + function it_generates_proper_string_representation_for_boolean_true() + { + $this->stringify(true)->shouldReturn('true'); + } + + function it_generates_proper_string_representation_for_boolean_false() + { + $this->stringify(false)->shouldReturn('false'); + } + + function it_generates_proper_string_representation_for_null() + { + $this->stringify(null)->shouldReturn('null'); + } + + function it_generates_proper_string_representation_for_empty_array() + { + $this->stringify(array())->shouldReturn('[]'); + } + + function it_generates_proper_string_representation_for_array() + { + $this->stringify(array('zet', 42))->shouldReturn('["zet", 42]'); + } + + function it_generates_proper_string_representation_for_hash_containing_one_value() + { + $this->stringify(array('ever' => 'zet'))->shouldReturn('["ever" => "zet"]'); + } + + function it_generates_proper_string_representation_for_hash() + { + $this->stringify(array('ever' => 'zet', 52 => 'hey', 'num' => 42))->shouldReturn( + '["ever" => "zet", 52 => "hey", "num" => 42]' + ); + } + + function it_generates_proper_string_representation_for_resource() + { + $resource = fopen(__FILE__, 'r'); + $this->stringify($resource)->shouldReturn('stream:'.$resource); + } + + function it_generates_proper_string_representation_for_object(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ) . " Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n)"; + + $this->stringify($object)->shouldReturn("$objHash"); + } + + function it_generates_proper_string_representation_for_object_without_exporting(\stdClass $object) + { + $objHash = sprintf('%s:%s', + get_class($object->getWrappedObject()), + spl_object_hash($object->getWrappedObject()) + ); + + $this->stringify($object, false)->shouldReturn("$objHash"); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/vendor/phpspec/prophecy/src/Prophecy/Argument.php new file mode 100644 index 0000000000000000000000000000000000000000..fde6aa9000dfeb1b2fa7c7d242358e2b095b9aa6 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument.php @@ -0,0 +1,212 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy; + +use Prophecy\Argument\Token; + +/** + * Argument tokens shortcuts. + * + * @author Konstantin Kudryashov + */ +class Argument +{ + /** + * Checks that argument is exact value or object. + * + * @param mixed $value + * + * @return Token\ExactValueToken + */ + public static function exact($value) + { + return new Token\ExactValueToken($value); + } + + /** + * Checks that argument is of specific type or instance of specific class. + * + * @param string $type Type name (`integer`, `string`) or full class name + * + * @return Token\TypeToken + */ + public static function type($type) + { + return new Token\TypeToken($type); + } + + /** + * Checks that argument object has specific state. + * + * @param string $methodName + * @param mixed $value + * + * @return Token\ObjectStateToken + */ + public static function which($methodName, $value) + { + return new Token\ObjectStateToken($methodName, $value); + } + + /** + * Checks that argument matches provided callback. + * + * @param callable $callback + * + * @return Token\CallbackToken + */ + public static function that($callback) + { + return new Token\CallbackToken($callback); + } + + /** + * Matches any single value. + * + * @return Token\AnyValueToken + */ + public static function any() + { + return new Token\AnyValueToken; + } + + /** + * Matches all values to the rest of the signature. + * + * @return Token\AnyValuesToken + */ + public static function cetera() + { + return new Token\AnyValuesToken; + } + + /** + * Checks that argument matches all tokens + * + * @param mixed ... a list of tokens + * + * @return Token\LogicalAndToken + */ + public static function allOf() + { + return new Token\LogicalAndToken(func_get_args()); + } + + /** + * Checks that argument array or countable object has exact number of elements. + * + * @param integer $value array elements count + * + * @return Token\ArrayCountToken + */ + public static function size($value) + { + return new Token\ArrayCountToken($value); + } + + /** + * Checks that argument array contains (key, value) pair + * + * @param mixed $key exact value or token + * @param mixed $value exact value or token + * + * @return Token\ArrayEntryToken + */ + public static function withEntry($key, $value) + { + return new Token\ArrayEntryToken($key, $value); + } + + /** + * Checks that arguments array entries all match value + * + * @param mixed $value + * + * @return Token\ArrayEveryEntryToken + */ + public static function withEveryEntry($value) + { + return new Token\ArrayEveryEntryToken($value); + } + + /** + * Checks that argument array contains value + * + * @param mixed $value + * + * @return Token\ArrayEntryToken + */ + public static function containing($value) + { + return new Token\ArrayEntryToken(self::any(), $value); + } + + /** + * Checks that argument array has key + * + * @param mixed $key exact value or token + * + * @return Token\ArrayEntryToken + */ + public static function withKey($key) + { + return new Token\ArrayEntryToken($key, self::any()); + } + + /** + * Checks that argument does not match the value|token. + * + * @param mixed $value either exact value or argument token + * + * @return Token\LogicalNotToken + */ + public static function not($value) + { + return new Token\LogicalNotToken($value); + } + + /** + * @param string $value + * + * @return Token\StringContainsToken + */ + public static function containingString($value) + { + return new Token\StringContainsToken($value); + } + + /** + * Checks that argument is identical value. + * + * @param mixed $value + * + * @return Token\IdenticalValueToken + */ + public static function is($value) + { + return new Token\IdenticalValueToken($value); + } + + /** + * Check that argument is same value when rounding to the + * given precision. + * + * @param float $value + * @param float $precision + * + * @return Token\ApproximateValueToken + */ + public static function approximate($value, $precision = 0) + { + return new Token\ApproximateValueToken($value, $precision); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php new file mode 100644 index 0000000000000000000000000000000000000000..a088f21d21df4e9d233b7003cf40f2fdd1bfd5ab --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php @@ -0,0 +1,101 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument; + +/** + * Arguments wildcarding. + * + * @author Konstantin Kudryashov + */ +class ArgumentsWildcard +{ + /** + * @var Token\TokenInterface[] + */ + private $tokens = array(); + private $string; + + /** + * Initializes wildcard. + * + * @param array $arguments Array of argument tokens or values + */ + public function __construct(array $arguments) + { + foreach ($arguments as $argument) { + if (!$argument instanceof Token\TokenInterface) { + $argument = new Token\ExactValueToken($argument); + } + + $this->tokens[] = $argument; + } + } + + /** + * Calculates wildcard match score for provided arguments. + * + * @param array $arguments + * + * @return false|int False OR integer score (higher - better) + */ + public function scoreArguments(array $arguments) + { + if (0 == count($arguments) && 0 == count($this->tokens)) { + return 1; + } + + $arguments = array_values($arguments); + $totalScore = 0; + foreach ($this->tokens as $i => $token) { + $argument = isset($arguments[$i]) ? $arguments[$i] : null; + if (1 >= $score = $token->scoreArgument($argument)) { + return false; + } + + $totalScore += $score; + + if (true === $token->isLast()) { + return $totalScore; + } + } + + if (count($arguments) > count($this->tokens)) { + return false; + } + + return $totalScore; + } + + /** + * Returns string representation for wildcard. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = implode(', ', array_map(function ($token) { + return (string) $token; + }, $this->tokens)); + } + + return $this->string; + } + + /** + * @return array + */ + public function getTokens() + { + return $this->tokens; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php new file mode 100644 index 0000000000000000000000000000000000000000..50988112c5a59c90f2ba06d8a6405ae4a75c37e9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Any single value token. + * + * @author Konstantin Kudryashov + */ +class AnyValueToken implements TokenInterface +{ + /** + * Always scores 3 for any argument. + * + * @param $argument + * + * @return int + */ + public function scoreArgument($argument) + { + return 3; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return '*'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php new file mode 100644 index 0000000000000000000000000000000000000000..f76b17bc0ba3748624c757b555f7f77ea7252589 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Any values token. + * + * @author Konstantin Kudryashov + */ +class AnyValuesToken implements TokenInterface +{ + /** + * Always scores 2 for any argument. + * + * @param $argument + * + * @return int + */ + public function scoreArgument($argument) + { + return 2; + } + + /** + * Returns true to stop wildcard from processing other tokens. + * + * @return bool + */ + public function isLast() + { + return true; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return '* [, ...]'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php new file mode 100644 index 0000000000000000000000000000000000000000..d4918b1ad8458cc16d89dcd861fc0925e517798b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php @@ -0,0 +1,55 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Approximate value token + * + * @author Daniel Leech + */ +class ApproximateValueToken implements TokenInterface +{ + private $value; + private $precision; + + public function __construct($value, $precision = 0) + { + $this->value = $value; + $this->precision = $precision; + } + + /** + * {@inheritdoc} + */ + public function scoreArgument($argument) + { + return round($argument, $this->precision) === round($this->value, $this->precision) ? 10 : false; + } + + /** + * {@inheritdoc} + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('≅%s', round($this->value, $this->precision)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php new file mode 100644 index 0000000000000000000000000000000000000000..96b4befd7f512d8e8690107a01dcd1077e33870e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php @@ -0,0 +1,86 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Array elements count token. + * + * @author Boris Mikhaylov + */ + +class ArrayCountToken implements TokenInterface +{ + private $count; + + /** + * @param integer $value + */ + public function __construct($value) + { + $this->count = $value; + } + + /** + * Scores 6 when argument has preset number of elements. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false; + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('count(%s)', $this->count); + } + + /** + * Returns true if object is either array or instance of \Countable + * + * @param $argument + * @return bool + */ + private function isCountable($argument) + { + return (is_array($argument) || $argument instanceof \Countable); + } + + /** + * Returns true if $argument has expected number of elements + * + * @param array|\Countable $argument + * + * @return bool + */ + private function hasProperCount($argument) + { + return $this->count === count($argument); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php new file mode 100644 index 0000000000000000000000000000000000000000..0305fc7207c4c55c22e844e519718171b489811b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php @@ -0,0 +1,143 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Array entry token. + * + * @author Boris Mikhaylov + */ +class ArrayEntryToken implements TokenInterface +{ + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $key; + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $value; + + /** + * @param mixed $key exact value or token + * @param mixed $value exact value or token + */ + public function __construct($key, $value) + { + $this->key = $this->wrapIntoExactValueToken($key); + $this->value = $this->wrapIntoExactValueToken($value); + } + + /** + * Scores half of combined scores from key and value tokens for same entry. Capped at 8. + * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken. + * + * @param array|\ArrayAccess|\Traversable $argument + * + * @throws \Prophecy\Exception\InvalidArgumentException + * @return bool|int + */ + public function scoreArgument($argument) + { + if ($argument instanceof \Traversable) { + $argument = iterator_to_array($argument); + } + + if ($argument instanceof \ArrayAccess) { + $argument = $this->convertArrayAccessToEntry($argument); + } + + if (!is_array($argument) || empty($argument)) { + return false; + } + + $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument)); + $valueScores = array_map(array($this->value,'scoreArgument'), $argument); + $scoreEntry = function ($value, $key) { + return $value && $key ? min(8, ($key + $value) / 2) : false; + }; + + return max(array_map($scoreEntry, $valueScores, $keyScores)); + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('[..., %s => %s, ...]', $this->key, $this->value); + } + + /** + * Returns key + * + * @return TokenInterface + */ + public function getKey() + { + return $this->key; + } + + /** + * Returns value + * + * @return TokenInterface + */ + public function getValue() + { + return $this->value; + } + + /** + * Wraps non token $value into ExactValueToken + * + * @param $value + * @return TokenInterface + */ + private function wrapIntoExactValueToken($value) + { + return $value instanceof TokenInterface ? $value : new ExactValueToken($value); + } + + /** + * Converts instance of \ArrayAccess to key => value array entry + * + * @param \ArrayAccess $object + * + * @return array|null + * @throws \Prophecy\Exception\InvalidArgumentException + */ + private function convertArrayAccessToEntry(\ArrayAccess $object) + { + if (!$this->key instanceof ExactValueToken) { + throw new InvalidArgumentException(sprintf( + 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL. + 'But you used `%s`.', + $this->key + )); + } + + $key = $this->key->getValue(); + + return $object->offsetExists($key) ? array($key => $object[$key]) : array(); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php new file mode 100644 index 0000000000000000000000000000000000000000..5d41fa487c4c0332f14cdc9521ff602a12296a07 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php @@ -0,0 +1,82 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Array every entry token. + * + * @author Adrien Brault + */ +class ArrayEveryEntryToken implements TokenInterface +{ + /** + * @var TokenInterface + */ + private $value; + + /** + * @param mixed $value exact value or token + */ + public function __construct($value) + { + if (!$value instanceof TokenInterface) { + $value = new ExactValueToken($value); + } + + $this->value = $value; + } + + /** + * {@inheritdoc} + */ + public function scoreArgument($argument) + { + if (!$argument instanceof \Traversable && !is_array($argument)) { + return false; + } + + $scores = array(); + foreach ($argument as $key => $argumentEntry) { + $scores[] = $this->value->scoreArgument($argumentEntry); + } + + if (empty($scores) || in_array(false, $scores, true)) { + return false; + } + + return array_sum($scores) / count($scores); + } + + /** + * {@inheritdoc} + */ + public function isLast() + { + return false; + } + + /** + * {@inheritdoc} + */ + public function __toString() + { + return sprintf('[%s, ..., %s]', $this->value, $this->value); + } + + /** + * @return TokenInterface + */ + public function getValue() + { + return $this->value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php new file mode 100644 index 0000000000000000000000000000000000000000..f45ba20becd0d180bedc003efb83e0b743bfa148 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php @@ -0,0 +1,75 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Callback-verified token. + * + * @author Konstantin Kudryashov + */ +class CallbackToken implements TokenInterface +{ + private $callback; + + /** + * Initializes token. + * + * @param callable $callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackToken, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Scores 7 if callback returns true, false otherwise. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return call_user_func($this->callback, $argument) ? 7 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return 'callback()'; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php new file mode 100644 index 0000000000000000000000000000000000000000..aa960f3fbc45c420be05a11bff3e7bad19865772 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php @@ -0,0 +1,116 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Util\StringUtil; + +/** + * Exact value token. + * + * @author Konstantin Kudryashov + */ +class ExactValueToken implements TokenInterface +{ + private $value; + private $string; + private $util; + private $comparatorFactory; + + /** + * Initializes token. + * + * @param mixed $value + * @param StringUtil $util + * @param ComparatorFactory $comparatorFactory + */ + public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null) + { + $this->value = $value; + $this->util = $util ?: new StringUtil(); + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Scores 10 if argument matches preset value. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (is_object($argument) && is_object($this->value)) { + $comparator = $this->comparatorFactory->getComparatorFor( + $argument, $this->value + ); + + try { + $comparator->assertEquals($argument, $this->value); + return 10; + } catch (ComparisonFailure $failure) {} + } + + // If either one is an object it should be castable to a string + if (is_object($argument) xor is_object($this->value)) { + if (is_object($argument) && !method_exists($argument, '__toString')) { + return false; + } + + if (is_object($this->value) && !method_exists($this->value, '__toString')) { + return false; + } + } elseif (is_numeric($argument) && is_numeric($this->value)) { + // noop + } elseif (gettype($argument) !== gettype($this->value)) { + return false; + } + + return $argument == $this->value ? 10 : false; + } + + /** + * Returns preset value against which token checks arguments. + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = sprintf('exact(%s)', $this->util->stringify($this->value)); + } + + return $this->string; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php new file mode 100644 index 0000000000000000000000000000000000000000..0b6d23ab667daa1dc6cb7d62031e083006c142ee --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php @@ -0,0 +1,74 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Util\StringUtil; + +/** + * Identical value token. + * + * @author Florian Voutzinos + */ +class IdenticalValueToken implements TokenInterface +{ + private $value; + private $string; + private $util; + + /** + * Initializes token. + * + * @param mixed $value + * @param StringUtil $util + */ + public function __construct($value, StringUtil $util = null) + { + $this->value = $value; + $this->util = $util ?: new StringUtil(); + } + + /** + * Scores 11 if argument matches preset value. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return $argument === $this->value ? 11 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + if (null === $this->string) { + $this->string = sprintf('identical(%s)', $this->util->stringify($this->value)); + } + + return $this->string; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php new file mode 100644 index 0000000000000000000000000000000000000000..4ee1b25e11f22d633999058b6c1a13e5e761659d --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php @@ -0,0 +1,80 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Logical AND token. + * + * @author Boris Mikhaylov + */ +class LogicalAndToken implements TokenInterface +{ + private $tokens = array(); + + /** + * @param array $arguments exact values or tokens + */ + public function __construct(array $arguments) + { + foreach ($arguments as $argument) { + if (!$argument instanceof TokenInterface) { + $argument = new ExactValueToken($argument); + } + $this->tokens[] = $argument; + } + } + + /** + * Scores maximum score from scores returned by tokens for this argument if all of them score. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (0 === count($this->tokens)) { + return false; + } + + $maxScore = 0; + foreach ($this->tokens as $token) { + $score = $token->scoreArgument($argument); + if (false === $score) { + return false; + } + $maxScore = max($score, $maxScore); + } + + return $maxScore; + } + + /** + * Returns false. + * + * @return boolean + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('bool(%s)', implode(' AND ', $this->tokens)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php new file mode 100644 index 0000000000000000000000000000000000000000..623efa57a7f7c1f6600cbb360517094a8ec86a35 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php @@ -0,0 +1,73 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Logical NOT token. + * + * @author Boris Mikhaylov + */ +class LogicalNotToken implements TokenInterface +{ + /** @var \Prophecy\Argument\Token\TokenInterface */ + private $token; + + /** + * @param mixed $value exact value or token + */ + public function __construct($value) + { + $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value); + } + + /** + * Scores 4 when preset token does not match the argument. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + return false === $this->token->scoreArgument($argument) ? 4 : false; + } + + /** + * Returns true if preset token is last. + * + * @return bool|int + */ + public function isLast() + { + return $this->token->isLast(); + } + + /** + * Returns originating token. + * + * @return TokenInterface + */ + public function getOriginatingToken() + { + return $this->token; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('not(%s)', $this->token); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php new file mode 100644 index 0000000000000000000000000000000000000000..d7710776761da2660371e58a9519f8939b986829 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php @@ -0,0 +1,104 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Util\StringUtil; + +/** + * Object state-checker token. + * + * @author Konstantin Kudryashov + */ +class ObjectStateToken implements TokenInterface +{ + private $name; + private $value; + private $util; + private $comparatorFactory; + + /** + * Initializes token. + * + * @param string $methodName + * @param mixed $value Expected return value + * @param null|StringUtil $util + * @param ComparatorFactory $comparatorFactory + */ + public function __construct( + $methodName, + $value, + StringUtil $util = null, + ComparatorFactory $comparatorFactory = null + ) { + $this->name = $methodName; + $this->value = $value; + $this->util = $util ?: new StringUtil; + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Scores 8 if argument is an object, which method returns expected value. + * + * @param mixed $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + if (is_object($argument) && method_exists($argument, $this->name)) { + $actual = call_user_func(array($argument, $this->name)); + + $comparator = $this->comparatorFactory->getComparatorFor( + $this->value, $actual + ); + + try { + $comparator->assertEquals($this->value, $actual); + return 8; + } catch (ComparisonFailure $failure) { + return false; + } + } + + if (is_object($argument) && property_exists($argument, $this->name)) { + return $argument->{$this->name} === $this->value ? 8 : false; + } + + return false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('state(%s(), %s)', + $this->name, + $this->util->stringify($this->value) + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php new file mode 100644 index 0000000000000000000000000000000000000000..24ff8c2ecf54e38fab010d4b3aae84343bf1e40e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php @@ -0,0 +1,67 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * String contains token. + * + * @author Peter Mitchell + */ +class StringContainsToken implements TokenInterface +{ + private $value; + + /** + * Initializes token. + * + * @param string $value + */ + public function __construct($value) + { + $this->value = $value; + } + + public function scoreArgument($argument) + { + return strpos($argument, $this->value) !== false ? 6 : false; + } + + /** + * Returns preset value against which token checks arguments. + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('contains("%s")', $this->value); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..625d3bad22f06bf2524b75cf069d18c7e3b0775a --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php @@ -0,0 +1,43 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +/** + * Argument token interface. + * + * @author Konstantin Kudryashov + */ +interface TokenInterface +{ + /** + * Calculates token match score for provided argument. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument); + + /** + * Returns true if this token prevents check of other tokens (is last one). + * + * @return bool|int + */ + public function isLast(); + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php new file mode 100644 index 0000000000000000000000000000000000000000..cb65132ca0e034ba8e898fbf647be6327544f144 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php @@ -0,0 +1,76 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Argument\Token; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Value type token. + * + * @author Konstantin Kudryashov + */ +class TypeToken implements TokenInterface +{ + private $type; + + /** + * @param string $type + */ + public function __construct($type) + { + $checker = "is_{$type}"; + if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) { + throw new InvalidArgumentException(sprintf( + 'Type or class name expected as an argument to TypeToken, but got %s.', $type + )); + } + + $this->type = $type; + } + + /** + * Scores 5 if argument has the same type this token was constructed with. + * + * @param $argument + * + * @return bool|int + */ + public function scoreArgument($argument) + { + $checker = "is_{$this->type}"; + if (function_exists($checker)) { + return call_user_func($checker, $argument) ? 5 : false; + } + + return $argument instanceof $this->type ? 5 : false; + } + + /** + * Returns false. + * + * @return bool + */ + public function isLast() + { + return false; + } + + /** + * Returns string representation for token. + * + * @return string + */ + public function __toString() + { + return sprintf('type(%s)', $this->type); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php new file mode 100644 index 0000000000000000000000000000000000000000..2f3fbadb1a6d8006f51aa8f4c0a410959a553725 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php @@ -0,0 +1,127 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Call; + +use Exception; + +/** + * Call object. + * + * @author Konstantin Kudryashov + */ +class Call +{ + private $methodName; + private $arguments; + private $returnValue; + private $exception; + private $file; + private $line; + + /** + * Initializes call. + * + * @param string $methodName + * @param array $arguments + * @param mixed $returnValue + * @param Exception $exception + * @param null|string $file + * @param null|int $line + */ + public function __construct($methodName, array $arguments, $returnValue, + Exception $exception = null, $file, $line) + { + $this->methodName = $methodName; + $this->arguments = $arguments; + $this->returnValue = $returnValue; + $this->exception = $exception; + + if ($file) { + $this->file = $file; + $this->line = intval($line); + } + } + + /** + * Returns called method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * Returns called method arguments. + * + * @return array + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Returns called method return value. + * + * @return null|mixed + */ + public function getReturnValue() + { + return $this->returnValue; + } + + /** + * Returns exception that call thrown. + * + * @return null|Exception + */ + public function getException() + { + return $this->exception; + } + + /** + * Returns callee filename. + * + * @return string + */ + public function getFile() + { + return $this->file; + } + + /** + * Returns callee line number. + * + * @return int + */ + public function getLine() + { + return $this->line; + } + + /** + * Returns short notation for callee place. + * + * @return string + */ + public function getCallPlace() + { + if (null === $this->file) { + return 'unknown'; + } + + return sprintf('%s:%d', $this->file, $this->line); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php new file mode 100644 index 0000000000000000000000000000000000000000..53b80f058ba84e4d232b8ae32398ed54ec021312 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php @@ -0,0 +1,171 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Call; + +use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Call\UnexpectedCallException; + +/** + * Calls receiver & manager. + * + * @author Konstantin Kudryashov + */ +class CallCenter +{ + private $util; + + /** + * @var Call[] + */ + private $recordedCalls = array(); + + /** + * Initializes call center. + * + * @param StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Makes and records specific method call for object prophecy. + * + * @param ObjectProphecy $prophecy + * @param string $methodName + * @param array $arguments + * + * @return mixed Returns null if no promise for prophecy found or promise return value. + * + * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found + */ + public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments) + { + // For efficiency exclude 'args' from the generated backtrace + if (PHP_VERSION_ID >= 50400) { + // Limit backtrace to last 3 calls as we don't use the rest + // Limit argument was introduced in PHP 5.4.0 + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3); + } elseif (defined('DEBUG_BACKTRACE_IGNORE_ARGS')) { + // DEBUG_BACKTRACE_IGNORE_ARGS was introduced in PHP 5.3.6 + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + } else { + $backtrace = debug_backtrace(); + } + + $file = $line = null; + if (isset($backtrace[2]) && isset($backtrace[2]['file'])) { + $file = $backtrace[2]['file']; + $line = $backtrace[2]['line']; + } + + // If no method prophecies defined, then it's a dummy, so we'll just return null + if ('__destruct' === $methodName || 0 == count($prophecy->getMethodProphecies())) { + $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line); + + return null; + } + + // There are method prophecies, so it's a fake/stub. Searching prophecy for this call + $matches = array(); + foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) { + if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) { + $matches[] = array($score, $methodProphecy); + } + } + + // If fake/stub doesn't have method prophecy for this call - throw exception + if (!count($matches)) { + throw $this->createUnexpectedCallException($prophecy, $methodName, $arguments); + } + + // Sort matches by their score value + @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; }); + + // If Highest rated method prophecy has a promise - execute it or return null instead + $methodProphecy = $matches[0][1]; + $returnValue = null; + $exception = null; + if ($promise = $methodProphecy->getPromise()) { + try { + $returnValue = $promise->execute($arguments, $prophecy, $methodProphecy); + } catch (\Exception $e) { + $exception = $e; + } + } + + if ($methodProphecy->hasReturnVoid() && $returnValue !== null) { + throw new MethodProphecyException( + "The method \"$methodName\" has a void return type, but the promise returned a value", + $methodProphecy + ); + } + + $this->recordedCalls[] = new Call( + $methodName, $arguments, $returnValue, $exception, $file, $line + ); + + if (null !== $exception) { + throw $exception; + } + + return $returnValue; + } + + /** + * Searches for calls by method name & arguments wildcard. + * + * @param string $methodName + * @param ArgumentsWildcard $wildcard + * + * @return Call[] + */ + public function findCalls($methodName, ArgumentsWildcard $wildcard) + { + return array_values( + array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) { + return $methodName === $call->getMethodName() + && 0 < $wildcard->scoreArguments($call->getArguments()) + ; + }) + ); + } + + private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName, + array $arguments) + { + $classname = get_class($prophecy->reveal()); + $argstring = implode(', ', array_map(array($this->util, 'stringify'), $arguments)); + $expected = implode("\n", array_map(function (MethodProphecy $methodProphecy) { + return sprintf(' - %s(%s)', + $methodProphecy->getMethodName(), + $methodProphecy->getArgumentsWildcard() + ); + }, call_user_func_array('array_merge', $prophecy->getMethodProphecies()))); + + return new UnexpectedCallException( + sprintf( + "Method call:\n". + " - %s(%s)\n". + "on %s was not expected, expected calls were:\n%s", + + $methodName, $argstring, $classname, $expected + ), + $prophecy, $methodName, $arguments + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php new file mode 100644 index 0000000000000000000000000000000000000000..874e474cc3d3db11ba4e2e8b704b8cc21546a967 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php @@ -0,0 +1,42 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use SebastianBergmann\Comparator\Comparator; +use SebastianBergmann\Comparator\ComparisonFailure; + +/** + * Closure comparator. + * + * @author Konstantin Kudryashov + */ +final class ClosureComparator extends Comparator +{ + public function accepts($expected, $actual) + { + return is_object($expected) && $expected instanceof \Closure + && is_object($actual) && $actual instanceof \Closure; + } + + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) + { + throw new ComparisonFailure( + $expected, + $actual, + // we don't need a diff + '', + '', + false, + 'all closures are born different' + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php new file mode 100644 index 0000000000000000000000000000000000000000..2070db142b51c01b6deca0e0704def67ff6f9535 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php @@ -0,0 +1,47 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use SebastianBergmann\Comparator\Factory as BaseFactory; + +/** + * Prophecy comparator factory. + * + * @author Konstantin Kudryashov + */ +final class Factory extends BaseFactory +{ + /** + * @var Factory + */ + private static $instance; + + public function __construct() + { + parent::__construct(); + + $this->register(new ClosureComparator()); + $this->register(new ProphecyComparator()); + } + + /** + * @return Factory + */ + public static function getInstance() + { + if (self::$instance === null) { + self::$instance = new Factory; + } + + return self::$instance; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php new file mode 100644 index 0000000000000000000000000000000000000000..298a8e35683ffd3ee23595a759202d9e22bdeb21 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php @@ -0,0 +1,28 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Comparator; + +use Prophecy\Prophecy\ProphecyInterface; +use SebastianBergmann\Comparator\ObjectComparator; + +class ProphecyComparator extends ObjectComparator +{ + public function accepts($expected, $actual) + { + return is_object($expected) && is_object($actual) && $actual instanceof ProphecyInterface; + } + + public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array()) + { + parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php new file mode 100644 index 0000000000000000000000000000000000000000..d6b6b1a9e08577925e5b518e52c49c385eee835c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php @@ -0,0 +1,68 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use ReflectionClass; + +/** + * Cached class doubler. + * Prevents mirroring/creation of the same structure twice. + * + * @author Konstantin Kudryashov + */ +class CachedDoubler extends Doubler +{ + private $classes = array(); + + /** + * {@inheritdoc} + */ + public function registerClassPatch(ClassPatch\ClassPatchInterface $patch) + { + $this->classes[] = array(); + + parent::registerClassPatch($patch); + } + + /** + * {@inheritdoc} + */ + protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) + { + $classId = $this->generateClassId($class, $interfaces); + if (isset($this->classes[$classId])) { + return $this->classes[$classId]; + } + + return $this->classes[$classId] = parent::createDoubleClass($class, $interfaces); + } + + /** + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + private function generateClassId(ReflectionClass $class = null, array $interfaces) + { + $parts = array(); + if (null !== $class) { + $parts[] = $class->getName(); + } + foreach ($interfaces as $interface) { + $parts[] = $interface->getName(); + } + sort($parts); + + return md5(implode('', $parts)); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..d6d196850c743a26aa849d8f8234995f5b2c1d7f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php @@ -0,0 +1,48 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Class patch interface. + * Class patches extend doubles functionality or help + * Prophecy to avoid some internal PHP bugs. + * + * @author Konstantin Kudryashov + */ +interface ClassPatchInterface +{ + /** + * Checks if patch supports specific class node. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node); + + /** + * Applies patch to the specific class node. + * + * @param ClassNode $node + * @return void + */ + public function apply(ClassNode $node); + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php new file mode 100644 index 0000000000000000000000000000000000000000..61998fc462289f3acd33dea233963c6d336bddd0 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php @@ -0,0 +1,72 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * Disable constructor. + * Makes all constructor arguments optional. + * + * @author Konstantin Kudryashov + */ +class DisableConstructorPatch implements ClassPatchInterface +{ + /** + * Checks if class has `__construct` method. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Makes all class constructor arguments optional. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + if (!$node->hasMethod('__construct')) { + $node->addMethod(new MethodNode('__construct', '')); + + return; + } + + $constructor = $node->getMethod('__construct'); + foreach ($constructor->getArguments() as $argument) { + $argument->setDefault(null); + } + + $constructor->setCode(<< + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Exception patch for HHVM to remove the stubs from special methods + * + * @author Christophe Coevoet + */ +class HhvmExceptionPatch implements ClassPatchInterface +{ + /** + * Supports exceptions on HHVM. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (!defined('HHVM_VERSION')) { + return false; + } + + return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception'); + } + + /** + * Removes special exception static methods from the doubled methods. + * + * @param ClassNode $node + * + * @return void + */ + public function apply(ClassNode $node) + { + if ($node->hasMethod('setTraceOptions')) { + $node->getMethod('setTraceOptions')->useParentCode(); + } + if ($node->hasMethod('getTraceOptions')) { + $node->getMethod('getTraceOptions')->useParentCode(); + } + } + + /** + * {@inheritdoc} + */ + public function getPriority() + { + return -50; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php new file mode 100644 index 0000000000000000000000000000000000000000..b0d9793aa4857d4eb000bab994b093b0f8f4b376 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php @@ -0,0 +1,135 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * Remove method functionality from the double which will clash with php keywords. + * + * @author Milan Magudia + */ +class KeywordPatch implements ClassPatchInterface +{ + /** + * Support any class + * + * @param ClassNode $node + * + * @return boolean + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Remove methods that clash with php keywords + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $methodNames = array_keys($node->getMethods()); + $methodsToRemove = array_intersect($methodNames, $this->getKeywords()); + foreach ($methodsToRemove as $methodName) { + $node->removeMethod($methodName); + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() { + return 49; + } + + /** + * Returns array of php keywords. + * + * @return array + */ + private function getKeywords() { + + return array( + '__halt_compiler', + 'abstract', + 'and', + 'array', + 'as', + 'break', + 'callable', + 'case', + 'catch', + 'class', + 'clone', + 'const', + 'continue', + 'declare', + 'default', + 'die', + 'do', + 'echo', + 'else', + 'elseif', + 'empty', + 'enddeclare', + 'endfor', + 'endforeach', + 'endif', + 'endswitch', + 'endwhile', + 'eval', + 'exit', + 'extends', + 'final', + 'finally', + 'for', + 'foreach', + 'function', + 'global', + 'goto', + 'if', + 'implements', + 'include', + 'include_once', + 'instanceof', + 'insteadof', + 'interface', + 'isset', + 'list', + 'namespace', + 'new', + 'or', + 'print', + 'private', + 'protected', + 'public', + 'require', + 'require_once', + 'return', + 'static', + 'switch', + 'throw', + 'trait', + 'try', + 'unset', + 'use', + 'var', + 'while', + 'xor', + 'yield', + ); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php new file mode 100644 index 0000000000000000000000000000000000000000..5f2c607719c5b2e5e9757c8f2b5f968df3b72b28 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php @@ -0,0 +1,89 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; +use Prophecy\PhpDocumentor\ClassAndInterfaceTagRetriever; +use Prophecy\PhpDocumentor\MethodTagRetrieverInterface; + +/** + * Discover Magical API using "@method" PHPDoc format. + * + * @author Thomas Tourlourat + * @author Kévin Dunglas + * @author Théo FIDRY + */ +class MagicCallPatch implements ClassPatchInterface +{ + private $tagRetriever; + + public function __construct(MethodTagRetrieverInterface $tagRetriever = null) + { + $this->tagRetriever = null === $tagRetriever ? new ClassAndInterfaceTagRetriever() : $tagRetriever; + } + + /** + * Support any class + * + * @param ClassNode $node + * + * @return boolean + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Discover Magical API + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $types = array_filter($node->getInterfaces(), function ($interface) { + return 0 !== strpos($interface, 'Prophecy\\'); + }); + $types[] = $node->getParentClass(); + + foreach ($types as $type) { + $reflectionClass = new \ReflectionClass($type); + $tagList = $this->tagRetriever->getTagList($reflectionClass); + + foreach($tagList as $tag) { + $methodName = $tag->getMethodName(); + + if (empty($methodName)) { + continue; + } + + if (!$reflectionClass->hasMethod($methodName)) { + $methodNode = new MethodNode($methodName); + $methodNode->setStatic($tag->isStatic()); + $node->addMethod($methodNode); + } + } + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return integer Priority number (higher - earlier) + */ + public function getPriority() + { + return 50; + } +} + diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php new file mode 100644 index 0000000000000000000000000000000000000000..fc2cc4de48454f9fe8f50c476a7d17ab0ef84c49 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php @@ -0,0 +1,104 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; +use Prophecy\Doubler\Generator\Node\ArgumentNode; + +/** + * Add Prophecy functionality to the double. + * This is a core class patch for Prophecy. + * + * @author Konstantin Kudryashov + */ +class ProphecySubjectPatch implements ClassPatchInterface +{ + /** + * Always returns true. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return true; + } + + /** + * Apply Prophecy functionality to class node. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface'); + $node->addProperty('objectProphecy', 'private'); + + foreach ($node->getMethods() as $name => $method) { + if ('__construct' === strtolower($name)) { + continue; + } + + if ($method->getReturnType() === 'void') { + $method->setCode( + '$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' + ); + } else { + $method->setCode( + 'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());' + ); + } + } + + $prophecySetter = new MethodNode('setProphecy'); + $prophecyArgument = new ArgumentNode('prophecy'); + $prophecyArgument->setTypeHint('Prophecy\Prophecy\ProphecyInterface'); + $prophecySetter->addArgument($prophecyArgument); + $prophecySetter->setCode('$this->objectProphecy = $prophecy;'); + + $prophecyGetter = new MethodNode('getProphecy'); + $prophecyGetter->setCode('return $this->objectProphecy;'); + + if ($node->hasMethod('__call')) { + $__call = $node->getMethod('__call'); + } else { + $__call = new MethodNode('__call'); + $__call->addArgument(new ArgumentNode('name')); + $__call->addArgument(new ArgumentNode('arguments')); + + $node->addMethod($__call); + } + + $__call->setCode(<<getProphecy(), func_get_arg(0) +); +PHP + ); + + $node->addMethod($prophecySetter); + $node->addMethod($prophecyGetter); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 0; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php new file mode 100644 index 0000000000000000000000000000000000000000..9166aeefacf62ee4cbdd865ec2bfdab112a7cc32 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php @@ -0,0 +1,57 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +/** + * ReflectionClass::newInstance patch. + * Makes first argument of newInstance optional, since it works but signature is misleading + * + * @author Florian Klein + */ +class ReflectionClassNewInstancePatch implements ClassPatchInterface +{ + /** + * Supports ReflectionClass + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + return 'ReflectionClass' === $node->getParentClass(); + } + + /** + * Updates newInstance's first argument to make it optional + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + foreach ($node->getMethod('newInstance')->getArguments() as $argument) { + $argument->setDefault(null); + } + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher = earlier) + */ + public function getPriority() + { + return 50; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php new file mode 100644 index 0000000000000000000000000000000000000000..eba82980d02b676db346b87e8818b3a4d674945e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php @@ -0,0 +1,105 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * SplFileInfo patch. + * Makes SplFileInfo and derivative classes usable with Prophecy. + * + * @author Konstantin Kudryashov + */ +class SplFileInfoPatch implements ClassPatchInterface +{ + /** + * Supports everything that extends SplFileInfo. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (null === $node->getParentClass()) { + return false; + } + + return 'SplFileInfo' === $node->getParentClass() + || is_subclass_of($node->getParentClass(), 'SplFileInfo') + ; + } + + /** + * Updated constructor code to call parent one with dummy file argument. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + if ($node->hasMethod('__construct')) { + $constructor = $node->getMethod('__construct'); + } else { + $constructor = new MethodNode('__construct'); + $node->addMethod($constructor); + } + + if ($this->nodeIsDirectoryIterator($node)) { + $constructor->setCode('return parent::__construct("' . __DIR__ . '");'); + + return; + } + + if ($this->nodeIsSplFileObject($node)) { + $constructor->setCode('return parent::__construct("' . __FILE__ .'");'); + + return; + } + + $constructor->useParentCode(); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 50; + } + + /** + * @param ClassNode $node + * @return boolean + */ + private function nodeIsDirectoryIterator(ClassNode $node) + { + $parent = $node->getParentClass(); + + return 'DirectoryIterator' === $parent + || is_subclass_of($parent, 'DirectoryIterator'); + } + + /** + * @param ClassNode $node + * @return boolean + */ + private function nodeIsSplFileObject(ClassNode $node) + { + $parent = $node->getParentClass(); + + return 'SplFileObject' === $parent + || is_subclass_of($parent, 'SplFileObject'); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php new file mode 100644 index 0000000000000000000000000000000000000000..eea0202825a284d16da496ad807551d9ffedb474 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php @@ -0,0 +1,83 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\ClassPatch; + +use Prophecy\Doubler\Generator\Node\ClassNode; +use Prophecy\Doubler\Generator\Node\MethodNode; + +/** + * Traversable interface patch. + * Forces classes that implement interfaces, that extend Traversable to also implement Iterator. + * + * @author Konstantin Kudryashov + */ +class TraversablePatch implements ClassPatchInterface +{ + /** + * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate. + * + * @param ClassNode $node + * + * @return bool + */ + public function supports(ClassNode $node) + { + if (in_array('Iterator', $node->getInterfaces())) { + return false; + } + if (in_array('IteratorAggregate', $node->getInterfaces())) { + return false; + } + + foreach ($node->getInterfaces() as $interface) { + if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) { + continue; + } + if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) { + continue; + } + if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) { + continue; + } + + return true; + } + + return false; + } + + /** + * Forces class to implement Iterator interface. + * + * @param ClassNode $node + */ + public function apply(ClassNode $node) + { + $node->addInterface('Iterator'); + + $node->addMethod(new MethodNode('current')); + $node->addMethod(new MethodNode('key')); + $node->addMethod(new MethodNode('next')); + $node->addMethod(new MethodNode('rewind')); + $node->addMethod(new MethodNode('valid')); + } + + /** + * Returns patch priority, which determines when patch will be applied. + * + * @return int Priority number (higher - earlier) + */ + public function getPriority() + { + return 100; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..699be3a2ad2cec607415d8f40cd95c6fbc8c68c1 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php @@ -0,0 +1,22 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +/** + * Core double interface. + * All doubled classes will implement this one. + * + * @author Konstantin Kudryashov + */ +interface DoubleInterface +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php new file mode 100644 index 0000000000000000000000000000000000000000..a378ae27906bd877eea68301850a915c1876afbb --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php @@ -0,0 +1,146 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use Doctrine\Instantiator\Instantiator; +use Prophecy\Doubler\ClassPatch\ClassPatchInterface; +use Prophecy\Doubler\Generator\ClassMirror; +use Prophecy\Doubler\Generator\ClassCreator; +use Prophecy\Exception\InvalidArgumentException; +use ReflectionClass; + +/** + * Cached class doubler. + * Prevents mirroring/creation of the same structure twice. + * + * @author Konstantin Kudryashov + */ +class Doubler +{ + private $mirror; + private $creator; + private $namer; + + /** + * @var ClassPatchInterface[] + */ + private $patches = array(); + + /** + * @var \Doctrine\Instantiator\Instantiator + */ + private $instantiator; + + /** + * Initializes doubler. + * + * @param ClassMirror $mirror + * @param ClassCreator $creator + * @param NameGenerator $namer + */ + public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null, + NameGenerator $namer = null) + { + $this->mirror = $mirror ?: new ClassMirror; + $this->creator = $creator ?: new ClassCreator; + $this->namer = $namer ?: new NameGenerator; + } + + /** + * Returns list of registered class patches. + * + * @return ClassPatchInterface[] + */ + public function getClassPatches() + { + return $this->patches; + } + + /** + * Registers new class patch. + * + * @param ClassPatchInterface $patch + */ + public function registerClassPatch(ClassPatchInterface $patch) + { + $this->patches[] = $patch; + + @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) { + return $patch2->getPriority() - $patch1->getPriority(); + }); + } + + /** + * Creates double from specific class or/and list of interfaces. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces Array of ReflectionClass instances + * @param array $args Constructor arguments + * + * @return DoubleInterface + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function double(ReflectionClass $class = null, array $interfaces, array $args = null) + { + foreach ($interfaces as $interface) { + if (!$interface instanceof ReflectionClass) { + throw new InvalidArgumentException(sprintf( + "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". + "a second argument to `Doubler::double(...)`, but got %s.", + is_object($interface) ? get_class($interface).' class' : gettype($interface) + )); + } + } + + $classname = $this->createDoubleClass($class, $interfaces); + $reflection = new ReflectionClass($classname); + + if (null !== $args) { + return $reflection->newInstanceArgs($args); + } + if ((null === $constructor = $reflection->getConstructor()) + || ($constructor->isPublic() && !$constructor->isFinal())) { + return $reflection->newInstance(); + } + + if (!$this->instantiator) { + $this->instantiator = new Instantiator(); + } + + return $this->instantiator->instantiate($classname); + } + + /** + * Creates double class and returns its FQN. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + protected function createDoubleClass(ReflectionClass $class = null, array $interfaces) + { + $name = $this->namer->name($class, $interfaces); + $node = $this->mirror->reflect($class, $interfaces); + + foreach ($this->patches as $patch) { + if ($patch->supports($node)) { + $patch->apply($node); + } + } + + $this->creator->create($name, $node); + + return $name; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php new file mode 100644 index 0000000000000000000000000000000000000000..fc1079c5acb15a5f5e90ac740b95e0ffd9f03ffc --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php @@ -0,0 +1,145 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +/** + * Class code creator. + * Generates PHP code for specific class node tree. + * + * @author Konstantin Kudryashov + */ +class ClassCodeGenerator +{ + /** + * Generates PHP code for class node. + * + * @param string $classname + * @param Node\ClassNode $class + * + * @return string + */ + public function generate($classname, Node\ClassNode $class) + { + $parts = explode('\\', $classname); + $classname = array_pop($parts); + $namespace = implode('\\', $parts); + + $code = sprintf("class %s extends \%s implements %s {\n", + $classname, $class->getParentClass(), implode(', ', + array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces()) + ) + ); + + foreach ($class->getProperties() as $name => $visibility) { + $code .= sprintf("%s \$%s;\n", $visibility, $name); + } + $code .= "\n"; + + foreach ($class->getMethods() as $method) { + $code .= $this->generateMethod($method)."\n"; + } + $code .= "\n}"; + + return sprintf("namespace %s {\n%s\n}", $namespace, $code); + } + + private function generateMethod(Node\MethodNode $method) + { + $php = sprintf("%s %s function %s%s(%s)%s {\n", + $method->getVisibility(), + $method->isStatic() ? 'static' : '', + $method->returnsReference() ? '&':'', + $method->getName(), + implode(', ', $this->generateArguments($method->getArguments())), + $this->getReturnType($method) + ); + $php .= $method->getCode()."\n"; + + return $php.'}'; + } + + /** + * @return string + */ + private function getReturnType(Node\MethodNode $method) + { + if (version_compare(PHP_VERSION, '7.1', '>=')) { + if ($method->hasReturnType()) { + return $method->hasNullableReturnType() + ? sprintf(': ?%s', $method->getReturnType()) + : sprintf(': %s', $method->getReturnType()); + } + } + + if (version_compare(PHP_VERSION, '7.0', '>=')) { + return $method->hasReturnType() && $method->getReturnType() !== 'void' + ? sprintf(': %s', $method->getReturnType()) + : ''; + } + + return ''; + } + + private function generateArguments(array $arguments) + { + return array_map(function (Node\ArgumentNode $argument) { + $php = ''; + + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $php .= $argument->isNullable() ? '?' : ''; + } + + if ($hint = $argument->getTypeHint()) { + switch ($hint) { + case 'array': + case 'callable': + $php .= $hint; + break; + + case 'iterable': + if (version_compare(PHP_VERSION, '7.1', '>=')) { + $php .= $hint; + break; + } + + $php .= '\\'.$hint; + break; + + case 'string': + case 'int': + case 'float': + case 'bool': + if (version_compare(PHP_VERSION, '7.0', '>=')) { + $php .= $hint; + break; + } + // Fall-through to default case for PHP 5.x + + default: + $php .= '\\'.$hint; + } + } + + $php .= ' '.($argument->isPassedByReference() ? '&' : ''); + + $php .= $argument->isVariadic() ? '...' : ''; + + $php .= '$'.$argument->getName(); + + if ($argument->isOptional() && !$argument->isVariadic()) { + $php .= ' = '.var_export($argument->getDefault(), true); + } + + return $php; + }, $arguments); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php new file mode 100644 index 0000000000000000000000000000000000000000..882a4a4b7f14eb05c1f9c6acc0c3d1076e923c52 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php @@ -0,0 +1,67 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +use Prophecy\Exception\Doubler\ClassCreatorException; + +/** + * Class creator. + * Creates specific class in current environment. + * + * @author Konstantin Kudryashov + */ +class ClassCreator +{ + private $generator; + + /** + * Initializes creator. + * + * @param ClassCodeGenerator $generator + */ + public function __construct(ClassCodeGenerator $generator = null) + { + $this->generator = $generator ?: new ClassCodeGenerator; + } + + /** + * Creates class. + * + * @param string $classname + * @param Node\ClassNode $class + * + * @return mixed + * + * @throws \Prophecy\Exception\Doubler\ClassCreatorException + */ + public function create($classname, Node\ClassNode $class) + { + $code = $this->generator->generate($classname, $class); + $return = eval($code); + + if (!class_exists($classname, false)) { + if (count($class->getInterfaces())) { + throw new ClassCreatorException(sprintf( + 'Could not double `%s` and implement interfaces: [%s].', + $class->getParentClass(), implode(', ', $class->getInterfaces()) + ), $class); + } + + throw new ClassCreatorException( + sprintf('Could not double `%s`.', $class->getParentClass()), + $class + ); + } + + return $return; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php new file mode 100644 index 0000000000000000000000000000000000000000..9f99239f698d7074c41c95c017c865e6ce231e72 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php @@ -0,0 +1,258 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Exception\Doubler\ClassMirrorException; +use ReflectionClass; +use ReflectionMethod; +use ReflectionParameter; + +/** + * Class mirror. + * Core doubler class. Mirrors specific class and/or interfaces into class node tree. + * + * @author Konstantin Kudryashov + */ +class ClassMirror +{ + private static $reflectableMethods = array( + '__construct', + '__destruct', + '__sleep', + '__wakeup', + '__toString', + '__call', + '__invoke' + ); + + /** + * Reflects provided arguments into class node. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return Node\ClassNode + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function reflect(ReflectionClass $class = null, array $interfaces) + { + $node = new Node\ClassNode; + + if (null !== $class) { + if (true === $class->isInterface()) { + throw new InvalidArgumentException(sprintf( + "Could not reflect %s as a class, because it\n". + "is interface - use the second argument instead.", + $class->getName() + )); + } + + $this->reflectClassToNode($class, $node); + } + + foreach ($interfaces as $interface) { + if (!$interface instanceof ReflectionClass) { + throw new InvalidArgumentException(sprintf( + "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n". + "a second argument to `ClassMirror::reflect(...)`, but got %s.", + is_object($interface) ? get_class($interface).' class' : gettype($interface) + )); + } + if (false === $interface->isInterface()) { + throw new InvalidArgumentException(sprintf( + "Could not reflect %s as an interface, because it\n". + "is class - use the first argument instead.", + $interface->getName() + )); + } + + $this->reflectInterfaceToNode($interface, $node); + } + + $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface'); + + return $node; + } + + private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node) + { + if (true === $class->isFinal()) { + throw new ClassMirrorException(sprintf( + 'Could not reflect class %s as it is marked final.', $class->getName() + ), $class); + } + + $node->setParentClass($class->getName()); + + foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) { + if (false === $method->isProtected()) { + continue; + } + + $this->reflectMethodToNode($method, $node); + } + + foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { + if (0 === strpos($method->getName(), '_') + && !in_array($method->getName(), self::$reflectableMethods)) { + continue; + } + + if (true === $method->isFinal()) { + $node->addUnextendableMethod($method->getName()); + continue; + } + + $this->reflectMethodToNode($method, $node); + } + } + + private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node) + { + $node->addInterface($interface->getName()); + + foreach ($interface->getMethods() as $method) { + $this->reflectMethodToNode($method, $node); + } + } + + private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode) + { + $node = new Node\MethodNode($method->getName()); + + if (true === $method->isProtected()) { + $node->setVisibility('protected'); + } + + if (true === $method->isStatic()) { + $node->setStatic(); + } + + if (true === $method->returnsReference()) { + $node->setReturnsReference(); + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && $method->hasReturnType()) { + $returnType = (string) $method->getReturnType(); + $returnTypeLower = strtolower($returnType); + + if ('self' === $returnTypeLower) { + $returnType = $method->getDeclaringClass()->getName(); + } + if ('parent' === $returnTypeLower) { + $returnType = $method->getDeclaringClass()->getParentClass()->getName(); + } + + $node->setReturnType($returnType); + + if (version_compare(PHP_VERSION, '7.1', '>=') && $method->getReturnType()->allowsNull()) { + $node->setNullableReturnType(true); + } + } + + if (is_array($params = $method->getParameters()) && count($params)) { + foreach ($params as $param) { + $this->reflectArgumentToNode($param, $node); + } + } + + $classNode->addMethod($node); + } + + private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode) + { + $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName(); + $node = new Node\ArgumentNode($name); + + $node->setTypeHint($this->getTypeHint($parameter)); + + if ($this->isVariadic($parameter)) { + $node->setAsVariadic(); + } + + if ($this->hasDefaultValue($parameter)) { + $node->setDefault($this->getDefaultValue($parameter)); + } + + if ($parameter->isPassedByReference()) { + $node->setAsPassedByReference(); + } + + $methodNode->addArgument($node); + } + + private function hasDefaultValue(ReflectionParameter $parameter) + { + if ($this->isVariadic($parameter)) { + return false; + } + + if ($parameter->isDefaultValueAvailable()) { + return true; + } + + return $parameter->isOptional() || $this->isNullable($parameter); + } + + private function getDefaultValue(ReflectionParameter $parameter) + { + if (!$parameter->isDefaultValueAvailable()) { + return null; + } + + return $parameter->getDefaultValue(); + } + + private function getTypeHint(ReflectionParameter $parameter) + { + if (null !== $className = $this->getParameterClassName($parameter)) { + return $className; + } + + if (true === $parameter->isArray()) { + return 'array'; + } + + if (version_compare(PHP_VERSION, '5.4', '>=') && true === $parameter->isCallable()) { + return 'callable'; + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && true === $parameter->hasType()) { + return (string) $parameter->getType(); + } + + return null; + } + + private function isVariadic(ReflectionParameter $parameter) + { + return PHP_VERSION_ID >= 50600 && $parameter->isVariadic(); + } + + private function isNullable(ReflectionParameter $parameter) + { + return $parameter->allowsNull() && null !== $this->getTypeHint($parameter); + } + + private function getParameterClassName(ReflectionParameter $parameter) + { + try { + return $parameter->getClass() ? $parameter->getClass()->getName() : null; + } catch (\ReflectionException $e) { + preg_match('/\[\s\<\w+?>\s([\w,\\\]+)/s', $parameter, $matches); + + return isset($matches[1]) ? $matches[1] : null; + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php new file mode 100644 index 0000000000000000000000000000000000000000..dd29b68fcabcf75ef662d6d122433d201c46b42c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php @@ -0,0 +1,102 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +/** + * Argument node. + * + * @author Konstantin Kudryashov + */ +class ArgumentNode +{ + private $name; + private $typeHint; + private $default; + private $optional = false; + private $byReference = false; + private $isVariadic = false; + private $isNullable = false; + + /** + * @param string $name + */ + public function __construct($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function getTypeHint() + { + return $this->typeHint; + } + + public function setTypeHint($typeHint = null) + { + $this->typeHint = $typeHint; + } + + public function hasDefault() + { + return $this->isOptional() && !$this->isVariadic(); + } + + public function getDefault() + { + return $this->default; + } + + public function setDefault($default = null) + { + $this->optional = true; + $this->default = $default; + } + + public function isOptional() + { + return $this->optional; + } + + public function setAsPassedByReference($byReference = true) + { + $this->byReference = $byReference; + } + + public function isPassedByReference() + { + return $this->byReference; + } + + public function setAsVariadic($isVariadic = true) + { + $this->isVariadic = $isVariadic; + } + + public function isVariadic() + { + return $this->isVariadic; + } + + public function isNullable() + { + return $this->isNullable; + } + + public function setAsNullable($isNullable = true) + { + $this->isNullable = $isNullable; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php new file mode 100644 index 0000000000000000000000000000000000000000..1499a1d325a6e26e61d401f5e4793b699aee2f34 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php @@ -0,0 +1,166 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +use Prophecy\Exception\Doubler\MethodNotExtendableException; +use Prophecy\Exception\InvalidArgumentException; + +/** + * Class node. + * + * @author Konstantin Kudryashov + */ +class ClassNode +{ + private $parentClass = 'stdClass'; + private $interfaces = array(); + private $properties = array(); + private $unextendableMethods = array(); + + /** + * @var MethodNode[] + */ + private $methods = array(); + + public function getParentClass() + { + return $this->parentClass; + } + + /** + * @param string $class + */ + public function setParentClass($class) + { + $this->parentClass = $class ?: 'stdClass'; + } + + /** + * @return string[] + */ + public function getInterfaces() + { + return $this->interfaces; + } + + /** + * @param string $interface + */ + public function addInterface($interface) + { + if ($this->hasInterface($interface)) { + return; + } + + array_unshift($this->interfaces, $interface); + } + + /** + * @param string $interface + * + * @return bool + */ + public function hasInterface($interface) + { + return in_array($interface, $this->interfaces); + } + + public function getProperties() + { + return $this->properties; + } + + public function addProperty($name, $visibility = 'public') + { + $visibility = strtolower($visibility); + + if (!in_array($visibility, array('public', 'private', 'protected'))) { + throw new InvalidArgumentException(sprintf( + '`%s` property visibility is not supported.', $visibility + )); + } + + $this->properties[$name] = $visibility; + } + + /** + * @return MethodNode[] + */ + public function getMethods() + { + return $this->methods; + } + + public function addMethod(MethodNode $method) + { + if (!$this->isExtendable($method->getName())){ + $message = sprintf( + 'Method `%s` is not extendable, so can not be added.', $method->getName() + ); + throw new MethodNotExtendableException($message, $this->getParentClass(), $method->getName()); + } + $this->methods[$method->getName()] = $method; + } + + public function removeMethod($name) + { + unset($this->methods[$name]); + } + + /** + * @param string $name + * + * @return MethodNode|null + */ + public function getMethod($name) + { + return $this->hasMethod($name) ? $this->methods[$name] : null; + } + + /** + * @param string $name + * + * @return bool + */ + public function hasMethod($name) + { + return isset($this->methods[$name]); + } + + /** + * @return string[] + */ + public function getUnextendableMethods() + { + return $this->unextendableMethods; + } + + /** + * @param string $unextendableMethod + */ + public function addUnextendableMethod($unextendableMethod) + { + if (!$this->isExtendable($unextendableMethod)){ + return; + } + $this->unextendableMethods[] = $unextendableMethod; + } + + /** + * @param string $method + * @return bool + */ + public function isExtendable($method) + { + return !in_array($method, $this->unextendableMethods); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php new file mode 100644 index 0000000000000000000000000000000000000000..71aabfa9401267ef3ac0d04e23e4d29abb414151 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php @@ -0,0 +1,207 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator\Node; + +use Prophecy\Exception\InvalidArgumentException; + +/** + * Method node. + * + * @author Konstantin Kudryashov + */ +class MethodNode +{ + private $name; + private $code; + private $visibility = 'public'; + private $static = false; + private $returnsReference = false; + private $returnType; + private $nullableReturnType = false; + + /** + * @var ArgumentNode[] + */ + private $arguments = array(); + + /** + * @param string $name + * @param string $code + */ + public function __construct($name, $code = null) + { + $this->name = $name; + $this->code = $code; + } + + public function getVisibility() + { + return $this->visibility; + } + + /** + * @param string $visibility + */ + public function setVisibility($visibility) + { + $visibility = strtolower($visibility); + + if (!in_array($visibility, array('public', 'private', 'protected'))) { + throw new InvalidArgumentException(sprintf( + '`%s` method visibility is not supported.', $visibility + )); + } + + $this->visibility = $visibility; + } + + public function isStatic() + { + return $this->static; + } + + public function setStatic($static = true) + { + $this->static = (bool) $static; + } + + public function returnsReference() + { + return $this->returnsReference; + } + + public function setReturnsReference() + { + $this->returnsReference = true; + } + + public function getName() + { + return $this->name; + } + + public function addArgument(ArgumentNode $argument) + { + $this->arguments[] = $argument; + } + + /** + * @return ArgumentNode[] + */ + public function getArguments() + { + return $this->arguments; + } + + public function hasReturnType() + { + return null !== $this->returnType; + } + + /** + * @param string $type + */ + public function setReturnType($type = null) + { + switch ($type) { + case '': + $this->returnType = null; + break; + + case 'string'; + case 'float': + case 'int': + case 'bool': + case 'array': + case 'callable': + case 'iterable': + case 'void': + $this->returnType = $type; + break; + + case 'double': + case 'real': + $this->returnType = 'float'; + break; + + case 'boolean': + $this->returnType = 'bool'; + break; + + case 'integer': + $this->returnType = 'int'; + break; + + default: + $this->returnType = '\\' . ltrim($type, '\\'); + } + } + + public function getReturnType() + { + return $this->returnType; + } + + /** + * @param bool $bool + */ + public function setNullableReturnType($bool = true) + { + $this->nullableReturnType = (bool) $bool; + } + + /** + * @return bool + */ + public function hasNullableReturnType() + { + return $this->nullableReturnType; + } + + /** + * @param string $code + */ + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + if ($this->returnsReference) + { + return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');"; + } + + return (string) $this->code; + } + + public function useParentCode() + { + $this->code = sprintf( + 'return parent::%s(%s);', $this->getName(), implode(', ', + array_map(array($this, 'generateArgument'), $this->arguments) + ) + ); + } + + private function generateArgument(ArgumentNode $arg) + { + $argument = '$'.$arg->getName(); + + if ($arg->isVariadic()) { + $argument = '...'.$argument; + } + + return $argument; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..d720b15159a6ac5cee44929912e795b265c609cc --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php @@ -0,0 +1,22 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler\Generator; + +/** + * Reflection interface. + * All reflected classes implement this interface. + * + * @author Konstantin Kudryashov + */ +interface ReflectionInterface +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php new file mode 100644 index 0000000000000000000000000000000000000000..8a99c4ce8615252b33418edaa8c7010526e171f1 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php @@ -0,0 +1,127 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use Prophecy\Exception\Doubler\DoubleException; +use Prophecy\Exception\Doubler\ClassNotFoundException; +use Prophecy\Exception\Doubler\InterfaceNotFoundException; +use ReflectionClass; + +/** + * Lazy double. + * Gives simple interface to describe double before creating it. + * + * @author Konstantin Kudryashov + */ +class LazyDouble +{ + private $doubler; + private $class; + private $interfaces = array(); + private $arguments = null; + private $double; + + /** + * Initializes lazy double. + * + * @param Doubler $doubler + */ + public function __construct(Doubler $doubler) + { + $this->doubler = $doubler; + } + + /** + * Tells doubler to use specific class as parent one for double. + * + * @param string|ReflectionClass $class + * + * @throws \Prophecy\Exception\Doubler\ClassNotFoundException + * @throws \Prophecy\Exception\Doubler\DoubleException + */ + public function setParentClass($class) + { + if (null !== $this->double) { + throw new DoubleException('Can not extend class with already instantiated double.'); + } + + if (!$class instanceof ReflectionClass) { + if (!class_exists($class)) { + throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class); + } + + $class = new ReflectionClass($class); + } + + $this->class = $class; + } + + /** + * Tells doubler to implement specific interface with double. + * + * @param string|ReflectionClass $interface + * + * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException + * @throws \Prophecy\Exception\Doubler\DoubleException + */ + public function addInterface($interface) + { + if (null !== $this->double) { + throw new DoubleException( + 'Can not implement interface with already instantiated double.' + ); + } + + if (!$interface instanceof ReflectionClass) { + if (!interface_exists($interface)) { + throw new InterfaceNotFoundException( + sprintf('Interface %s not found.', $interface), + $interface + ); + } + + $interface = new ReflectionClass($interface); + } + + $this->interfaces[] = $interface; + } + + /** + * Sets constructor arguments. + * + * @param array $arguments + */ + public function setArguments(array $arguments = null) + { + $this->arguments = $arguments; + } + + /** + * Creates double instance or returns already created one. + * + * @return DoubleInterface + */ + public function getInstance() + { + if (null === $this->double) { + if (null !== $this->arguments) { + return $this->double = $this->doubler->double( + $this->class, $this->interfaces, $this->arguments + ); + } + + $this->double = $this->doubler->double($this->class, $this->interfaces); + } + + return $this->double; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php new file mode 100644 index 0000000000000000000000000000000000000000..d67ec6a4db9a15d199aac6fcf7f5186d10a313bf --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Doubler; + +use ReflectionClass; + +/** + * Name generator. + * Generates classname for double. + * + * @author Konstantin Kudryashov + */ +class NameGenerator +{ + private static $counter = 1; + + /** + * Generates name. + * + * @param ReflectionClass $class + * @param ReflectionClass[] $interfaces + * + * @return string + */ + public function name(ReflectionClass $class = null, array $interfaces) + { + $parts = array(); + + if (null !== $class) { + $parts[] = $class->getName(); + } else { + foreach ($interfaces as $interface) { + $parts[] = $interface->getShortName(); + } + } + + if (!count($parts)) { + $parts[] = 'stdClass'; + } + + return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php new file mode 100644 index 0000000000000000000000000000000000000000..48ed22542db31473c1466e9220ca26f19465dfa9 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php @@ -0,0 +1,40 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Call; + +use Prophecy\Exception\Prophecy\ObjectProphecyException; +use Prophecy\Prophecy\ObjectProphecy; + +class UnexpectedCallException extends ObjectProphecyException +{ + private $methodName; + private $arguments; + + public function __construct($message, ObjectProphecy $objectProphecy, + $methodName, array $arguments) + { + parent::__construct($message, $objectProphecy); + + $this->methodName = $methodName; + $this->arguments = $arguments; + } + + public function getMethodName() + { + return $this->methodName; + } + + public function getArguments() + { + return $this->arguments; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php new file mode 100644 index 0000000000000000000000000000000000000000..822918a2943263af7166beda7b4c4bd8f8430604 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use Prophecy\Doubler\Generator\Node\ClassNode; + +class ClassCreatorException extends \RuntimeException implements DoublerException +{ + private $node; + + public function __construct($message, ClassNode $node) + { + parent::__construct($message); + + $this->node = $node; + } + + public function getClassNode() + { + return $this->node; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php new file mode 100644 index 0000000000000000000000000000000000000000..8fc53b8b527db218edff755a4f8d2d9c276643ef --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use ReflectionClass; + +class ClassMirrorException extends \RuntimeException implements DoublerException +{ + private $class; + + public function __construct($message, ReflectionClass $class) + { + parent::__construct($message); + + $this->class = $class; + } + + public function getReflectedClass() + { + return $this->class; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php new file mode 100644 index 0000000000000000000000000000000000000000..5bc826d75e409359bd5541e6121923219c2deb57 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php @@ -0,0 +1,33 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class ClassNotFoundException extends DoubleException +{ + private $classname; + + /** + * @param string $message + * @param string $classname + */ + public function __construct($message, $classname) + { + parent::__construct($message); + + $this->classname = $classname; + } + + public function getClassname() + { + return $this->classname; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php new file mode 100644 index 0000000000000000000000000000000000000000..6642a58f20c4586799c0aab262d89c894e6061c8 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use RuntimeException; + +class DoubleException extends RuntimeException implements DoublerException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php new file mode 100644 index 0000000000000000000000000000000000000000..9d6be17969b9588ead2abcf4fc12e4134c666922 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +use Prophecy\Exception\Exception; + +interface DoublerException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php new file mode 100644 index 0000000000000000000000000000000000000000..e344dead2b30e8159200477867a3f89bfe1ffff8 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php @@ -0,0 +1,20 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class InterfaceNotFoundException extends ClassNotFoundException +{ + public function getInterfaceName() + { + return $this->getClassname(); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php new file mode 100644 index 0000000000000000000000000000000000000000..56f47b11057ce9341df7408892598d9c6efd3393 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php @@ -0,0 +1,41 @@ +methodName = $methodName; + $this->className = $className; + } + + + /** + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * @return string + */ + public function getClassName() + { + return $this->className; + } + + } diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php new file mode 100644 index 0000000000000000000000000000000000000000..b113941fc95855d6e404dde24b69cd1c746422b2 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php @@ -0,0 +1,60 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class MethodNotFoundException extends DoubleException +{ + /** + * @var string + */ + private $classname; + + /** + * @var string + */ + private $methodName; + + /** + * @var array + */ + private $arguments; + + /** + * @param string $message + * @param string $classname + * @param string $methodName + * @param null|Argument\ArgumentsWildcard|array $arguments + */ + public function __construct($message, $classname, $methodName, $arguments = null) + { + parent::__construct($message); + + $this->classname = $classname; + $this->methodName = $methodName; + $this->arguments = $arguments; + } + + public function getClassname() + { + return $this->classname; + } + + public function getMethodName() + { + return $this->methodName; + } + + public function getArguments() + { + return $this->arguments; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php new file mode 100644 index 0000000000000000000000000000000000000000..6303049700fabe30d246cc0b38fcc774a63166ec --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php @@ -0,0 +1,41 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Doubler; + +class ReturnByReferenceException extends DoubleException +{ + private $classname; + private $methodName; + + /** + * @param string $message + * @param string $classname + * @param string $methodName + */ + public function __construct($message, $classname, $methodName) + { + parent::__construct($message); + + $this->classname = $classname; + $this->methodName = $methodName; + } + + public function getClassname() + { + return $this->classname; + } + + public function getMethodName() + { + return $this->methodName; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php new file mode 100644 index 0000000000000000000000000000000000000000..ac9fe4dd997ce476bfe6967fe54cb20c74aa0cd8 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php @@ -0,0 +1,26 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception; + +/** + * Core Prophecy exception interface. + * All Prophecy exceptions implement it. + * + * @author Konstantin Kudryashov + */ +interface Exception +{ + /** + * @return string + */ + public function getMessage(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php new file mode 100644 index 0000000000000000000000000000000000000000..bc91c690fa23dd8b34dfcaa5ce202b152e89c268 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php @@ -0,0 +1,16 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception; + +class InvalidArgumentException extends \InvalidArgumentException implements Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php new file mode 100644 index 0000000000000000000000000000000000000000..44b598a440e6cedb06427c11bacc4ee8f6b2abd3 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php @@ -0,0 +1,50 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\ObjectProphecy; + +class AggregateException extends \RuntimeException implements PredictionException +{ + private $exceptions = array(); + private $objectProphecy; + + public function append(PredictionException $exception) + { + $message = $exception->getMessage(); + $message = ' '.strtr($message, array("\n" => "\n "))."\n"; + + $this->message = rtrim($this->message.$message); + $this->exceptions[] = $exception; + } + + /** + * @return PredictionException[] + */ + public function getExceptions() + { + return $this->exceptions; + } + + public function setObjectProphecy(ObjectProphecy $objectProphecy) + { + $this->objectProphecy = $objectProphecy; + } + + /** + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php new file mode 100644 index 0000000000000000000000000000000000000000..bbbbc3d97a19dc8b7c86348007179c1902f9be97 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php @@ -0,0 +1,24 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use RuntimeException; + +/** + * Basic failed prediction exception. + * Use it for custom prediction failures. + * + * @author Konstantin Kudryashov + */ +class FailedPredictionException extends RuntimeException implements PredictionException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php new file mode 100644 index 0000000000000000000000000000000000000000..05ea4aad862ea66f24450eaed5ac5fb2b3ac7f6f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Exception\Prophecy\MethodProphecyException; + +class NoCallsException extends MethodProphecyException implements PredictionException +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php new file mode 100644 index 0000000000000000000000000000000000000000..2596b1ef1f161272fa152bd04d1add6a6bdad50e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Exception\Exception; + +interface PredictionException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php new file mode 100644 index 0000000000000000000000000000000000000000..9d905431f8dbd40f0f35f8b1d8832462c27f40fd --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php @@ -0,0 +1,31 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\MethodProphecy; + +class UnexpectedCallsCountException extends UnexpectedCallsException +{ + private $expectedCount; + + public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls) + { + parent::__construct($message, $methodProphecy, $calls); + + $this->expectedCount = intval($count); + } + + public function getExpectedCount() + { + return $this->expectedCount; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php new file mode 100644 index 0000000000000000000000000000000000000000..7a99c2d7963ea8892591460c1356481cddabbd44 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php @@ -0,0 +1,32 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prediction; + +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\Prophecy\MethodProphecyException; + +class UnexpectedCallsException extends MethodProphecyException implements PredictionException +{ + private $calls = array(); + + public function __construct($message, MethodProphecy $methodProphecy, array $calls) + { + parent::__construct($message, $methodProphecy); + + $this->calls = $calls; + } + + public function getCalls() + { + return $this->calls; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php new file mode 100644 index 0000000000000000000000000000000000000000..1b03eaf4726cc22111e0fb86bdc66a9aa3702f3e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Prophecy\MethodProphecy; + +class MethodProphecyException extends ObjectProphecyException +{ + private $methodProphecy; + + public function __construct($message, MethodProphecy $methodProphecy) + { + parent::__construct($message, $methodProphecy->getObjectProphecy()); + + $this->methodProphecy = $methodProphecy; + } + + /** + * @return MethodProphecy + */ + public function getMethodProphecy() + { + return $this->methodProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php new file mode 100644 index 0000000000000000000000000000000000000000..e345402e016e28fffd1a6bad8a430caf7662b670 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Prophecy\ObjectProphecy; + +class ObjectProphecyException extends \RuntimeException implements ProphecyException +{ + private $objectProphecy; + + public function __construct($message, ObjectProphecy $objectProphecy) + { + parent::__construct($message); + + $this->objectProphecy = $objectProphecy; + } + + /** + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php new file mode 100644 index 0000000000000000000000000000000000000000..91573328724e2cf4a485665741ad001463d4884e --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php @@ -0,0 +1,18 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Exception\Prophecy; + +use Prophecy\Exception\Exception; + +interface ProphecyException extends Exception +{ +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php new file mode 100644 index 0000000000000000000000000000000000000000..209821ce91e6ef442fc39ae05124d4cea8657046 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php @@ -0,0 +1,69 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; +use phpDocumentor\Reflection\DocBlock\Tags\Method; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class ClassAndInterfaceTagRetriever implements MethodTagRetrieverInterface +{ + private $classRetriever; + + public function __construct(MethodTagRetrieverInterface $classRetriever = null) + { + if (null !== $classRetriever) { + $this->classRetriever = $classRetriever; + + return; + } + + $this->classRetriever = class_exists('phpDocumentor\Reflection\DocBlockFactory') && class_exists('phpDocumentor\Reflection\Types\ContextFactory') + ? new ClassTagRetriever() + : new LegacyClassTagRetriever() + ; + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + return array_merge( + $this->classRetriever->getTagList($reflectionClass), + $this->getInterfacesTagList($reflectionClass) + ); + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + private function getInterfacesTagList(\ReflectionClass $reflectionClass) + { + $interfaces = $reflectionClass->getInterfaces(); + $tagList = array(); + + foreach($interfaces as $interface) { + $tagList = array_merge($tagList, $this->classRetriever->getTagList($interface)); + } + + return $tagList; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php new file mode 100644 index 0000000000000000000000000000000000000000..1d2da8f03e3988c9dbf5c98e3d9a29fec3e1a29f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php @@ -0,0 +1,52 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tags\Method; +use phpDocumentor\Reflection\DocBlockFactory; +use phpDocumentor\Reflection\Types\ContextFactory; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class ClassTagRetriever implements MethodTagRetrieverInterface +{ + private $docBlockFactory; + private $contextFactory; + + public function __construct() + { + $this->docBlockFactory = DocBlockFactory::createInstance(); + $this->contextFactory = new ContextFactory(); + } + + /** + * @param \ReflectionClass $reflectionClass + * + * @return Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + try { + $phpdoc = $this->docBlockFactory->create( + $reflectionClass, + $this->contextFactory->createFromReflector($reflectionClass) + ); + + return $phpdoc->getTagsByName('method'); + } catch (\InvalidArgumentException $e) { + return array(); + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php new file mode 100644 index 0000000000000000000000000000000000000000..c0dec3de82122e8a9b8f543103e05331a2d94bb7 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php @@ -0,0 +1,35 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock; +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; + +/** + * @author Théo FIDRY + * + * @internal + */ +final class LegacyClassTagRetriever implements MethodTagRetrieverInterface +{ + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[] + */ + public function getTagList(\ReflectionClass $reflectionClass) + { + $phpdoc = new DocBlock($reflectionClass->getDocComment()); + + return $phpdoc->getTagsByName('method'); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..d3989dad5883322552666458a47436df051967b3 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php @@ -0,0 +1,30 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\PhpDocumentor; + +use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag; +use phpDocumentor\Reflection\DocBlock\Tags\Method; + +/** + * @author Théo FIDRY + * + * @internal + */ +interface MethodTagRetrieverInterface +{ + /** + * @param \ReflectionClass $reflectionClass + * + * @return LegacyMethodTag[]|Method[] + */ + public function getTagList(\ReflectionClass $reflectionClass); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php new file mode 100644 index 0000000000000000000000000000000000000000..b478736695b0abc38cc41804661fa7828626e87f --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php @@ -0,0 +1,86 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Argument\Token\AnyValuesToken; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\NoCallsException; + +/** + * Call prediction. + * + * @author Konstantin Kudryashov + */ +class CallPrediction implements PredictionInterface +{ + private $util; + + /** + * Initializes prediction. + * + * @param StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there was at least one call. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\NoCallsException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if (count($calls)) { + return; + } + + $methodCalls = $object->findProphecyMethodCalls( + $method->getMethodName(), + new ArgumentsWildcard(array(new AnyValuesToken)) + ); + + if (count($methodCalls)) { + throw new NoCallsException(sprintf( + "No calls have been made that match:\n". + " %s->%s(%s)\n". + "but expected at least one.\n". + "Recorded `%s(...)` calls:\n%s", + + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + $method->getMethodName(), + $this->util->stringifyCalls($methodCalls) + ), $method); + } + + throw new NoCallsException(sprintf( + "No calls have been made that match:\n". + " %s->%s(%s)\n". + "but expected at least one.", + + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard() + ), $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php new file mode 100644 index 0000000000000000000000000000000000000000..31c6c575acd28ddcb13e0ae86a025dccc2b068b1 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php @@ -0,0 +1,107 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Argument\Token\AnyValuesToken; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\UnexpectedCallsCountException; + +/** + * Prediction interface. + * Predictions are logical test blocks, tied to `should...` keyword. + * + * @author Konstantin Kudryashov + */ +class CallTimesPrediction implements PredictionInterface +{ + private $times; + private $util; + + /** + * Initializes prediction. + * + * @param int $times + * @param StringUtil $util + */ + public function __construct($times, StringUtil $util = null) + { + $this->times = intval($times); + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there was exact amount of calls made. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if ($this->times == count($calls)) { + return; + } + + $methodCalls = $object->findProphecyMethodCalls( + $method->getMethodName(), + new ArgumentsWildcard(array(new AnyValuesToken)) + ); + + if (count($calls)) { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but %d were made:\n%s", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + count($calls), + $this->util->stringifyCalls($calls) + ); + } elseif (count($methodCalls)) { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but none were made.\n". + "Recorded `%s(...)` calls:\n%s", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + $method->getMethodName(), + $this->util->stringifyCalls($methodCalls) + ); + } else { + $message = sprintf( + "Expected exactly %d calls that match:\n". + " %s->%s(%s)\n". + "but none were made.", + + $this->times, + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard() + ); + } + + throw new UnexpectedCallsCountException($message, $method, $this->times, $calls); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php new file mode 100644 index 0000000000000000000000000000000000000000..44bc782c8a15123ab0d043d52c8f3fe375f9655b --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php @@ -0,0 +1,65 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use Closure; + +/** + * Callback prediction. + * + * @author Konstantin Kudryashov + */ +class CallbackPrediction implements PredictionInterface +{ + private $callback; + + /** + * Initializes callback prediction. + * + * @param callable $callback Custom callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackPrediction, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Executes preset callback. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + $callback = $this->callback; + + if ($callback instanceof Closure && method_exists('Closure', 'bind')) { + $callback = Closure::bind($callback, $object); + } + + call_user_func($callback, $calls, $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php new file mode 100644 index 0000000000000000000000000000000000000000..46ac5bfc062d7cc04b29a6ddcf5c91ec38423903 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php @@ -0,0 +1,68 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\UnexpectedCallsException; + +/** + * No calls prediction. + * + * @author Konstantin Kudryashov + */ +class NoCallsPrediction implements PredictionInterface +{ + private $util; + + /** + * Initializes prediction. + * + * @param null|StringUtil $util + */ + public function __construct(StringUtil $util = null) + { + $this->util = $util ?: new StringUtil; + } + + /** + * Tests that there were no calls made. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method) + { + if (!count($calls)) { + return; + } + + $verb = count($calls) === 1 ? 'was' : 'were'; + + throw new UnexpectedCallsException(sprintf( + "No calls expected that match:\n". + " %s->%s(%s)\n". + "but %d %s made:\n%s", + get_class($object->reveal()), + $method->getMethodName(), + $method->getArgumentsWildcard(), + count($calls), + $verb, + $this->util->stringifyCalls($calls) + ), $method, $calls); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..f7fb06a9963c963d15b6c7905996f02561e74d51 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php @@ -0,0 +1,37 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prediction; + +use Prophecy\Call\Call; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Prediction interface. + * Predictions are logical test blocks, tied to `should...` keyword. + * + * @author Konstantin Kudryashov + */ +interface PredictionInterface +{ + /** + * Tests that double fulfilled prediction. + * + * @param Call[] $calls + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws object + * @return void + */ + public function check(array $calls, ObjectProphecy $object, MethodProphecy $method); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php new file mode 100644 index 0000000000000000000000000000000000000000..5f406bf7a8ce0fb67dddaf1a66308e6467df904c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php @@ -0,0 +1,66 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use Closure; + +/** + * Callback promise. + * + * @author Konstantin Kudryashov + */ +class CallbackPromise implements PromiseInterface +{ + private $callback; + + /** + * Initializes callback promise. + * + * @param callable $callback Custom callback + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($callback) + { + if (!is_callable($callback)) { + throw new InvalidArgumentException(sprintf( + 'Callable expected as an argument to CallbackPromise, but got %s.', + gettype($callback) + )); + } + + $this->callback = $callback; + } + + /** + * Evaluates promise callback. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + $callback = $this->callback; + + if ($callback instanceof Closure && method_exists('Closure', 'bind')) { + $callback = Closure::bind($callback, $object); + } + + return call_user_func($callback, $args, $object, $method); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..382537b47da80e26bd713a8ee5c7d1386f393786 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php @@ -0,0 +1,35 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Promise interface. + * Promises are logical blocks, tied to `will...` keyword. + * + * @author Konstantin Kudryashov + */ +interface PromiseInterface +{ + /** + * Evaluates promise. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php new file mode 100644 index 0000000000000000000000000000000000000000..39bfeea07076f3a6f8ccb1e291fd487431417738 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php @@ -0,0 +1,61 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Return argument promise. + * + * @author Konstantin Kudryashov + */ +class ReturnArgumentPromise implements PromiseInterface +{ + /** + * @var int + */ + private $index; + + /** + * Initializes callback promise. + * + * @param int $index The zero-indexed number of the argument to return + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($index = 0) + { + if (!is_int($index) || $index < 0) { + throw new InvalidArgumentException(sprintf( + 'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.', + $index + )); + } + $this->index = $index; + } + + /** + * Returns nth argument if has one, null otherwise. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return null|mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + return count($args) > $this->index ? $args[$this->index] : null; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php new file mode 100644 index 0000000000000000000000000000000000000000..c7d5ac5988348aed44f0b7a751c09ce98a15e27c --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php @@ -0,0 +1,55 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; + +/** + * Return promise. + * + * @author Konstantin Kudryashov + */ +class ReturnPromise implements PromiseInterface +{ + private $returnValues = array(); + + /** + * Initializes promise. + * + * @param array $returnValues Array of values + */ + public function __construct(array $returnValues) + { + $this->returnValues = $returnValues; + } + + /** + * Returns saved values one by one until last one, then continuously returns last value. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @return mixed + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + $value = array_shift($this->returnValues); + + if (!count($this->returnValues)) { + $this->returnValues[] = $value; + } + + return $value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php new file mode 100644 index 0000000000000000000000000000000000000000..7250fa3c6d805b06d0edf89f443c82e468208a14 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php @@ -0,0 +1,99 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Promise; + +use Doctrine\Instantiator\Instantiator; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\MethodProphecy; +use Prophecy\Exception\InvalidArgumentException; +use ReflectionClass; + +/** + * Throw promise. + * + * @author Konstantin Kudryashov + */ +class ThrowPromise implements PromiseInterface +{ + private $exception; + + /** + * @var \Doctrine\Instantiator\Instantiator + */ + private $instantiator; + + /** + * Initializes promise. + * + * @param string|\Exception|\Throwable $exception Exception class name or instance + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function __construct($exception) + { + if (is_string($exception)) { + if (!class_exists($exception) || !$this->isAValidThrowable($exception)) { + throw new InvalidArgumentException(sprintf( + 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', + $exception + )); + } + } elseif (!$exception instanceof \Exception && !$exception instanceof \Throwable) { + throw new InvalidArgumentException(sprintf( + 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.', + is_object($exception) ? get_class($exception) : gettype($exception) + )); + } + + $this->exception = $exception; + } + + /** + * Throws predefined exception. + * + * @param array $args + * @param ObjectProphecy $object + * @param MethodProphecy $method + * + * @throws object + */ + public function execute(array $args, ObjectProphecy $object, MethodProphecy $method) + { + if (is_string($this->exception)) { + $classname = $this->exception; + $reflection = new ReflectionClass($classname); + $constructor = $reflection->getConstructor(); + + if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) { + throw $reflection->newInstance(); + } + + if (!$this->instantiator) { + $this->instantiator = new Instantiator(); + } + + throw $this->instantiator->instantiate($classname); + } + + throw $this->exception; + } + + /** + * @param string $exception + * + * @return bool + */ + private function isAValidThrowable($exception) + { + return is_a($exception, 'Exception', true) || is_subclass_of($exception, 'Throwable', true); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php new file mode 100644 index 0000000000000000000000000000000000000000..5c0ede9a66d79939e7319198578fb911bf11bdae --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php @@ -0,0 +1,464 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +use Prophecy\Argument; +use Prophecy\Prophet; +use Prophecy\Promise; +use Prophecy\Prediction; +use Prophecy\Exception\Doubler\MethodNotFoundException; +use Prophecy\Exception\InvalidArgumentException; +use Prophecy\Exception\Prophecy\MethodProphecyException; + +/** + * Method prophecy. + * + * @author Konstantin Kudryashov + */ +class MethodProphecy +{ + private $objectProphecy; + private $methodName; + private $argumentsWildcard; + private $promise; + private $prediction; + private $checkedPredictions = array(); + private $bound = false; + private $voidReturnType = false; + + /** + * Initializes method prophecy. + * + * @param ObjectProphecy $objectProphecy + * @param string $methodName + * @param null|Argument\ArgumentsWildcard|array $arguments + * + * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found + */ + public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null) + { + $double = $objectProphecy->reveal(); + if (!method_exists($double, $methodName)) { + throw new MethodNotFoundException(sprintf( + 'Method `%s::%s()` is not defined.', get_class($double), $methodName + ), get_class($double), $methodName, $arguments); + } + + $this->objectProphecy = $objectProphecy; + $this->methodName = $methodName; + + $reflectedMethod = new \ReflectionMethod($double, $methodName); + if ($reflectedMethod->isFinal()) { + throw new MethodProphecyException(sprintf( + "Can not add prophecy for a method `%s::%s()`\n". + "as it is a final method.", + get_class($double), + $methodName + ), $this); + } + + if (null !== $arguments) { + $this->withArguments($arguments); + } + + if (version_compare(PHP_VERSION, '7.0', '>=') && true === $reflectedMethod->hasReturnType()) { + $type = (string) $reflectedMethod->getReturnType(); + + if ('void' === $type) { + $this->voidReturnType = true; + return; + } + + $this->will(function () use ($type) { + switch ($type) { + case 'string': return ''; + case 'float': return 0.0; + case 'int': return 0; + case 'bool': return false; + case 'array': return array(); + + case 'callable': + case 'Closure': + return function () {}; + + case 'Traversable': + case 'Generator': + // Remove eval() when minimum version >=5.5 + /** @var callable $generator */ + $generator = eval('return function () { yield; };'); + return $generator(); + + default: + $prophet = new Prophet; + return $prophet->prophesize($type)->reveal(); + } + }); + } + } + + /** + * Sets argument wildcard. + * + * @param array|Argument\ArgumentsWildcard $arguments + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function withArguments($arguments) + { + if (is_array($arguments)) { + $arguments = new Argument\ArgumentsWildcard($arguments); + } + + if (!$arguments instanceof Argument\ArgumentsWildcard) { + throw new InvalidArgumentException(sprintf( + "Either an array or an instance of ArgumentsWildcard expected as\n". + 'a `MethodProphecy::withArguments()` argument, but got %s.', + gettype($arguments) + )); + } + + $this->argumentsWildcard = $arguments; + + return $this; + } + + /** + * Sets custom promise to the prophecy. + * + * @param callable|Promise\PromiseInterface $promise + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function will($promise) + { + if (is_callable($promise)) { + $promise = new Promise\CallbackPromise($promise); + } + + if (!$promise instanceof Promise\PromiseInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PromiseInterface, but got %s.', + gettype($promise) + )); + } + + $this->bindToObjectProphecy(); + $this->promise = $promise; + + return $this; + } + + /** + * Sets return promise to the prophecy. + * + * @see Prophecy\Promise\ReturnPromise + * + * @return $this + */ + public function willReturn() + { + if ($this->voidReturnType) { + throw new MethodProphecyException( + "The method \"$this->methodName\" has a void return type, and so cannot return anything", + $this + ); + } + + return $this->will(new Promise\ReturnPromise(func_get_args())); + } + + /** + * Sets return argument promise to the prophecy. + * + * @param int $index The zero-indexed number of the argument to return + * + * @see Prophecy\Promise\ReturnArgumentPromise + * + * @return $this + */ + public function willReturnArgument($index = 0) + { + if ($this->voidReturnType) { + throw new MethodProphecyException("The method \"$this->methodName\" has a void return type", $this); + } + + return $this->will(new Promise\ReturnArgumentPromise($index)); + } + + /** + * Sets throw promise to the prophecy. + * + * @see Prophecy\Promise\ThrowPromise + * + * @param string|\Exception $exception Exception class or instance + * + * @return $this + */ + public function willThrow($exception) + { + return $this->will(new Promise\ThrowPromise($exception)); + } + + /** + * Sets custom prediction to the prophecy. + * + * @param callable|Prediction\PredictionInterface $prediction + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function should($prediction) + { + if (is_callable($prediction)) { + $prediction = new Prediction\CallbackPrediction($prediction); + } + + if (!$prediction instanceof Prediction\PredictionInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PredictionInterface, but got %s.', + gettype($prediction) + )); + } + + $this->bindToObjectProphecy(); + $this->prediction = $prediction; + + return $this; + } + + /** + * Sets call prediction to the prophecy. + * + * @see Prophecy\Prediction\CallPrediction + * + * @return $this + */ + public function shouldBeCalled() + { + return $this->should(new Prediction\CallPrediction); + } + + /** + * Sets no calls prediction to the prophecy. + * + * @see Prophecy\Prediction\NoCallsPrediction + * + * @return $this + */ + public function shouldNotBeCalled() + { + return $this->should(new Prediction\NoCallsPrediction); + } + + /** + * Sets call times prediction to the prophecy. + * + * @see Prophecy\Prediction\CallTimesPrediction + * + * @param $count + * + * @return $this + */ + public function shouldBeCalledTimes($count) + { + return $this->should(new Prediction\CallTimesPrediction($count)); + } + + /** + * Checks provided prediction immediately. + * + * @param callable|Prediction\PredictionInterface $prediction + * + * @return $this + * + * @throws \Prophecy\Exception\InvalidArgumentException + */ + public function shouldHave($prediction) + { + if (is_callable($prediction)) { + $prediction = new Prediction\CallbackPrediction($prediction); + } + + if (!$prediction instanceof Prediction\PredictionInterface) { + throw new InvalidArgumentException(sprintf( + 'Expected callable or instance of PredictionInterface, but got %s.', + gettype($prediction) + )); + } + + if (null === $this->promise && !$this->voidReturnType) { + $this->willReturn(); + } + + $calls = $this->getObjectProphecy()->findProphecyMethodCalls( + $this->getMethodName(), + $this->getArgumentsWildcard() + ); + + try { + $prediction->check($calls, $this->getObjectProphecy(), $this); + $this->checkedPredictions[] = $prediction; + } catch (\Exception $e) { + $this->checkedPredictions[] = $prediction; + + throw $e; + } + + return $this; + } + + /** + * Checks call prediction. + * + * @see Prophecy\Prediction\CallPrediction + * + * @return $this + */ + public function shouldHaveBeenCalled() + { + return $this->shouldHave(new Prediction\CallPrediction); + } + + /** + * Checks no calls prediction. + * + * @see Prophecy\Prediction\NoCallsPrediction + * + * @return $this + */ + public function shouldNotHaveBeenCalled() + { + return $this->shouldHave(new Prediction\NoCallsPrediction); + } + + /** + * Checks no calls prediction. + * + * @see Prophecy\Prediction\NoCallsPrediction + * @deprecated + * + * @return $this + */ + public function shouldNotBeenCalled() + { + return $this->shouldNotHaveBeenCalled(); + } + + /** + * Checks call times prediction. + * + * @see Prophecy\Prediction\CallTimesPrediction + * + * @param int $count + * + * @return $this + */ + public function shouldHaveBeenCalledTimes($count) + { + return $this->shouldHave(new Prediction\CallTimesPrediction($count)); + } + + /** + * Checks currently registered [with should(...)] prediction. + */ + public function checkPrediction() + { + if (null === $this->prediction) { + return; + } + + $this->shouldHave($this->prediction); + } + + /** + * Returns currently registered promise. + * + * @return null|Promise\PromiseInterface + */ + public function getPromise() + { + return $this->promise; + } + + /** + * Returns currently registered prediction. + * + * @return null|Prediction\PredictionInterface + */ + public function getPrediction() + { + return $this->prediction; + } + + /** + * Returns predictions that were checked on this object. + * + * @return Prediction\PredictionInterface[] + */ + public function getCheckedPredictions() + { + return $this->checkedPredictions; + } + + /** + * Returns object prophecy this method prophecy is tied to. + * + * @return ObjectProphecy + */ + public function getObjectProphecy() + { + return $this->objectProphecy; + } + + /** + * Returns method name. + * + * @return string + */ + public function getMethodName() + { + return $this->methodName; + } + + /** + * Returns arguments wildcard. + * + * @return Argument\ArgumentsWildcard + */ + public function getArgumentsWildcard() + { + return $this->argumentsWildcard; + } + + /** + * @return bool + */ + public function hasReturnVoid() + { + return $this->voidReturnType; + } + + private function bindToObjectProphecy() + { + if ($this->bound) { + return; + } + + $this->getObjectProphecy()->addMethodProphecy($this); + $this->bound = true; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php new file mode 100644 index 0000000000000000000000000000000000000000..8d8f8a1bb9cadfc19b77765772549b7614b3b5c1 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php @@ -0,0 +1,281 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +use SebastianBergmann\Comparator\ComparisonFailure; +use Prophecy\Comparator\Factory as ComparatorFactory; +use Prophecy\Call\Call; +use Prophecy\Doubler\LazyDouble; +use Prophecy\Argument\ArgumentsWildcard; +use Prophecy\Call\CallCenter; +use Prophecy\Exception\Prophecy\ObjectProphecyException; +use Prophecy\Exception\Prophecy\MethodProphecyException; +use Prophecy\Exception\Prediction\AggregateException; +use Prophecy\Exception\Prediction\PredictionException; + +/** + * Object prophecy. + * + * @author Konstantin Kudryashov + */ +class ObjectProphecy implements ProphecyInterface +{ + private $lazyDouble; + private $callCenter; + private $revealer; + private $comparatorFactory; + + /** + * @var MethodProphecy[][] + */ + private $methodProphecies = array(); + + /** + * Initializes object prophecy. + * + * @param LazyDouble $lazyDouble + * @param CallCenter $callCenter + * @param RevealerInterface $revealer + * @param ComparatorFactory $comparatorFactory + */ + public function __construct( + LazyDouble $lazyDouble, + CallCenter $callCenter = null, + RevealerInterface $revealer = null, + ComparatorFactory $comparatorFactory = null + ) { + $this->lazyDouble = $lazyDouble; + $this->callCenter = $callCenter ?: new CallCenter; + $this->revealer = $revealer ?: new Revealer; + + $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance(); + } + + /** + * Forces double to extend specific class. + * + * @param string $class + * + * @return $this + */ + public function willExtend($class) + { + $this->lazyDouble->setParentClass($class); + + return $this; + } + + /** + * Forces double to implement specific interface. + * + * @param string $interface + * + * @return $this + */ + public function willImplement($interface) + { + $this->lazyDouble->addInterface($interface); + + return $this; + } + + /** + * Sets constructor arguments. + * + * @param array $arguments + * + * @return $this + */ + public function willBeConstructedWith(array $arguments = null) + { + $this->lazyDouble->setArguments($arguments); + + return $this; + } + + /** + * Reveals double. + * + * @return object + * + * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface + */ + public function reveal() + { + $double = $this->lazyDouble->getInstance(); + + if (null === $double || !$double instanceof ProphecySubjectInterface) { + throw new ObjectProphecyException( + "Generated double must implement ProphecySubjectInterface, but it does not.\n". + 'It seems you have wrongly configured doubler without required ClassPatch.', + $this + ); + } + + $double->setProphecy($this); + + return $double; + } + + /** + * Adds method prophecy to object prophecy. + * + * @param MethodProphecy $methodProphecy + * + * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't + * have arguments wildcard + */ + public function addMethodProphecy(MethodProphecy $methodProphecy) + { + $argumentsWildcard = $methodProphecy->getArgumentsWildcard(); + if (null === $argumentsWildcard) { + throw new MethodProphecyException(sprintf( + "Can not add prophecy for a method `%s::%s()`\n". + "as you did not specify arguments wildcard for it.", + get_class($this->reveal()), + $methodProphecy->getMethodName() + ), $methodProphecy); + } + + $methodName = $methodProphecy->getMethodName(); + + if (!isset($this->methodProphecies[$methodName])) { + $this->methodProphecies[$methodName] = array(); + } + + $this->methodProphecies[$methodName][] = $methodProphecy; + } + + /** + * Returns either all or related to single method prophecies. + * + * @param null|string $methodName + * + * @return MethodProphecy[] + */ + public function getMethodProphecies($methodName = null) + { + if (null === $methodName) { + return $this->methodProphecies; + } + + if (!isset($this->methodProphecies[$methodName])) { + return array(); + } + + return $this->methodProphecies[$methodName]; + } + + /** + * Makes specific method call. + * + * @param string $methodName + * @param array $arguments + * + * @return mixed + */ + public function makeProphecyMethodCall($methodName, array $arguments) + { + $arguments = $this->revealer->reveal($arguments); + $return = $this->callCenter->makeCall($this, $methodName, $arguments); + + return $this->revealer->reveal($return); + } + + /** + * Finds calls by method name & arguments wildcard. + * + * @param string $methodName + * @param ArgumentsWildcard $wildcard + * + * @return Call[] + */ + public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard) + { + return $this->callCenter->findCalls($methodName, $wildcard); + } + + /** + * Checks that registered method predictions do not fail. + * + * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail + */ + public function checkProphecyMethodsPredictions() + { + $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal()))); + $exception->setObjectProphecy($this); + + foreach ($this->methodProphecies as $prophecies) { + foreach ($prophecies as $prophecy) { + try { + $prophecy->checkPrediction(); + } catch (PredictionException $e) { + $exception->append($e); + } + } + } + + if (count($exception->getExceptions())) { + throw $exception; + } + } + + /** + * Creates new method prophecy using specified method name and arguments. + * + * @param string $methodName + * @param array $arguments + * + * @return MethodProphecy + */ + public function __call($methodName, array $arguments) + { + $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments)); + + foreach ($this->getMethodProphecies($methodName) as $prophecy) { + $argumentsWildcard = $prophecy->getArgumentsWildcard(); + $comparator = $this->comparatorFactory->getComparatorFor( + $argumentsWildcard, $arguments + ); + + try { + $comparator->assertEquals($argumentsWildcard, $arguments); + return $prophecy; + } catch (ComparisonFailure $failure) {} + } + + return new MethodProphecy($this, $methodName, $arguments); + } + + /** + * Tries to get property value from double. + * + * @param string $name + * + * @return mixed + */ + public function __get($name) + { + return $this->reveal()->$name; + } + + /** + * Tries to set property value to double. + * + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + $this->reveal()->$name = $this->revealer->reveal($value); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..462f15a90275153e99f040ad3378b794c2573a47 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php @@ -0,0 +1,27 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Core Prophecy interface. + * + * @author Konstantin Kudryashov + */ +interface ProphecyInterface +{ + /** + * Reveals prophecy object (double) . + * + * @return object + */ + public function reveal(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..2d839585f90c43b255973256066bbd95062bedc4 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php @@ -0,0 +1,34 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Controllable doubles interface. + * + * @author Konstantin Kudryashov + */ +interface ProphecySubjectInterface +{ + /** + * Sets subject prophecy. + * + * @param ProphecyInterface $prophecy + */ + public function setProphecy(ProphecyInterface $prophecy); + + /** + * Returns subject prophecy. + * + * @return ProphecyInterface + */ + public function getProphecy(); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php new file mode 100644 index 0000000000000000000000000000000000000000..60ecdac814eb1d1e146cea7b903ae9e2fb3108fb --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php @@ -0,0 +1,44 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Basic prophecies revealer. + * + * @author Konstantin Kudryashov + */ +class Revealer implements RevealerInterface +{ + /** + * Unwraps value(s). + * + * @param mixed $value + * + * @return mixed + */ + public function reveal($value) + { + if (is_array($value)) { + return array_map(array($this, __FUNCTION__), $value); + } + + if (!is_object($value)) { + return $value; + } + + if ($value instanceof ProphecyInterface) { + $value = $value->reveal(); + } + + return $value; + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..ffc82bb6f57ada17f1e77119f1cbe352b5855de6 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php @@ -0,0 +1,29 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Prophecy; + +/** + * Prophecies revealer interface. + * + * @author Konstantin Kudryashov + */ +interface RevealerInterface +{ + /** + * Unwraps value(s). + * + * @param mixed $value + * + * @return mixed + */ + public function reveal($value); +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php new file mode 100644 index 0000000000000000000000000000000000000000..ac649234845d3b06c16d78bfb5eff77adde38300 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php @@ -0,0 +1,134 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy; + +use Prophecy\Doubler\Doubler; +use Prophecy\Doubler\LazyDouble; +use Prophecy\Doubler\ClassPatch; +use Prophecy\Prophecy\ObjectProphecy; +use Prophecy\Prophecy\RevealerInterface; +use Prophecy\Prophecy\Revealer; +use Prophecy\Call\CallCenter; +use Prophecy\Util\StringUtil; +use Prophecy\Exception\Prediction\PredictionException; +use Prophecy\Exception\Prediction\AggregateException; + +/** + * Prophet creates prophecies. + * + * @author Konstantin Kudryashov + */ +class Prophet +{ + private $doubler; + private $revealer; + private $util; + + /** + * @var ObjectProphecy[] + */ + private $prophecies = array(); + + /** + * Initializes Prophet. + * + * @param null|Doubler $doubler + * @param null|RevealerInterface $revealer + * @param null|StringUtil $util + */ + public function __construct(Doubler $doubler = null, RevealerInterface $revealer = null, + StringUtil $util = null) + { + if (null === $doubler) { + $doubler = new Doubler; + $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch); + $doubler->registerClassPatch(new ClassPatch\TraversablePatch); + $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch); + $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch); + $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch); + $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch()); + $doubler->registerClassPatch(new ClassPatch\MagicCallPatch); + $doubler->registerClassPatch(new ClassPatch\KeywordPatch); + } + + $this->doubler = $doubler; + $this->revealer = $revealer ?: new Revealer; + $this->util = $util ?: new StringUtil; + } + + /** + * Creates new object prophecy. + * + * @param null|string $classOrInterface Class or interface name + * + * @return ObjectProphecy + */ + public function prophesize($classOrInterface = null) + { + $this->prophecies[] = $prophecy = new ObjectProphecy( + new LazyDouble($this->doubler), + new CallCenter($this->util), + $this->revealer + ); + + if ($classOrInterface && class_exists($classOrInterface)) { + return $prophecy->willExtend($classOrInterface); + } + + if ($classOrInterface && interface_exists($classOrInterface)) { + return $prophecy->willImplement($classOrInterface); + } + + return $prophecy; + } + + /** + * Returns all created object prophecies. + * + * @return ObjectProphecy[] + */ + public function getProphecies() + { + return $this->prophecies; + } + + /** + * Returns Doubler instance assigned to this Prophet. + * + * @return Doubler + */ + public function getDoubler() + { + return $this->doubler; + } + + /** + * Checks all predictions defined by prophecies of this Prophet. + * + * @throws Exception\Prediction\AggregateException If any prediction fails + */ + public function checkPredictions() + { + $exception = new AggregateException("Some predictions failed:\n"); + foreach ($this->prophecies as $prophecy) { + try { + $prophecy->checkProphecyMethodsPredictions(); + } catch (PredictionException $e) { + $exception->append($e); + } + } + + if (count($exception->getExceptions())) { + throw $exception; + } + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..50dd3f325e30754c1d22b3bb43d644370a74b197 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php @@ -0,0 +1,212 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * This class is a modification from sebastianbergmann/exporter + * @see https://github.com/sebastianbergmann/exporter + */ +class ExportUtil +{ + /** + * Exports a value as a string + * + * The output of this method is similar to the output of print_r(), but + * improved in various aspects: + * + * - NULL is rendered as "null" (instead of "") + * - TRUE is rendered as "true" (instead of "1") + * - FALSE is rendered as "false" (instead of "") + * - Strings are always quoted with single quotes + * - Carriage returns and newlines are normalized to \n + * - Recursion and repeated rendering is treated properly + * + * @param mixed $value + * @param int $indentation The indentation level of the 2nd+ line + * @return string + */ + public static function export($value, $indentation = 0) + { + return self::recursiveExport($value, $indentation); + } + + /** + * Converts an object to an array containing all of its private, protected + * and public properties. + * + * @param mixed $value + * @return array + */ + public static function toArray($value) + { + if (!is_object($value)) { + return (array) $value; + } + + $array = array(); + + foreach ((array) $value as $key => $val) { + // properties are transformed to keys in the following way: + // private $property => "\0Classname\0property" + // protected $property => "\0*\0property" + // public $property => "property" + if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) { + $key = $matches[1]; + } + + // See https://github.com/php/php-src/commit/5721132 + if ($key === "\0gcdata") { + continue; + } + + $array[$key] = $val; + } + + // Some internal classes like SplObjectStorage don't work with the + // above (fast) mechanism nor with reflection in Zend. + // Format the output similarly to print_r() in this case + if ($value instanceof \SplObjectStorage) { + // However, the fast method does work in HHVM, and exposes the + // internal implementation. Hide it again. + if (property_exists('\SplObjectStorage', '__storage')) { + unset($array['__storage']); + } elseif (property_exists('\SplObjectStorage', 'storage')) { + unset($array['storage']); + } + + if (property_exists('\SplObjectStorage', '__key')) { + unset($array['__key']); + } + + foreach ($value as $key => $val) { + $array[spl_object_hash($val)] = array( + 'obj' => $val, + 'inf' => $value->getInfo(), + ); + } + } + + return $array; + } + + /** + * Recursive implementation of export + * + * @param mixed $value The value to export + * @param int $indentation The indentation level of the 2nd+ line + * @param \SebastianBergmann\RecursionContext\Context $processed Previously processed objects + * @return string + * @see SebastianBergmann\Exporter\Exporter::export + */ + protected static function recursiveExport(&$value, $indentation, $processed = null) + { + if ($value === null) { + return 'null'; + } + + if ($value === true) { + return 'true'; + } + + if ($value === false) { + return 'false'; + } + + if (is_float($value) && floatval(intval($value)) === $value) { + return "$value.0"; + } + + if (is_resource($value)) { + return sprintf( + 'resource(%d) of type (%s)', + $value, + get_resource_type($value) + ); + } + + if (is_string($value)) { + // Match for most non printable chars somewhat taking multibyte chars into account + if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) { + return 'Binary String: 0x' . bin2hex($value); + } + + return "'" . + str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) . + "'"; + } + + $whitespace = str_repeat(' ', 4 * $indentation); + + if (!$processed) { + $processed = new Context; + } + + if (is_array($value)) { + if (($key = $processed->contains($value)) !== false) { + return 'Array &' . $key; + } + + $array = $value; + $key = $processed->add($value); + $values = ''; + + if (count($array) > 0) { + foreach ($array as $k => $v) { + $values .= sprintf( + '%s %s => %s' . "\n", + $whitespace, + self::recursiveExport($k, $indentation), + self::recursiveExport($value[$k], $indentation + 1, $processed) + ); + } + + $values = "\n" . $values . $whitespace; + } + + return sprintf('Array &%s (%s)', $key, $values); + } + + if (is_object($value)) { + $class = get_class($value); + + if ($value instanceof ProphecyInterface) { + return sprintf('%s Object (*Prophecy*)', $class); + } elseif ($hash = $processed->contains($value)) { + return sprintf('%s:%s Object', $class, $hash); + } + + $hash = $processed->add($value); + $values = ''; + $array = self::toArray($value); + + if (count($array) > 0) { + foreach ($array as $k => $v) { + $values .= sprintf( + '%s %s => %s' . "\n", + $whitespace, + self::recursiveExport($k, $indentation), + self::recursiveExport($v, $indentation + 1, $processed) + ); + } + + $values = "\n" . $values . $whitespace; + } + + return sprintf('%s:%s Object (%s)', $class, $hash, $values); + } + + return var_export($value, true); + } +} diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php new file mode 100644 index 0000000000000000000000000000000000000000..bb90156a3f7fed9c071e6cef382fe3b3f93f1bc5 --- /dev/null +++ b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php @@ -0,0 +1,89 @@ + + * Marcello Duarte + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Prophecy\Util; + +use Prophecy\Call\Call; + +/** + * String utility. + * + * @author Konstantin Kudryashov + */ +class StringUtil +{ + /** + * Stringifies any provided value. + * + * @param mixed $value + * @param boolean $exportObject + * + * @return string + */ + public function stringify($value, $exportObject = true) + { + if (is_array($value)) { + if (range(0, count($value) - 1) === array_keys($value)) { + return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']'; + } + + $stringify = array($this, __FUNCTION__); + + return '['.implode(', ', array_map(function ($item, $key) use ($stringify) { + return (is_integer($key) ? $key : '"'.$key.'"'). + ' => '.call_user_func($stringify, $item); + }, $value, array_keys($value))).']'; + } + if (is_resource($value)) { + return get_resource_type($value).':'.$value; + } + if (is_object($value)) { + return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value)); + } + if (true === $value || false === $value) { + return $value ? 'true' : 'false'; + } + if (is_string($value)) { + $str = sprintf('"%s"', str_replace("\n", '\\n', $value)); + + if (50 <= strlen($str)) { + return substr($str, 0, 50).'"...'; + } + + return $str; + } + if (null === $value) { + return 'null'; + } + + return (string) $value; + } + + /** + * Stringifies provided array of calls. + * + * @param Call[] $calls Array of Call instances + * + * @return string + */ + public function stringifyCalls(array $calls) + { + $self = $this; + + return implode(PHP_EOL, array_map(function (Call $call) use ($self) { + return sprintf(' - %s(%s) @ %s', + $call->getMethodName(), + implode(', ', array_map(array($self, 'stringify'), $call->getArguments())), + str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace()) + ); + }, $calls)); + } +} diff --git a/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php b/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php new file mode 100644 index 0000000000000000000000000000000000000000..77f3ad8f6e34e82352b004a2e27d5c081d7833a9 --- /dev/null +++ b/vendor/phpspec/prophecy/tests/Doubler/Generator/ClassMirrorTest.php @@ -0,0 +1,469 @@ +reflect($class, array()); + + $this->assertCount(7, $node->getMethods()); + } + + /** + * @test + */ + public function it_reflects_protected_abstract_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithProtectedAbstractMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertEquals('Fixtures\Prophecy\WithProtectedAbstractMethod', $classNode->getParentClass()); + + $methodNodes = $classNode->getMethods(); + $this->assertCount(1, $methodNodes); + + $this->assertEquals('protected', $methodNodes['innerDetail']->getVisibility()); + } + + /** + * @test + */ + public function it_reflects_public_static_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithStaticMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertEquals('Fixtures\Prophecy\WithStaticMethod', $classNode->getParentClass()); + + $methodNodes = $classNode->getMethods(); + $this->assertCount(1, $methodNodes); + + $this->assertTrue($methodNodes['innerDetail']->isStatic()); + } + + /** + * @test + */ + public function it_marks_required_args_without_types_as_not_optional() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithArguments'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithoutTypeHints'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('arg', $argNodes[0]->getName()); + $this->assertNull($argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertNull($argNodes[0]->getDefault()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + } + + /** + * @test + */ + public function it_properly_reads_methods_arguments_with_types() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithArguments'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(3, $argNodes); + + $this->assertEquals('arg_1', $argNodes[0]->getName()); + $this->assertEquals('array', $argNodes[0]->getTypeHint()); + $this->assertTrue($argNodes[0]->isOptional()); + $this->assertEquals(array(), $argNodes[0]->getDefault()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + + $this->assertEquals('arg_2', $argNodes[1]->getName()); + $this->assertEquals('ArrayAccess', $argNodes[1]->getTypeHint()); + $this->assertFalse($argNodes[1]->isOptional()); + + $this->assertEquals('arg_3', $argNodes[2]->getName()); + $this->assertEquals('ArrayAccess', $argNodes[2]->getTypeHint()); + $this->assertTrue($argNodes[2]->isOptional()); + $this->assertNull($argNodes[2]->getDefault()); + $this->assertFalse($argNodes[2]->isPassedByReference()); + $this->assertFalse($argNodes[2]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.4 + */ + public function it_properly_reads_methods_arguments_with_callable_types() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithCallableArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(2, $argNodes); + + $this->assertEquals('arg_1', $argNodes[0]->getName()); + $this->assertEquals('callable', $argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertFalse($argNodes[0]->isVariadic()); + + $this->assertEquals('arg_2', $argNodes[1]->getName()); + $this->assertEquals('callable', $argNodes[1]->getTypeHint()); + $this->assertTrue($argNodes[1]->isOptional()); + $this->assertNull($argNodes[1]->getDefault()); + $this->assertFalse($argNodes[1]->isPassedByReference()); + $this->assertFalse($argNodes[1]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.6 + */ + public function it_properly_reads_methods_variadic_arguments() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithVariadicArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('args', $argNodes[0]->getName()); + $this->assertNull($argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[0]->isVariadic()); + } + + /** + * @test + * @requires PHP 5.6 + */ + public function it_properly_reads_methods_typehinted_variadic_arguments() + { + if (defined('HHVM_VERSION_ID')) { + $this->markTestSkipped('HHVM does not support typehints on variadic arguments.'); + } + + $class = new \ReflectionClass('Fixtures\Prophecy\WithTypehintedVariadicArgument'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + $methodNode = $classNode->getMethod('methodWithTypeHintedArgs'); + $argNodes = $methodNode->getArguments(); + + $this->assertCount(1, $argNodes); + + $this->assertEquals('args', $argNodes[0]->getName()); + $this->assertEquals('array', $argNodes[0]->getTypeHint()); + $this->assertFalse($argNodes[0]->isOptional()); + $this->assertFalse($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[0]->isVariadic()); + } + + /** + * @test + */ + public function it_marks_passed_by_reference_args_as_passed_by_reference() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithReferences'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertTrue($classNode->hasMethod('methodWithReferenceArgument')); + + $argNodes = $classNode->getMethod('methodWithReferenceArgument')->getArguments(); + + $this->assertCount(2, $argNodes); + + $this->assertTrue($argNodes[0]->isPassedByReference()); + $this->assertTrue($argNodes[1]->isPassedByReference()); + } + + /** + * @test + */ + public function it_throws_an_exception_if_class_is_final() + { + $class = new \ReflectionClass('Fixtures\Prophecy\FinalClass'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('Prophecy\Exception\Doubler\ClassMirrorException'); + + $mirror->reflect($class, array()); + } + + /** + * @test + */ + public function it_ignores_final_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(0, $classNode->getMethods()); + } + + /** + * @test + */ + public function it_marks_final_methods_as_unextendable() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(1, $classNode->getUnextendableMethods()); + $this->assertFalse($classNode->isExtendable('finalImplementation')); + } + + /** + * @test + */ + public function it_throws_an_exception_if_interface_provided_instead_of_class() + { + $class = new \ReflectionClass('Fixtures\Prophecy\EmptyInterface'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('Prophecy\Exception\InvalidArgumentException'); + + $mirror->reflect($class, array()); + } + + /** + * @test + */ + public function it_reflects_all_interfaces_methods() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(null, array( + new \ReflectionClass('Fixtures\Prophecy\Named'), + new \ReflectionClass('Fixtures\Prophecy\ModifierInterface'), + )); + + $this->assertEquals('stdClass', $classNode->getParentClass()); + $this->assertEquals(array( + 'Prophecy\Doubler\Generator\ReflectionInterface', + 'Fixtures\Prophecy\ModifierInterface', + 'Fixtures\Prophecy\Named', + ), $classNode->getInterfaces()); + + $this->assertCount(3, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('getName')); + $this->assertTrue($classNode->hasMethod('isAbstract')); + $this->assertTrue($classNode->hasMethod('getVisibility')); + } + + /** + * @test + */ + public function it_ignores_virtually_private_methods() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithVirtuallyPrivateMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(2, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('isAbstract')); + $this->assertTrue($classNode->hasMethod('__toString')); + $this->assertFalse($classNode->hasMethod('_getName')); + } + + /** + * @test + */ + public function it_does_not_throw_exception_for_virtually_private_finals() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithFinalVirtuallyPrivateMethod'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(0, $classNode->getMethods()); + } + + /** + * @test + * @requires PHP 7 + */ + public function it_reflects_return_typehints() + { + $class = new \ReflectionClass('Fixtures\Prophecy\WithReturnTypehints'); + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class, array()); + + $this->assertCount(3, $classNode->getMethods()); + $this->assertTrue($classNode->hasMethod('getName')); + $this->assertTrue($classNode->hasMethod('getSelf')); + $this->assertTrue($classNode->hasMethod('getParent')); + + $this->assertEquals('string', $classNode->getMethod('getName')->getReturnType()); + $this->assertEquals('\Fixtures\Prophecy\WithReturnTypehints', $classNode->getMethod('getSelf')->getReturnType()); + $this->assertEquals('\Fixtures\Prophecy\EmptyClass', $classNode->getMethod('getParent')->getReturnType()); + } + + /** + * @test + */ + public function it_throws_an_exception_if_class_provided_in_interfaces_list() + { + $class = new \ReflectionClass('Fixtures\Prophecy\EmptyClass'); + + $mirror = new ClassMirror(); + + $this->setExpectedException('InvalidArgumentException'); + + $mirror->reflect(null, array($class)); + } + + /** + * @test + */ + public function it_throws_an_exception_if_not_reflection_provided_as_interface() + { + $mirror = new ClassMirror(); + + $this->setExpectedException('InvalidArgumentException'); + + $mirror->reflect(null, array(null)); + } + + /** + * @test + */ + public function it_doesnt_use_scalar_typehints() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('ReflectionMethod'), array()); + $method = $classNode->getMethod('export'); + $arguments = $method->getArguments(); + + $this->assertNull($arguments[0]->getTypeHint()); + $this->assertNull($arguments[1]->getTypeHint()); + $this->assertNull($arguments[2]->getTypeHint()); + } + + /** + * @test + */ + public function it_doesnt_fail_to_typehint_nonexistent_FQCN() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('Fixtures\Prophecy\OptionalDepsClass'), array()); + $method = $classNode->getMethod('iHaveAStrangeTypeHintedArg'); + $arguments = $method->getArguments(); + $this->assertEquals('I\Simply\Am\Nonexistent', $arguments[0]->getTypeHint()); + } + + /** + * @test + */ + public function it_doesnt_fail_to_typehint_nonexistent_RQCN() + { + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect(new \ReflectionClass('Fixtures\Prophecy\OptionalDepsClass'), array()); + $method = $classNode->getMethod('iHaveAnEvenStrangerTypeHintedArg'); + $arguments = $method->getArguments(); + $this->assertEquals('I\Simply\Am\Not', $arguments[0]->getTypeHint()); + } + + /** + * @test + */ + function it_changes_argument_names_if_they_are_varying() + { + // Use test doubles in this test, as arguments named ... in the Reflection API can only happen for internal classes + $class = $this->prophesize('ReflectionClass'); + $method = $this->prophesize('ReflectionMethod'); + $parameter = $this->prophesize('ReflectionParameter'); + + $class->getName()->willReturn('Custom\ClassName'); + $class->isInterface()->willReturn(false); + $class->isFinal()->willReturn(false); + $class->getMethods(\ReflectionMethod::IS_PUBLIC)->willReturn(array($method)); + $class->getMethods(\ReflectionMethod::IS_ABSTRACT)->willReturn(array()); + + $method->getParameters()->willReturn(array($parameter)); + $method->getName()->willReturn('methodName'); + $method->isFinal()->willReturn(false); + $method->isProtected()->willReturn(false); + $method->isStatic()->willReturn(false); + $method->returnsReference()->willReturn(false); + + if (version_compare(PHP_VERSION, '7.0', '>=')) { + $method->hasReturnType()->willReturn(false); + } + + $parameter->getName()->willReturn('...'); + $parameter->isDefaultValueAvailable()->willReturn(true); + $parameter->getDefaultValue()->willReturn(null); + $parameter->isPassedByReference()->willReturn(false); + $parameter->getClass()->willReturn($class); + if (version_compare(PHP_VERSION, '5.6', '>=')) { + $parameter->isVariadic()->willReturn(false); + } + + $mirror = new ClassMirror(); + + $classNode = $mirror->reflect($class->reveal(), array()); + + $methodNodes = $classNode->getMethods(); + + $argumentNodes = $methodNodes['methodName']->getArguments(); + $argumentNode = $argumentNodes[0]; + + $this->assertEquals('__dot_dot_dot__', $argumentNode->getName()); + } +} diff --git a/vendor/phpunit/php-code-coverage/.gitattributes b/vendor/phpunit/php-code-coverage/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..461090b7ecca054b69e8e69e0dbc0f5e4ad705bc --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.gitattributes @@ -0,0 +1 @@ +*.php diff=php diff --git a/vendor/phpunit/php-code-coverage/.gitignore b/vendor/phpunit/php-code-coverage/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..603bc9e8614d3b47e2d85b8974cd827e5ed574e2 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.gitignore @@ -0,0 +1,6 @@ +/tests/_files/tmp +/vendor +/composer.lock +/.idea +/.php_cs.cache + diff --git a/vendor/phpunit/php-code-coverage/.php_cs b/vendor/phpunit/php-code-coverage/.php_cs new file mode 100644 index 0000000000000000000000000000000000000000..de5cde18066fb2a3c33294c0053f3faae8a5be44 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.php_cs @@ -0,0 +1,69 @@ +files() + ->in('src') + ->in('tests') + ->exclude('_files') + ->name('*.php'); + +return Symfony\CS\Config\Config::create() + ->setUsingCache(true) + ->level(\Symfony\CS\FixerInterface::NONE_LEVEL) + ->fixers( + array( + 'align_double_arrow', + 'align_equals', + 'braces', + 'concat_with_spaces', + 'duplicate_semicolon', + 'elseif', + 'empty_return', + 'encoding', + 'eof_ending', + 'extra_empty_lines', + 'function_call_space', + 'function_declaration', + 'indentation', + 'join_function', + 'line_after_namespace', + 'linefeed', + 'list_commas', + 'lowercase_constants', + 'lowercase_keywords', + 'method_argument_space', + 'multiple_use', + 'namespace_no_leading_whitespace', + 'no_blank_lines_after_class_opening', + 'no_empty_lines_after_phpdocs', + 'parenthesis', + 'php_closing_tag', + 'phpdoc_indent', + 'phpdoc_no_access', + 'phpdoc_no_empty_return', + 'phpdoc_no_package', + 'phpdoc_params', + 'phpdoc_scalar', + 'phpdoc_separation', + 'phpdoc_to_comment', + 'phpdoc_trim', + 'phpdoc_types', + 'phpdoc_var_without_name', + 'remove_lines_between_uses', + 'return', + 'self_accessor', + 'short_array_syntax', + 'short_tag', + 'single_line_after_imports', + 'single_quote', + 'spaces_before_semicolon', + 'spaces_cast', + 'ternary_spaces', + 'trailing_spaces', + 'trim_array_spaces', + 'unused_use', + 'visibility', + 'whitespacy_lines' + ) + ) + ->finder($finder); + diff --git a/vendor/phpunit/php-code-coverage/.travis.yml b/vendor/phpunit/php-code-coverage/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..e3c29662184d5fe19b07535baeb57783a2042313 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/.travis.yml @@ -0,0 +1,39 @@ +language: php + +php: + - 5.6 + - 7.0 + - 7.0snapshot + - 7.1 + - 7.1snapshot + - master + +env: + matrix: + - DRIVER="xdebug" + - DRIVER="phpdbg" + +matrix: + allow_failures: + - php: master + fast_finish: true + exclude: + - php: 5.6 + env: DRIVER="phpdbg" + +sudo: false + +before_install: + - composer self-update + - composer clear-cache + +install: + - travis_retry composer update --no-interaction --no-ansi --no-progress --no-suggest --optimize-autoloader --prefer-stable + +script: + - if [[ "$DRIVER" = 'phpdbg' ]]; then phpdbg -qrr vendor/bin/phpunit; fi + - if [[ "$DRIVER" = 'xdebug' ]]; then vendor/bin/phpunit; fi + +notifications: + email: false + diff --git a/vendor/phpunit/php-code-coverage/CONTRIBUTING.md b/vendor/phpunit/php-code-coverage/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..76a434585698f61983155a4a6e5b5943ed47bdce --- /dev/null +++ b/vendor/phpunit/php-code-coverage/CONTRIBUTING.md @@ -0,0 +1 @@ +Please refer to [https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/CONTRIBUTING.md) for details on how to contribute to this project. diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md new file mode 100644 index 0000000000000000000000000000000000000000..353b6f650050053e364ca1bc6da2f5953175bd63 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-2.2.md @@ -0,0 +1,56 @@ +# Changes in PHP_CodeCoverage 2.2 + +All notable changes of the PHP_CodeCoverage 2.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [2.2.4] - 2015-10-06 + +### Fixed + +* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag + +## [2.2.3] - 2015-09-14 + +### Fixed + +* Fixed [#368](https://github.com/sebastianbergmann/php-code-coverage/pull/368): Blacklists and whitelists are not merged when merging data sets +* Fixed [#370](https://github.com/sebastianbergmann/php-code-coverage/issues/370): Confusing statistics for source file that declares a class without methods +* Fixed [#372](https://github.com/sebastianbergmann/php-code-coverage/pull/372): Nested classes and functions are not handled correctly +* Fixed [#382](https://github.com/sebastianbergmann/php-code-coverage/issues/382): Crap4J report generates incorrect XML logfile + +## [2.2.2] - 2015-08-04 + +### Added + +* Reintroduced the `PHP_CodeCoverage_Driver_HHVM` driver as an extension of `PHP_CodeCoverage_Driver_Xdebug` that does not use `xdebug_start_code_coverage()` with options not supported by HHVM + +### Changed + +* Bumped required version of `sebastian/environment` to 1.3.2 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) + +## [2.2.1] - 2015-08-02 + +### Changed + +* Bumped required version of `sebastian/environment` to 1.3.1 for [#365](https://github.com/sebastianbergmann/php-code-coverage/issues/365) + +## [2.2.0] - 2015-08-01 + +### Added + +* Added a driver for PHPDBG (requires PHP 7) +* Added `PHP_CodeCoverage::setDisableIgnoredLines()` to disable the ignoring of lines using annotations such as `@codeCoverageIgnore` + +### Changed + +* Annotating a method with `@deprecated` now has the same effect as annotating it with `@codeCoverageIgnore` + +### Removed + +* The dedicated driver for HHVM, `PHP_CodeCoverage_Driver_HHVM` has been removed + +[2.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.3...2.2.4 +[2.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.2...2.2.3 +[2.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.1...2.2.2 +[2.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2.0...2.2.1 +[2.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.1...2.2.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md new file mode 100644 index 0000000000000000000000000000000000000000..a39fa8d47ea9dda4696591985e21fe7ebca72332 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.0.md @@ -0,0 +1,31 @@ +# Changes in PHP_CodeCoverage 3.0 + +All notable changes of the PHP_CodeCoverage 3.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.0.2] - 2015-11-12 + +### Changed + +* It is now optional that `@deprecated` code is ignored + +## [3.0.1] - 2015-10-06 + +### Fixed + +* Fixed [#391](https://github.com/sebastianbergmann/php-code-coverage/pull/391): Missing `` tag + +## [3.0.0] - 2015-10-02 + +### Changed + +* It is now mandatory to configure a whitelist + +### Removed + +* The blacklist functionality has been removed +* PHP_CodeCoverage is no longer supported on PHP 5.3, PHP 5.4, and PHP 5.5 + +[3.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.1...3.0.2 +[3.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0.0...3.0.1 +[3.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/2.2...3.0.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md new file mode 100644 index 0000000000000000000000000000000000000000..f7a0de9040e65fd90e44b9613a60c4b77076b694 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.1.md @@ -0,0 +1,30 @@ +# Changes in PHP_CodeCoverage 3.1 + +All notable changes of the PHP_CodeCoverage 3.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.1.1] - 2016-02-04 + +### Changed + +* Allow version 2.0.x of `sebastian/version` dependency + +## [3.1.0] - 2016-01-11 + +### Added + +* Implemented [#234](https://github.com/sebastianbergmann/php-code-coverage/issues/234): Optionally raise an exception when a specified unit of code is not executed + +### Changed + +* The Clover XML report now contains cyclomatic complexity information +* The Clover XML report now contains method visibility information +* Cleanup and refactoring of various areas of code +* Added missing test cases + +### Removed + +* The functionality controlled by the `mapTestClassNameToCoveredClassName` setting has been removed + +[3.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1.0...3.1.1 +[3.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.0...3.1.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md new file mode 100644 index 0000000000000000000000000000000000000000..34c65cf49e66e0a56a1db5d4346c1d09152e6005 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.2.md @@ -0,0 +1,23 @@ +# Changes in PHP_CodeCoverage 3.2 + +All notable changes of the PHP_CodeCoverage 3.2 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.2.1] - 2016-02-18 + +### Changed + +* Updated dependency information in `composer.json` + +## [3.2.0] - 2016-02-13 + +### Added + +* Added optional check for missing `@covers` annotation when the usage of `@covers` annotations is forced + +### Changed + +* Improved `PHP_CodeCoverage_UnintentionallyCoveredCodeException` message + +[3.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2.0...3.2.1 +[3.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.1...3.2.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md new file mode 100644 index 0000000000000000000000000000000000000000..2cf15229e8e47a127e9c3522e03661a1f3e5ed71 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-3.3.md @@ -0,0 +1,33 @@ +# Changes in PHP_CodeCoverage 3.3 + +All notable changes of the PHP_CodeCoverage 3.3 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [3.3.3] - 2016-MM-DD + +### Fixed + +* Fixed [#438](https://github.com/sebastianbergmann/php-code-coverage/issues/438): Wrong base directory for Clover reports + +## [3.3.2] - 2016-05-25 + +### Changed + +* The constructor of `PHP_CodeCoverage_Report_Text` now has default values for its parameters + +## [3.3.1] - 2016-04-08 + +### Fixed + +* Fixed handling of lines that contain `declare` statements + +## [3.3.0] - 2016-03-03 + +### Added + +* Added support for whitelisting classes for the unintentionally covered code unit check + +[3.3.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.2...3.3.3 +[3.3.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.1...3.3.2 +[3.3.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3.0...3.3.1 +[3.3.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.2...3.3.0 + diff --git a/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md new file mode 100644 index 0000000000000000000000000000000000000000..c5ef0e3c7f755637678c9704f491a09d5dc2c610 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/ChangeLog-4.0.md @@ -0,0 +1,62 @@ +# Changes in PHP_CodeCoverage 4.0 + +All notable changes of the PHP_CodeCoverage 4.0 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [4.0.7] - 2017-03-01 + +### Changed + +* Cleaned up requirements in `composer.json` + +## [4.0.6] - 2017-02-23 + +### Changed + +* Added support for `phpunit/php-token-stream` 2.0 +* Updated HTML report assets + +## [4.0.5] - 2017-01-20 + +### Fixed + +* Fixed formatting of executed lines percentage for classes in file view + +## [4.0.4] - 2016-12-20 + +### Changed + +* Implemented [#432](https://github.com/sebastianbergmann/php-code-coverage/issues/432): Change how files with no executable lines are displayed in the HTML report + +## [4.0.3] - 2016-11-28 + +### Changed + +* The check for unintentionally covered code is no longer performed for `@medium` and `@large` tests + +## [4.0.2] - 2016-11-01 + +### Fixed + +* Fixed [#440](https://github.com/sebastianbergmann/php-code-coverage/pull/440): Dashboard charts not showing tooltips for data points + +## [4.0.1] - 2016-07-26 + +### Fixed + +* Fixed [#458](https://github.com/sebastianbergmann/php-code-coverage/pull/458): XML report does not know about warning status + +## [4.0.0] - 2016-06-03 + +### Changed + +* This component now uses namespaces + +[4.0.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.6...4.0.7 +[4.0.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.5...4.0.6 +[4.0.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.4...4.0.5 +[4.0.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.3...4.0.4 +[4.0.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.2...4.0.3 +[4.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.1...4.0.2 +[4.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/4.0.0...4.0.1 +[4.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/3.3...4.0.0 + diff --git a/vendor/phpunit/php-code-coverage/LICENSE b/vendor/phpunit/php-code-coverage/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fcfa37e804926c49e7ceb5bdd1e710de75b4e37f --- /dev/null +++ b/vendor/phpunit/php-code-coverage/LICENSE @@ -0,0 +1,33 @@ +PHP_CodeCoverage + +Copyright (c) 2009-2015, Sebastian Bergmann . +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. + + * Neither the name of Sebastian Bergmann nor the names of his + 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 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. diff --git a/vendor/phpunit/php-code-coverage/README.md b/vendor/phpunit/php-code-coverage/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c01384b8b88ff76e408487e3f6e6c4f93f812788 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/README.md @@ -0,0 +1,51 @@ +[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage) +[![Build Status](https://travis-ci.org/sebastianbergmann/php-code-coverage.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-code-coverage) + +# PHP_CodeCoverage + +**PHP_CodeCoverage** is a library that provides collection, processing, and rendering functionality for PHP code coverage information. + +## Requirements + +PHP 5.6 is required but using the latest version of PHP is highly recommended. + +### PHP 5 + +[Xdebug](http://xdebug.org/) is the only source of raw code coverage data supported for PHP 5. Version 2.2.1 of Xdebug is required but using the latest version is highly recommended. + +### PHP 7 + +Version 2.4.0 (or later) of [Xdebug](http://xdebug.org/) as well as [phpdbg](http://phpdbg.com/docs) are supported sources of raw code coverage data for PHP 7. + +### HHVM + +A version of HHVM that implements the Xdebug API for code coverage (`xdebug_*_code_coverage()`) is required. + +## Installation + +You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): + + composer require phpunit/php-code-coverage + +If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: + + composer require --dev phpunit/php-code-coverage + +## Using the PHP_CodeCoverage API + +```php +start(''); + +// ... + +$coverage->stop(); + +$writer = new \SebastianBergmann\CodeCoverage\Report\Clover; +$writer->process($coverage, '/tmp/clover.xml'); + +$writer = new \SebastianBergmann\CodeCoverage\Report\Html\Facade; +$writer->process($coverage, '/tmp/code-coverage-report'); +``` + diff --git a/vendor/phpunit/php-code-coverage/build.xml b/vendor/phpunit/php-code-coverage/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..d8168c2d856fa2701d704611bc94875a42aeaa84 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/build.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/composer.json b/vendor/phpunit/php-code-coverage/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..7ca434b29eb1771d296b3eb4c691fdd542d1e88b --- /dev/null +++ b/vendor/phpunit/php-code-coverage/composer.json @@ -0,0 +1,51 @@ +{ + "name": "phpunit/php-code-coverage", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "type": "library", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "irc": "irc://irc.freenode.net/phpunit" + }, + "require": { + "php": "^5.6 || ^7.0", + "ext-dom": "*", + "ext-xmlwriter": "*", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "phpunit/php-text-template": "^1.2", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7", + "ext-xdebug": "^2.1.4" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + } +} diff --git a/vendor/phpunit/php-code-coverage/phpunit.xml b/vendor/phpunit/php-code-coverage/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..55822f0cf2020804d0b1338d2f08bfdf41d9f8c8 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/phpunit.xml @@ -0,0 +1,21 @@ + + + + tests/tests + + + + + src + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php new file mode 100644 index 0000000000000000000000000000000000000000..35dab3d61b73996cc6bd0958956e432b0666e0bf --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php @@ -0,0 +1,1107 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +use SebastianBergmann\CodeCoverage\Driver\Driver; +use SebastianBergmann\CodeCoverage\Driver\Xdebug; +use SebastianBergmann\CodeCoverage\Driver\HHVM; +use SebastianBergmann\CodeCoverage\Driver\PHPDBG; +use SebastianBergmann\CodeCoverage\Node\Builder; +use SebastianBergmann\CodeCoverage\Node\Directory; +use SebastianBergmann\CodeUnitReverseLookup\Wizard; +use SebastianBergmann\Environment\Runtime; + +/** + * Provides collection functionality for PHP code coverage information. + */ +class CodeCoverage +{ + /** + * @var Driver + */ + private $driver; + + /** + * @var Filter + */ + private $filter; + + /** + * @var Wizard + */ + private $wizard; + + /** + * @var bool + */ + private $cacheTokens = false; + + /** + * @var bool + */ + private $checkForUnintentionallyCoveredCode = false; + + /** + * @var bool + */ + private $forceCoversAnnotation = false; + + /** + * @var bool + */ + private $checkForUnexecutedCoveredCode = false; + + /** + * @var bool + */ + private $checkForMissingCoversAnnotation = false; + + /** + * @var bool + */ + private $addUncoveredFilesFromWhitelist = true; + + /** + * @var bool + */ + private $processUncoveredFilesFromWhitelist = false; + + /** + * @var bool + */ + private $ignoreDeprecatedCode = false; + + /** + * @var mixed + */ + private $currentId; + + /** + * Code coverage data. + * + * @var array + */ + private $data = []; + + /** + * @var array + */ + private $ignoredLines = []; + + /** + * @var bool + */ + private $disableIgnoredLines = false; + + /** + * Test data. + * + * @var array + */ + private $tests = []; + + /** + * @var string[] + */ + private $unintentionallyCoveredSubclassesWhitelist = []; + + /** + * Determine if the data has been initialized or not + * + * @var bool + */ + private $isInitialized = false; + + /** + * Determine whether we need to check for dead and unused code on each test + * + * @var bool + */ + private $shouldCheckForDeadAndUnused = true; + + /** + * Constructor. + * + * @param Driver $driver + * @param Filter $filter + * + * @throws RuntimeException + */ + public function __construct(Driver $driver = null, Filter $filter = null) + { + if ($driver === null) { + $driver = $this->selectDriver(); + } + + if ($filter === null) { + $filter = new Filter; + } + + $this->driver = $driver; + $this->filter = $filter; + + $this->wizard = new Wizard; + } + + /** + * Returns the code coverage information as a graph of node objects. + * + * @return Directory + */ + public function getReport() + { + $builder = new Builder; + + return $builder->build($this); + } + + /** + * Clears collected code coverage data. + */ + public function clear() + { + $this->isInitialized = false; + $this->currentId = null; + $this->data = []; + $this->tests = []; + } + + /** + * Returns the filter object used. + * + * @return Filter + */ + public function filter() + { + return $this->filter; + } + + /** + * Returns the collected code coverage data. + * Set $raw = true to bypass all filters. + * + * @param bool $raw + * + * @return array + */ + public function getData($raw = false) + { + if (!$raw && $this->addUncoveredFilesFromWhitelist) { + $this->addUncoveredFilesFromWhitelist(); + } + + return $this->data; + } + + /** + * Sets the coverage data. + * + * @param array $data + */ + public function setData(array $data) + { + $this->data = $data; + } + + /** + * Returns the test data. + * + * @return array + */ + public function getTests() + { + return $this->tests; + } + + /** + * Sets the test data. + * + * @param array $tests + */ + public function setTests(array $tests) + { + $this->tests = $tests; + } + + /** + * Start collection of code coverage information. + * + * @param mixed $id + * @param bool $clear + * + * @throws InvalidArgumentException + */ + public function start($id, $clear = false) + { + if (!is_bool($clear)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + if ($clear) { + $this->clear(); + } + + if ($this->isInitialized === false) { + $this->initializeData(); + } + + $this->currentId = $id; + + $this->driver->start($this->shouldCheckForDeadAndUnused); + } + + /** + * Stop collection of code coverage information. + * + * @param bool $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @return array + * + * @throws InvalidArgumentException + */ + public function stop($append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + { + if (!is_bool($append)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) { + throw InvalidArgumentException::create( + 2, + 'array or false' + ); + } + + $data = $this->driver->stop(); + $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed); + + $this->currentId = null; + + return $data; + } + + /** + * Appends code coverage data. + * + * @param array $data + * @param mixed $id + * @param bool $append + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws RuntimeException + */ + public function append(array $data, $id = null, $append = true, $linesToBeCovered = [], array $linesToBeUsed = []) + { + if ($id === null) { + $id = $this->currentId; + } + + if ($id === null) { + throw new RuntimeException; + } + + $this->applyListsFilter($data); + $this->applyIgnoredLinesFilter($data); + $this->initializeFilesThatAreSeenTheFirstTime($data); + + if (!$append) { + return; + } + + if ($id != 'UNCOVERED_FILES_FROM_WHITELIST') { + $this->applyCoversAnnotationFilter( + $data, + $linesToBeCovered, + $linesToBeUsed + ); + } + + if (empty($data)) { + return; + } + + $size = 'unknown'; + $status = null; + + if ($id instanceof \PHPUnit_Framework_TestCase) { + $_size = $id->getSize(); + + if ($_size == \PHPUnit_Util_Test::SMALL) { + $size = 'small'; + } elseif ($_size == \PHPUnit_Util_Test::MEDIUM) { + $size = 'medium'; + } elseif ($_size == \PHPUnit_Util_Test::LARGE) { + $size = 'large'; + } + + $status = $id->getStatus(); + $id = get_class($id) . '::' . $id->getName(); + } elseif ($id instanceof \PHPUnit_Extensions_PhptTestCase) { + $size = 'large'; + $id = $id->getName(); + } + + $this->tests[$id] = ['size' => $size, 'status' => $status]; + + foreach ($data as $file => $lines) { + if (!$this->filter->isFile($file)) { + continue; + } + + foreach ($lines as $k => $v) { + if ($v == Driver::LINE_EXECUTED) { + if (empty($this->data[$file][$k]) || !in_array($id, $this->data[$file][$k])) { + $this->data[$file][$k][] = $id; + } + } + } + } + } + + /** + * Merges the data from another instance. + * + * @param CodeCoverage $that + */ + public function merge(CodeCoverage $that) + { + $this->filter->setWhitelistedFiles( + array_merge($this->filter->getWhitelistedFiles(), $that->filter()->getWhitelistedFiles()) + ); + + foreach ($that->data as $file => $lines) { + if (!isset($this->data[$file])) { + if (!$this->filter->isFiltered($file)) { + $this->data[$file] = $lines; + } + + continue; + } + + foreach ($lines as $line => $data) { + if ($data !== null) { + if (!isset($this->data[$file][$line])) { + $this->data[$file][$line] = $data; + } else { + $this->data[$file][$line] = array_unique( + array_merge($this->data[$file][$line], $data) + ); + } + } + } + } + + $this->tests = array_merge($this->tests, $that->getTests()); + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCacheTokens($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->cacheTokens = $flag; + } + + /** + * @return bool + */ + public function getCacheTokens() + { + return $this->cacheTokens; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForUnintentionallyCoveredCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForUnintentionallyCoveredCode = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setForceCoversAnnotation($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->forceCoversAnnotation = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForMissingCoversAnnotation($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForMissingCoversAnnotation = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setCheckForUnexecutedCoveredCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->checkForUnexecutedCoveredCode = $flag; + } + + /** + * @deprecated + * + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setMapTestClassNameToCoveredClassName($flag) + { + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setAddUncoveredFilesFromWhitelist($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->addUncoveredFilesFromWhitelist = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setProcessUncoveredFilesFromWhitelist($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->processUncoveredFilesFromWhitelist = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setDisableIgnoredLines($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->disableIgnoredLines = $flag; + } + + /** + * @param bool $flag + * + * @throws InvalidArgumentException + */ + public function setIgnoreDeprecatedCode($flag) + { + if (!is_bool($flag)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + $this->ignoreDeprecatedCode = $flag; + } + + /** + * @param array $whitelist + */ + public function setUnintentionallyCoveredSubclassesWhitelist(array $whitelist) + { + $this->unintentionallyCoveredSubclassesWhitelist = $whitelist; + } + + /** + * Applies the @covers annotation filtering. + * + * @param array $data + * @param mixed $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws MissingCoversAnnotationException + * @throws UnintentionallyCoveredCodeException + */ + private function applyCoversAnnotationFilter(array &$data, $linesToBeCovered, array $linesToBeUsed) + { + if ($linesToBeCovered === false || + ($this->forceCoversAnnotation && empty($linesToBeCovered))) { + if ($this->checkForMissingCoversAnnotation) { + throw new MissingCoversAnnotationException; + } + + $data = []; + + return; + } + + if (empty($linesToBeCovered)) { + return; + } + + if ($this->checkForUnintentionallyCoveredCode && + (!$this->currentId instanceof \PHPUnit_Framework_TestCase || + (!$this->currentId->isMedium() && !$this->currentId->isLarge()))) { + $this->performUnintentionallyCoveredCodeCheck( + $data, + $linesToBeCovered, + $linesToBeUsed + ); + } + + if ($this->checkForUnexecutedCoveredCode) { + $this->performUnexecutedCoveredCodeCheck($data, $linesToBeCovered, $linesToBeUsed); + } + + $data = array_intersect_key($data, $linesToBeCovered); + + foreach (array_keys($data) as $filename) { + $_linesToBeCovered = array_flip($linesToBeCovered[$filename]); + + $data[$filename] = array_intersect_key( + $data[$filename], + $_linesToBeCovered + ); + } + } + + /** + * Applies the whitelist filtering. + * + * @param array $data + */ + private function applyListsFilter(array &$data) + { + foreach (array_keys($data) as $filename) { + if ($this->filter->isFiltered($filename)) { + unset($data[$filename]); + } + } + } + + /** + * Applies the "ignored lines" filtering. + * + * @param array $data + */ + private function applyIgnoredLinesFilter(array &$data) + { + foreach (array_keys($data) as $filename) { + if (!$this->filter->isFile($filename)) { + continue; + } + + foreach ($this->getLinesToBeIgnored($filename) as $line) { + unset($data[$filename][$line]); + } + } + } + + /** + * @param array $data + */ + private function initializeFilesThatAreSeenTheFirstTime(array $data) + { + foreach ($data as $file => $lines) { + if ($this->filter->isFile($file) && !isset($this->data[$file])) { + $this->data[$file] = []; + + foreach ($lines as $k => $v) { + $this->data[$file][$k] = $v == -2 ? null : []; + } + } + } + } + + /** + * Processes whitelisted files that are not covered. + */ + private function addUncoveredFilesFromWhitelist() + { + $data = []; + $uncoveredFiles = array_diff( + $this->filter->getWhitelist(), + array_keys($this->data) + ); + + foreach ($uncoveredFiles as $uncoveredFile) { + if (!file_exists($uncoveredFile)) { + continue; + } + + if (!$this->processUncoveredFilesFromWhitelist) { + $data[$uncoveredFile] = []; + + $lines = count(file($uncoveredFile)); + + for ($i = 1; $i <= $lines; $i++) { + $data[$uncoveredFile][$i] = Driver::LINE_NOT_EXECUTED; + } + } + } + + $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); + } + + /** + * Returns the lines of a source file that should be ignored. + * + * @param string $filename + * + * @return array + * + * @throws InvalidArgumentException + */ + private function getLinesToBeIgnored($filename) + { + if (!is_string($filename)) { + throw InvalidArgumentException::create( + 1, + 'string' + ); + } + + if (!isset($this->ignoredLines[$filename])) { + $this->ignoredLines[$filename] = []; + + if ($this->disableIgnoredLines) { + return $this->ignoredLines[$filename]; + } + + $ignore = false; + $stop = false; + $lines = file($filename); + $numLines = count($lines); + + foreach ($lines as $index => $line) { + if (!trim($line)) { + $this->ignoredLines[$filename][] = $index + 1; + } + } + + if ($this->cacheTokens) { + $tokens = \PHP_Token_Stream_CachingFactory::get($filename); + } else { + $tokens = new \PHP_Token_Stream($filename); + } + + $classes = array_merge($tokens->getClasses(), $tokens->getTraits()); + $tokens = $tokens->tokens(); + + foreach ($tokens as $token) { + switch (get_class($token)) { + case 'PHP_Token_COMMENT': + case 'PHP_Token_DOC_COMMENT': + $_token = trim($token); + $_line = trim($lines[$token->getLine() - 1]); + + if ($_token == '// @codeCoverageIgnore' || + $_token == '//@codeCoverageIgnore') { + $ignore = true; + $stop = true; + } elseif ($_token == '// @codeCoverageIgnoreStart' || + $_token == '//@codeCoverageIgnoreStart') { + $ignore = true; + } elseif ($_token == '// @codeCoverageIgnoreEnd' || + $_token == '//@codeCoverageIgnoreEnd') { + $stop = true; + } + + if (!$ignore) { + $start = $token->getLine(); + $end = $start + substr_count($token, "\n"); + + // Do not ignore the first line when there is a token + // before the comment + if (0 !== strpos($_token, $_line)) { + $start++; + } + + for ($i = $start; $i < $end; $i++) { + $this->ignoredLines[$filename][] = $i; + } + + // A DOC_COMMENT token or a COMMENT token starting with "/*" + // does not contain the final \n character in its text + if (isset($lines[$i-1]) && 0 === strpos($_token, '/*') && '*/' === substr(trim($lines[$i-1]), -2)) { + $this->ignoredLines[$filename][] = $i; + } + } + break; + + case 'PHP_Token_INTERFACE': + case 'PHP_Token_TRAIT': + case 'PHP_Token_CLASS': + case 'PHP_Token_FUNCTION': + /* @var \PHP_Token_Interface $token */ + + $docblock = $token->getDocblock(); + + $this->ignoredLines[$filename][] = $token->getLine(); + + if (strpos($docblock, '@codeCoverageIgnore') || ($this->ignoreDeprecatedCode && strpos($docblock, '@deprecated'))) { + $endLine = $token->getEndLine(); + + for ($i = $token->getLine(); $i <= $endLine; $i++) { + $this->ignoredLines[$filename][] = $i; + } + } elseif ($token instanceof \PHP_Token_INTERFACE || + $token instanceof \PHP_Token_TRAIT || + $token instanceof \PHP_Token_CLASS) { + if (empty($classes[$token->getName()]['methods'])) { + for ($i = $token->getLine(); + $i <= $token->getEndLine(); + $i++) { + $this->ignoredLines[$filename][] = $i; + } + } else { + $firstMethod = array_shift( + $classes[$token->getName()]['methods'] + ); + + do { + $lastMethod = array_pop( + $classes[$token->getName()]['methods'] + ); + } while ($lastMethod !== null && + substr($lastMethod['signature'], 0, 18) == 'anonymous function'); + + if ($lastMethod === null) { + $lastMethod = $firstMethod; + } + + for ($i = $token->getLine(); + $i < $firstMethod['startLine']; + $i++) { + $this->ignoredLines[$filename][] = $i; + } + + for ($i = $token->getEndLine(); + $i > $lastMethod['endLine']; + $i--) { + $this->ignoredLines[$filename][] = $i; + } + } + } + break; + + case 'PHP_Token_NAMESPACE': + $this->ignoredLines[$filename][] = $token->getEndLine(); + + // Intentional fallthrough + case 'PHP_Token_DECLARE': + case 'PHP_Token_OPEN_TAG': + case 'PHP_Token_CLOSE_TAG': + case 'PHP_Token_USE': + $this->ignoredLines[$filename][] = $token->getLine(); + break; + } + + if ($ignore) { + $this->ignoredLines[$filename][] = $token->getLine(); + + if ($stop) { + $ignore = false; + $stop = false; + } + } + } + + $this->ignoredLines[$filename][] = $numLines + 1; + + $this->ignoredLines[$filename] = array_unique( + $this->ignoredLines[$filename] + ); + + sort($this->ignoredLines[$filename]); + } + + return $this->ignoredLines[$filename]; + } + + /** + * @param array $data + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws UnintentionallyCoveredCodeException + */ + private function performUnintentionallyCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) + { + $allowedLines = $this->getAllowedLines( + $linesToBeCovered, + $linesToBeUsed + ); + + $unintentionallyCoveredUnits = []; + + foreach ($data as $file => $_data) { + foreach ($_data as $line => $flag) { + if ($flag == 1 && !isset($allowedLines[$file][$line])) { + $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line); + } + } + } + + $unintentionallyCoveredUnits = $this->processUnintentionallyCoveredUnits($unintentionallyCoveredUnits); + + if (!empty($unintentionallyCoveredUnits)) { + throw new UnintentionallyCoveredCodeException( + $unintentionallyCoveredUnits + ); + } + } + + /** + * @param array $data + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @throws CoveredCodeNotExecutedException + */ + private function performUnexecutedCoveredCodeCheck(array &$data, array $linesToBeCovered, array $linesToBeUsed) + { + $expectedLines = $this->getAllowedLines( + $linesToBeCovered, + $linesToBeUsed + ); + + foreach ($data as $file => $_data) { + foreach (array_keys($_data) as $line) { + if (!isset($expectedLines[$file][$line])) { + continue; + } + + unset($expectedLines[$file][$line]); + } + } + + $message = ''; + + foreach ($expectedLines as $file => $lines) { + if (empty($lines)) { + continue; + } + + foreach (array_keys($lines) as $line) { + $message .= sprintf('- %s:%d' . PHP_EOL, $file, $line); + } + } + + if (!empty($message)) { + throw new CoveredCodeNotExecutedException($message); + } + } + + /** + * @param array $linesToBeCovered + * @param array $linesToBeUsed + * + * @return array + */ + private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed) + { + $allowedLines = []; + + foreach (array_keys($linesToBeCovered) as $file) { + if (!isset($allowedLines[$file])) { + $allowedLines[$file] = []; + } + + $allowedLines[$file] = array_merge( + $allowedLines[$file], + $linesToBeCovered[$file] + ); + } + + foreach (array_keys($linesToBeUsed) as $file) { + if (!isset($allowedLines[$file])) { + $allowedLines[$file] = []; + } + + $allowedLines[$file] = array_merge( + $allowedLines[$file], + $linesToBeUsed[$file] + ); + } + + foreach (array_keys($allowedLines) as $file) { + $allowedLines[$file] = array_flip( + array_unique($allowedLines[$file]) + ); + } + + return $allowedLines; + } + + /** + * @return Driver + * + * @throws RuntimeException + */ + private function selectDriver() + { + $runtime = new Runtime; + + if (!$runtime->canCollectCodeCoverage()) { + throw new RuntimeException('No code coverage driver available'); + } + + if ($runtime->isHHVM()) { + return new HHVM; + } elseif ($runtime->isPHPDBG()) { + return new PHPDBG; + } else { + return new Xdebug; + } + } + + /** + * @param array $unintentionallyCoveredUnits + * + * @return array + */ + private function processUnintentionallyCoveredUnits(array $unintentionallyCoveredUnits) + { + $unintentionallyCoveredUnits = array_unique($unintentionallyCoveredUnits); + sort($unintentionallyCoveredUnits); + + foreach (array_keys($unintentionallyCoveredUnits) as $k => $v) { + $unit = explode('::', $unintentionallyCoveredUnits[$k]); + + if (count($unit) != 2) { + continue; + } + + $class = new \ReflectionClass($unit[0]); + + foreach ($this->unintentionallyCoveredSubclassesWhitelist as $whitelisted) { + if ($class->isSubclassOf($whitelisted)) { + unset($unintentionallyCoveredUnits[$k]); + break; + } + } + } + + return array_values($unintentionallyCoveredUnits); + } + + /** + * If we are processing uncovered files from whitelist, + * we can initialize the data before we start to speed up the tests + */ + protected function initializeData() + { + $this->isInitialized = true; + + if ($this->processUncoveredFilesFromWhitelist) { + $this->shouldCheckForDeadAndUnused = false; + + $this->driver->start(true); + + foreach ($this->filter->getWhitelist() as $file) { + if ($this->filter->isFile($file)) { + include_once($file); + } + } + + $data = []; + $coverage = $this->driver->stop(); + + foreach ($coverage as $file => $fileCoverage) { + if ($this->filter->isFiltered($file)) { + continue; + } + + foreach (array_keys($fileCoverage) as $key) { + if ($fileCoverage[$key] == Driver::LINE_EXECUTED) { + $fileCoverage[$key] = Driver::LINE_NOT_EXECUTED; + } + } + + $data[$file] = $fileCoverage; + } + + $this->append($data, 'UNCOVERED_FILES_FROM_WHITELIST'); + } + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php new file mode 100644 index 0000000000000000000000000000000000000000..bdd1b9794b72f472d602700d6f2e9a433b9ab26d --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +/** + * Interface for code coverage drivers. + */ +interface Driver +{ + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_EXECUTED = 1; + + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_NOT_EXECUTED = -1; + + /** + * @var int + * + * @see http://xdebug.org/docs/code_coverage + */ + const LINE_NOT_EXECUTABLE = -2; + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true); + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop(); +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php new file mode 100644 index 0000000000000000000000000000000000000000..b35ea81bbc44e3a9251d5ef7f91f0732377d9860 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/HHVM.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +/** + * Driver for HHVM's code coverage functionality. + * + * @codeCoverageIgnore + */ +class HHVM extends Xdebug +{ + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + xdebug_start_code_coverage(); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php new file mode 100644 index 0000000000000000000000000000000000000000..86cc8444c28ea68ca6624acce0d93c7dc79b9452 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php @@ -0,0 +1,111 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Driver for PHPDBG's code coverage functionality. + * + * @codeCoverageIgnore + */ +class PHPDBG implements Driver +{ + /** + * Constructor. + */ + public function __construct() + { + if (PHP_SAPI !== 'phpdbg') { + throw new RuntimeException( + 'This driver requires the PHPDBG SAPI' + ); + } + + if (!function_exists('phpdbg_start_oplog')) { + throw new RuntimeException( + 'This build of PHPDBG does not support code coverage' + ); + } + } + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + phpdbg_start_oplog(); + } + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop() + { + static $fetchedLines = []; + + $dbgData = phpdbg_end_oplog(); + + if ($fetchedLines == []) { + $sourceLines = phpdbg_get_executable(); + } else { + $newFiles = array_diff( + get_included_files(), + array_keys($fetchedLines) + ); + + if ($newFiles) { + $sourceLines = phpdbg_get_executable( + ['files' => $newFiles] + ); + } else { + $sourceLines = []; + } + } + + foreach ($sourceLines as $file => $lines) { + foreach ($lines as $lineNo => $numExecuted) { + $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED; + } + } + + $fetchedLines = array_merge($fetchedLines, $sourceLines); + + return $this->detectExecutedLines($fetchedLines, $dbgData); + } + + /** + * Convert phpdbg based data into the format CodeCoverage expects + * + * @param array $sourceLines + * @param array $dbgData + * + * @return array + */ + private function detectExecutedLines(array $sourceLines, array $dbgData) + { + foreach ($dbgData as $file => $coveredLines) { + foreach ($coveredLines as $lineNo => $numExecuted) { + // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown. + // make sure we only mark lines executed which are actually executable. + if (isset($sourceLines[$file][$lineNo])) { + $sourceLines[$file][$lineNo] = self::LINE_EXECUTED; + } + } + } + + return $sourceLines; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php new file mode 100644 index 0000000000000000000000000000000000000000..30099e0570be68be58e1f661baa3a5108dad2fdf --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php @@ -0,0 +1,117 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Driver; + +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Driver for Xdebug's code coverage functionality. + * + * @codeCoverageIgnore + */ +class Xdebug implements Driver +{ + /** + * Cache the number of lines for each file + * + * @var array + */ + private $cacheNumLines = []; + + /** + * Constructor. + */ + public function __construct() + { + if (!extension_loaded('xdebug')) { + throw new RuntimeException('This driver requires Xdebug'); + } + + if (version_compare(phpversion('xdebug'), '2.2.1', '>=') && + !ini_get('xdebug.coverage_enable')) { + throw new RuntimeException( + 'xdebug.coverage_enable=On has to be set in php.ini' + ); + } + } + + /** + * Start collection of code coverage information. + * + * @param bool $determineUnusedAndDead + */ + public function start($determineUnusedAndDead = true) + { + if ($determineUnusedAndDead) { + xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE); + } else { + xdebug_start_code_coverage(); + } + } + + /** + * Stop collection of code coverage information. + * + * @return array + */ + public function stop() + { + $data = xdebug_get_code_coverage(); + xdebug_stop_code_coverage(); + + return $this->cleanup($data); + } + + /** + * @param array $data + * + * @return array + */ + private function cleanup(array $data) + { + foreach (array_keys($data) as $file) { + unset($data[$file][0]); + + if (strpos($file, 'xdebug://debug-eval') !== 0 && file_exists($file)) { + $numLines = $this->getNumberOfLinesInFile($file); + + foreach (array_keys($data[$file]) as $line) { + if ($line > $numLines) { + unset($data[$file][$line]); + } + } + } + } + + return $data; + } + + /** + * @param string $file + * + * @return int + */ + private function getNumberOfLinesInFile($file) + { + if (!isset($this->cacheNumLines[$file])) { + $buffer = file_get_contents($file); + $lines = substr_count($buffer, "\n"); + + if (substr($buffer, -1) !== "\n") { + $lines++; + } + + $this->cacheNumLines[$file] = $lines; + } + + return $this->cacheNumLines[$file]; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php new file mode 100644 index 0000000000000000000000000000000000000000..ca28a231b177db2364c9716560f2490a31ba8b2e --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when covered code is not executed. + */ +class CoveredCodeNotExecutedException extends RuntimeException +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Exception.php b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php new file mode 100644 index 0000000000000000000000000000000000000000..a3ba4c4c6dc6381f5c31af8507df42c309075638 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception interface for php-code-coverage component. + */ +interface Exception +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php new file mode 100644 index 0000000000000000000000000000000000000000..1733f6cb5a76ca58a3077f31f80d7c194a3ecf1a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +class InvalidArgumentException extends \InvalidArgumentException implements Exception +{ + /** + * @param int $argument + * @param string $type + * @param mixed $value + * + * @return InvalidArgumentException + */ + public static function create($argument, $type, $value = null) + { + $stack = debug_backtrace(0); + + return new self( + sprintf( + 'Argument #%d%sof %s::%s() must be a %s', + $argument, + $value !== null ? ' (' . gettype($value) . '#' . $value . ')' : ' (No Value) ', + $stack[1]['class'], + $stack[1]['function'], + $type + ) + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php new file mode 100644 index 0000000000000000000000000000000000000000..7bc5cf3e8f05396f8cf303f9d8c2189885cbb798 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when @covers must be used but is not. + */ +class MissingCoversAnnotationException extends RuntimeException +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php new file mode 100644 index 0000000000000000000000000000000000000000..c143db7da96eddb437d49d6c719162e399966b9b --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php @@ -0,0 +1,15 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +class RuntimeException extends \RuntimeException implements Exception +{ +} diff --git a/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php new file mode 100644 index 0000000000000000000000000000000000000000..3ea542b1fdb6c863616b232b7f1736d2e99717ef --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php @@ -0,0 +1,54 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Exception that is raised when code is unintentionally covered. + */ +class UnintentionallyCoveredCodeException extends RuntimeException +{ + /** + * @var array + */ + private $unintentionallyCoveredUnits = []; + + /** + * @param array $unintentionallyCoveredUnits + */ + public function __construct(array $unintentionallyCoveredUnits) + { + $this->unintentionallyCoveredUnits = $unintentionallyCoveredUnits; + + parent::__construct($this->toString()); + } + + /** + * @return array + */ + public function getUnintentionallyCoveredUnits() + { + return $this->unintentionallyCoveredUnits; + } + + /** + * @return string + */ + private function toString() + { + $message = ''; + + foreach ($this->unintentionallyCoveredUnits as $unit) { + $message .= '- ' . $unit . "\n"; + } + + return $message; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Filter.php b/vendor/phpunit/php-code-coverage/src/Filter.php new file mode 100644 index 0000000000000000000000000000000000000000..771a657ae6010ccd2126da6848f5398b470a9480 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Filter.php @@ -0,0 +1,173 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +/** + * Filter for whitelisting of code coverage information. + */ +class Filter +{ + /** + * Source files that are whitelisted. + * + * @var array + */ + private $whitelistedFiles = []; + + /** + * Adds a directory to the whitelist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function addDirectoryToWhitelist($directory, $suffix = '.php', $prefix = '') + { + $facade = new \File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->addFileToWhitelist($file); + } + } + + /** + * Adds a file to the whitelist. + * + * @param string $filename + */ + public function addFileToWhitelist($filename) + { + $this->whitelistedFiles[realpath($filename)] = true; + } + + /** + * Adds files to the whitelist. + * + * @param array $files + */ + public function addFilesToWhitelist(array $files) + { + foreach ($files as $file) { + $this->addFileToWhitelist($file); + } + } + + /** + * Removes a directory from the whitelist (recursively). + * + * @param string $directory + * @param string $suffix + * @param string $prefix + */ + public function removeDirectoryFromWhitelist($directory, $suffix = '.php', $prefix = '') + { + $facade = new \File_Iterator_Facade; + $files = $facade->getFilesAsArray($directory, $suffix, $prefix); + + foreach ($files as $file) { + $this->removeFileFromWhitelist($file); + } + } + + /** + * Removes a file from the whitelist. + * + * @param string $filename + */ + public function removeFileFromWhitelist($filename) + { + $filename = realpath($filename); + + unset($this->whitelistedFiles[$filename]); + } + + /** + * Checks whether a filename is a real filename. + * + * @param string $filename + * + * @return bool + */ + public function isFile($filename) + { + if ($filename == '-' || + strpos($filename, 'vfs://') === 0 || + strpos($filename, 'xdebug://debug-eval') !== false || + strpos($filename, 'eval()\'d code') !== false || + strpos($filename, 'runtime-created function') !== false || + strpos($filename, 'runkit created function') !== false || + strpos($filename, 'assert code') !== false || + strpos($filename, 'regexp code') !== false) { + return false; + } + + return file_exists($filename); + } + + /** + * Checks whether or not a file is filtered. + * + * @param string $filename + * + * @return bool + */ + public function isFiltered($filename) + { + if (!$this->isFile($filename)) { + return true; + } + + $filename = realpath($filename); + + return !isset($this->whitelistedFiles[$filename]); + } + + /** + * Returns the list of whitelisted files. + * + * @return array + */ + public function getWhitelist() + { + return array_keys($this->whitelistedFiles); + } + + /** + * Returns whether this filter has a whitelist. + * + * @return bool + */ + public function hasWhitelist() + { + return !empty($this->whitelistedFiles); + } + + /** + * Returns the whitelisted files. + * + * @return array + */ + public function getWhitelistedFiles() + { + return $this->whitelistedFiles; + } + + /** + * Sets the whitelisted files. + * + * @param array $whitelistedFiles + */ + public function setWhitelistedFiles($whitelistedFiles) + { + $this->whitelistedFiles = $whitelistedFiles; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php new file mode 100644 index 0000000000000000000000000000000000000000..f3608058ed533a5732e492b321e4f9d9a7771739 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php @@ -0,0 +1,342 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\Util; + +/** + * Base class for nodes in the code coverage information tree. + */ +abstract class AbstractNode implements \Countable +{ + /** + * @var string + */ + private $name; + + /** + * @var string + */ + private $path; + + /** + * @var array + */ + private $pathArray; + + /** + * @var AbstractNode + */ + private $parent; + + /** + * @var string + */ + private $id; + + /** + * Constructor. + * + * @param string $name + * @param AbstractNode $parent + */ + public function __construct($name, AbstractNode $parent = null) + { + if (substr($name, -1) == '/') { + $name = substr($name, 0, -1); + } + + $this->name = $name; + $this->parent = $parent; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @return string + */ + public function getId() + { + if ($this->id === null) { + $parent = $this->getParent(); + + if ($parent === null) { + $this->id = 'index'; + } else { + $parentId = $parent->getId(); + + if ($parentId == 'index') { + $this->id = str_replace(':', '_', $this->name); + } else { + $this->id = $parentId . '/' . $this->name; + } + } + } + + return $this->id; + } + + /** + * @return string + */ + public function getPath() + { + if ($this->path === null) { + if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) { + $this->path = $this->name; + } else { + $this->path = $this->parent->getPath() . '/' . $this->name; + } + } + + return $this->path; + } + + /** + * @return array + */ + public function getPathAsArray() + { + if ($this->pathArray === null) { + if ($this->parent === null) { + $this->pathArray = []; + } else { + $this->pathArray = $this->parent->getPathAsArray(); + } + + $this->pathArray[] = $this; + } + + return $this->pathArray; + } + + /** + * @return AbstractNode + */ + public function getParent() + { + return $this->parent; + } + + /** + * Returns the percentage of classes that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedClassesPercent($asString = true) + { + return Util::percent( + $this->getNumTestedClasses(), + $this->getNumClasses(), + $asString + ); + } + + /** + * Returns the percentage of traits that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedTraitsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedTraits(), + $this->getNumTraits(), + $asString + ); + } + + /** + * Returns the percentage of traits that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedClassesAndTraitsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedClassesAndTraits(), + $this->getNumClassesAndTraits(), + $asString + ); + } + + /** + * Returns the percentage of methods that has been tested. + * + * @param bool $asString + * + * @return int + */ + public function getTestedMethodsPercent($asString = true) + { + return Util::percent( + $this->getNumTestedMethods(), + $this->getNumMethods(), + $asString + ); + } + + /** + * Returns the percentage of executed lines. + * + * @param bool $asString + * + * @return int + */ + public function getLineExecutedPercent($asString = true) + { + return Util::percent( + $this->getNumExecutedLines(), + $this->getNumExecutableLines(), + $asString + ); + } + + /** + * Returns the number of classes and traits. + * + * @return int + */ + public function getNumClassesAndTraits() + { + return $this->getNumClasses() + $this->getNumTraits(); + } + + /** + * Returns the number of tested classes and traits. + * + * @return int + */ + public function getNumTestedClassesAndTraits() + { + return $this->getNumTestedClasses() + $this->getNumTestedTraits(); + } + + /** + * Returns the classes and traits of this node. + * + * @return array + */ + public function getClassesAndTraits() + { + return array_merge($this->getClasses(), $this->getTraits()); + } + + /** + * Returns the classes of this node. + * + * @return array + */ + abstract public function getClasses(); + + /** + * Returns the traits of this node. + * + * @return array + */ + abstract public function getTraits(); + + /** + * Returns the functions of this node. + * + * @return array + */ + abstract public function getFunctions(); + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + abstract public function getLinesOfCode(); + + /** + * Returns the number of executable lines. + * + * @return int + */ + abstract public function getNumExecutableLines(); + + /** + * Returns the number of executed lines. + * + * @return int + */ + abstract public function getNumExecutedLines(); + + /** + * Returns the number of classes. + * + * @return int + */ + abstract public function getNumClasses(); + + /** + * Returns the number of tested classes. + * + * @return int + */ + abstract public function getNumTestedClasses(); + + /** + * Returns the number of traits. + * + * @return int + */ + abstract public function getNumTraits(); + + /** + * Returns the number of tested traits. + * + * @return int + */ + abstract public function getNumTestedTraits(); + + /** + * Returns the number of methods. + * + * @return int + */ + abstract public function getNumMethods(); + + /** + * Returns the number of tested methods. + * + * @return int + */ + abstract public function getNumTestedMethods(); + + /** + * Returns the number of functions. + * + * @return int + */ + abstract public function getNumFunctions(); + + /** + * Returns the number of tested functions. + * + * @return int + */ + abstract public function getNumTestedFunctions(); +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Builder.php b/vendor/phpunit/php-code-coverage/src/Node/Builder.php new file mode 100644 index 0000000000000000000000000000000000000000..8a6a65c1b325cc0481a00a7de7c0f08ed2c52712 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Builder.php @@ -0,0 +1,244 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\CodeCoverage; + +class Builder +{ + /** + * @param CodeCoverage $coverage + * + * @return Directory + */ + public function build(CodeCoverage $coverage) + { + $files = $coverage->getData(); + $commonPath = $this->reducePaths($files); + $root = new Directory( + $commonPath, + null + ); + + $this->addItems( + $root, + $this->buildDirectoryStructure($files), + $coverage->getTests(), + $coverage->getCacheTokens() + ); + + return $root; + } + + /** + * @param Directory $root + * @param array $items + * @param array $tests + * @param bool $cacheTokens + */ + private function addItems(Directory $root, array $items, array $tests, $cacheTokens) + { + foreach ($items as $key => $value) { + if (substr($key, -2) == '/f') { + $key = substr($key, 0, -2); + + if (file_exists($root->getPath() . DIRECTORY_SEPARATOR . $key)) { + $root->addFile($key, $value, $tests, $cacheTokens); + } + } else { + $child = $root->addDirectory($key); + $this->addItems($child, $value, $tests, $cacheTokens); + } + } + } + + /** + * Builds an array representation of the directory structure. + * + * For instance, + * + * + * Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * is transformed into + * + * + * Array + * ( + * [.] => Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * ) + * + * + * @param array $files + * + * @return array + */ + private function buildDirectoryStructure($files) + { + $result = []; + + foreach ($files as $path => $file) { + $path = explode('/', $path); + $pointer = &$result; + $max = count($path); + + for ($i = 0; $i < $max; $i++) { + if ($i == ($max - 1)) { + $type = '/f'; + } else { + $type = ''; + } + + $pointer = &$pointer[$path[$i] . $type]; + } + + $pointer = $file; + } + + return $result; + } + + /** + * Reduces the paths by cutting the longest common start path. + * + * For instance, + * + * + * Array + * ( + * [/home/sb/Money/Money.php] => Array + * ( + * ... + * ) + * + * [/home/sb/Money/MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * is reduced to + * + * + * Array + * ( + * [Money.php] => Array + * ( + * ... + * ) + * + * [MoneyBag.php] => Array + * ( + * ... + * ) + * ) + * + * + * @param array $files + * + * @return string + */ + private function reducePaths(&$files) + { + if (empty($files)) { + return '.'; + } + + $commonPath = ''; + $paths = array_keys($files); + + if (count($files) == 1) { + $commonPath = dirname($paths[0]) . '/'; + $files[basename($paths[0])] = $files[$paths[0]]; + + unset($files[$paths[0]]); + + return $commonPath; + } + + $max = count($paths); + + for ($i = 0; $i < $max; $i++) { + // strip phar:// prefixes + if (strpos($paths[$i], 'phar://') === 0) { + $paths[$i] = substr($paths[$i], 7); + $paths[$i] = strtr($paths[$i], '/', DIRECTORY_SEPARATOR); + } + $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]); + + if (empty($paths[$i][0])) { + $paths[$i][0] = DIRECTORY_SEPARATOR; + } + } + + $done = false; + $max = count($paths); + + while (!$done) { + for ($i = 0; $i < $max - 1; $i++) { + if (!isset($paths[$i][0]) || + !isset($paths[$i+1][0]) || + $paths[$i][0] != $paths[$i+1][0]) { + $done = true; + break; + } + } + + if (!$done) { + $commonPath .= $paths[0][0]; + + if ($paths[0][0] != DIRECTORY_SEPARATOR) { + $commonPath .= DIRECTORY_SEPARATOR; + } + + for ($i = 0; $i < $max; $i++) { + array_shift($paths[$i]); + } + } + } + + $original = array_keys($files); + $max = count($original); + + for ($i = 0; $i < $max; $i++) { + $files[implode('/', $paths[$i])] = $files[$original[$i]]; + unset($files[$original[$i]]); + } + + ksort($files); + + return substr($commonPath, 0, -1); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/Node/Directory.php new file mode 100644 index 0000000000000000000000000000000000000000..6a9f28db58649733a4067b43e7ef370396c86ace --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Directory.php @@ -0,0 +1,483 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +/** + * Represents a directory in the code coverage information tree. + */ +class Directory extends AbstractNode implements \IteratorAggregate +{ + /** + * @var AbstractNode[] + */ + private $children = []; + + /** + * @var Directory[] + */ + private $directories = []; + + /** + * @var File[] + */ + private $files = []; + + /** + * @var array + */ + private $classes; + + /** + * @var array + */ + private $traits; + + /** + * @var array + */ + private $functions; + + /** + * @var array + */ + private $linesOfCode = null; + + /** + * @var int + */ + private $numFiles = -1; + + /** + * @var int + */ + private $numExecutableLines = -1; + + /** + * @var int + */ + private $numExecutedLines = -1; + + /** + * @var int + */ + private $numClasses = -1; + + /** + * @var int + */ + private $numTestedClasses = -1; + + /** + * @var int + */ + private $numTraits = -1; + + /** + * @var int + */ + private $numTestedTraits = -1; + + /** + * @var int + */ + private $numMethods = -1; + + /** + * @var int + */ + private $numTestedMethods = -1; + + /** + * @var int + */ + private $numFunctions = -1; + + /** + * @var int + */ + private $numTestedFunctions = -1; + + /** + * Returns the number of files in/under this node. + * + * @return int + */ + public function count() + { + if ($this->numFiles == -1) { + $this->numFiles = 0; + + foreach ($this->children as $child) { + $this->numFiles += count($child); + } + } + + return $this->numFiles; + } + + /** + * Returns an iterator for this node. + * + * @return \RecursiveIteratorIterator + */ + public function getIterator() + { + return new \RecursiveIteratorIterator( + new Iterator($this), + \RecursiveIteratorIterator::SELF_FIRST + ); + } + + /** + * Adds a new directory. + * + * @param string $name + * + * @return Directory + */ + public function addDirectory($name) + { + $directory = new self($name, $this); + + $this->children[] = $directory; + $this->directories[] = &$this->children[count($this->children) - 1]; + + return $directory; + } + + /** + * Adds a new file. + * + * @param string $name + * @param array $coverageData + * @param array $testData + * @param bool $cacheTokens + * + * @return File + * + * @throws InvalidArgumentException + */ + public function addFile($name, array $coverageData, array $testData, $cacheTokens) + { + $file = new File( + $name, + $this, + $coverageData, + $testData, + $cacheTokens + ); + + $this->children[] = $file; + $this->files[] = &$this->children[count($this->children) - 1]; + + $this->numExecutableLines = -1; + $this->numExecutedLines = -1; + + return $file; + } + + /** + * Returns the directories in this directory. + * + * @return array + */ + public function getDirectories() + { + return $this->directories; + } + + /** + * Returns the files in this directory. + * + * @return array + */ + public function getFiles() + { + return $this->files; + } + + /** + * Returns the child nodes of this node. + * + * @return array + */ + public function getChildNodes() + { + return $this->children; + } + + /** + * Returns the classes of this node. + * + * @return array + */ + public function getClasses() + { + if ($this->classes === null) { + $this->classes = []; + + foreach ($this->children as $child) { + $this->classes = array_merge( + $this->classes, + $child->getClasses() + ); + } + } + + return $this->classes; + } + + /** + * Returns the traits of this node. + * + * @return array + */ + public function getTraits() + { + if ($this->traits === null) { + $this->traits = []; + + foreach ($this->children as $child) { + $this->traits = array_merge( + $this->traits, + $child->getTraits() + ); + } + } + + return $this->traits; + } + + /** + * Returns the functions of this node. + * + * @return array + */ + public function getFunctions() + { + if ($this->functions === null) { + $this->functions = []; + + foreach ($this->children as $child) { + $this->functions = array_merge( + $this->functions, + $child->getFunctions() + ); + } + } + + return $this->functions; + } + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + public function getLinesOfCode() + { + if ($this->linesOfCode === null) { + $this->linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0]; + + foreach ($this->children as $child) { + $linesOfCode = $child->getLinesOfCode(); + + $this->linesOfCode['loc'] += $linesOfCode['loc']; + $this->linesOfCode['cloc'] += $linesOfCode['cloc']; + $this->linesOfCode['ncloc'] += $linesOfCode['ncloc']; + } + } + + return $this->linesOfCode; + } + + /** + * Returns the number of executable lines. + * + * @return int + */ + public function getNumExecutableLines() + { + if ($this->numExecutableLines == -1) { + $this->numExecutableLines = 0; + + foreach ($this->children as $child) { + $this->numExecutableLines += $child->getNumExecutableLines(); + } + } + + return $this->numExecutableLines; + } + + /** + * Returns the number of executed lines. + * + * @return int + */ + public function getNumExecutedLines() + { + if ($this->numExecutedLines == -1) { + $this->numExecutedLines = 0; + + foreach ($this->children as $child) { + $this->numExecutedLines += $child->getNumExecutedLines(); + } + } + + return $this->numExecutedLines; + } + + /** + * Returns the number of classes. + * + * @return int + */ + public function getNumClasses() + { + if ($this->numClasses == -1) { + $this->numClasses = 0; + + foreach ($this->children as $child) { + $this->numClasses += $child->getNumClasses(); + } + } + + return $this->numClasses; + } + + /** + * Returns the number of tested classes. + * + * @return int + */ + public function getNumTestedClasses() + { + if ($this->numTestedClasses == -1) { + $this->numTestedClasses = 0; + + foreach ($this->children as $child) { + $this->numTestedClasses += $child->getNumTestedClasses(); + } + } + + return $this->numTestedClasses; + } + + /** + * Returns the number of traits. + * + * @return int + */ + public function getNumTraits() + { + if ($this->numTraits == -1) { + $this->numTraits = 0; + + foreach ($this->children as $child) { + $this->numTraits += $child->getNumTraits(); + } + } + + return $this->numTraits; + } + + /** + * Returns the number of tested traits. + * + * @return int + */ + public function getNumTestedTraits() + { + if ($this->numTestedTraits == -1) { + $this->numTestedTraits = 0; + + foreach ($this->children as $child) { + $this->numTestedTraits += $child->getNumTestedTraits(); + } + } + + return $this->numTestedTraits; + } + + /** + * Returns the number of methods. + * + * @return int + */ + public function getNumMethods() + { + if ($this->numMethods == -1) { + $this->numMethods = 0; + + foreach ($this->children as $child) { + $this->numMethods += $child->getNumMethods(); + } + } + + return $this->numMethods; + } + + /** + * Returns the number of tested methods. + * + * @return int + */ + public function getNumTestedMethods() + { + if ($this->numTestedMethods == -1) { + $this->numTestedMethods = 0; + + foreach ($this->children as $child) { + $this->numTestedMethods += $child->getNumTestedMethods(); + } + } + + return $this->numTestedMethods; + } + + /** + * Returns the number of functions. + * + * @return int + */ + public function getNumFunctions() + { + if ($this->numFunctions == -1) { + $this->numFunctions = 0; + + foreach ($this->children as $child) { + $this->numFunctions += $child->getNumFunctions(); + } + } + + return $this->numFunctions; + } + + /** + * Returns the number of tested functions. + * + * @return int + */ + public function getNumTestedFunctions() + { + if ($this->numTestedFunctions == -1) { + $this->numTestedFunctions = 0; + + foreach ($this->children as $child) { + $this->numTestedFunctions += $child->getNumTestedFunctions(); + } + } + + return $this->numTestedFunctions; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/File.php b/vendor/phpunit/php-code-coverage/src/Node/File.php new file mode 100644 index 0000000000000000000000000000000000000000..44856f075cc055f3d07dc8082e14162808705736 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/File.php @@ -0,0 +1,722 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +/** + * Represents a file in the code coverage information tree. + */ +class File extends AbstractNode +{ + /** + * @var array + */ + private $coverageData; + + /** + * @var array + */ + private $testData; + + /** + * @var int + */ + private $numExecutableLines = 0; + + /** + * @var int + */ + private $numExecutedLines = 0; + + /** + * @var array + */ + private $classes = []; + + /** + * @var array + */ + private $traits = []; + + /** + * @var array + */ + private $functions = []; + + /** + * @var array + */ + private $linesOfCode = []; + + /** + * @var int + */ + private $numClasses = null; + + /** + * @var int + */ + private $numTestedClasses = 0; + + /** + * @var int + */ + private $numTraits = null; + + /** + * @var int + */ + private $numTestedTraits = 0; + + /** + * @var int + */ + private $numMethods = null; + + /** + * @var int + */ + private $numTestedMethods = null; + + /** + * @var int + */ + private $numTestedFunctions = null; + + /** + * @var array + */ + private $startLines = []; + + /** + * @var array + */ + private $endLines = []; + + /** + * @var bool + */ + private $cacheTokens; + + /** + * Constructor. + * + * @param string $name + * @param AbstractNode $parent + * @param array $coverageData + * @param array $testData + * @param bool $cacheTokens + * + * @throws InvalidArgumentException + */ + public function __construct($name, AbstractNode $parent, array $coverageData, array $testData, $cacheTokens) + { + if (!is_bool($cacheTokens)) { + throw InvalidArgumentException::create( + 1, + 'boolean' + ); + } + + parent::__construct($name, $parent); + + $this->coverageData = $coverageData; + $this->testData = $testData; + $this->cacheTokens = $cacheTokens; + + $this->calculateStatistics(); + } + + /** + * Returns the number of files in/under this node. + * + * @return int + */ + public function count() + { + return 1; + } + + /** + * Returns the code coverage data of this node. + * + * @return array + */ + public function getCoverageData() + { + return $this->coverageData; + } + + /** + * Returns the test data of this node. + * + * @return array + */ + public function getTestData() + { + return $this->testData; + } + + /** + * Returns the classes of this node. + * + * @return array + */ + public function getClasses() + { + return $this->classes; + } + + /** + * Returns the traits of this node. + * + * @return array + */ + public function getTraits() + { + return $this->traits; + } + + /** + * Returns the functions of this node. + * + * @return array + */ + public function getFunctions() + { + return $this->functions; + } + + /** + * Returns the LOC/CLOC/NCLOC of this node. + * + * @return array + */ + public function getLinesOfCode() + { + return $this->linesOfCode; + } + + /** + * Returns the number of executable lines. + * + * @return int + */ + public function getNumExecutableLines() + { + return $this->numExecutableLines; + } + + /** + * Returns the number of executed lines. + * + * @return int + */ + public function getNumExecutedLines() + { + return $this->numExecutedLines; + } + + /** + * Returns the number of classes. + * + * @return int + */ + public function getNumClasses() + { + if ($this->numClasses === null) { + $this->numClasses = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numClasses++; + + continue 2; + } + } + } + } + + return $this->numClasses; + } + + /** + * Returns the number of tested classes. + * + * @return int + */ + public function getNumTestedClasses() + { + return $this->numTestedClasses; + } + + /** + * Returns the number of traits. + * + * @return int + */ + public function getNumTraits() + { + if ($this->numTraits === null) { + $this->numTraits = 0; + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numTraits++; + + continue 2; + } + } + } + } + + return $this->numTraits; + } + + /** + * Returns the number of tested traits. + * + * @return int + */ + public function getNumTestedTraits() + { + return $this->numTestedTraits; + } + + /** + * Returns the number of methods. + * + * @return int + */ + public function getNumMethods() + { + if ($this->numMethods === null) { + $this->numMethods = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numMethods++; + } + } + } + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0) { + $this->numMethods++; + } + } + } + } + + return $this->numMethods; + } + + /** + * Returns the number of tested methods. + * + * @return int + */ + public function getNumTestedMethods() + { + if ($this->numTestedMethods === null) { + $this->numTestedMethods = 0; + + foreach ($this->classes as $class) { + foreach ($class['methods'] as $method) { + if ($method['executableLines'] > 0 && + $method['coverage'] == 100) { + $this->numTestedMethods++; + } + } + } + + foreach ($this->traits as $trait) { + foreach ($trait['methods'] as $method) { + if ($method['executableLines'] > 0 && + $method['coverage'] == 100) { + $this->numTestedMethods++; + } + } + } + } + + return $this->numTestedMethods; + } + + /** + * Returns the number of functions. + * + * @return int + */ + public function getNumFunctions() + { + return count($this->functions); + } + + /** + * Returns the number of tested functions. + * + * @return int + */ + public function getNumTestedFunctions() + { + if ($this->numTestedFunctions === null) { + $this->numTestedFunctions = 0; + + foreach ($this->functions as $function) { + if ($function['executableLines'] > 0 && + $function['coverage'] == 100) { + $this->numTestedFunctions++; + } + } + } + + return $this->numTestedFunctions; + } + + /** + * Calculates coverage statistics for the file. + */ + protected function calculateStatistics() + { + $classStack = $functionStack = []; + + if ($this->cacheTokens) { + $tokens = \PHP_Token_Stream_CachingFactory::get($this->getPath()); + } else { + $tokens = new \PHP_Token_Stream($this->getPath()); + } + + $this->processClasses($tokens); + $this->processTraits($tokens); + $this->processFunctions($tokens); + $this->linesOfCode = $tokens->getLinesOfCode(); + unset($tokens); + + for ($lineNumber = 1; $lineNumber <= $this->linesOfCode['loc']; $lineNumber++) { + if (isset($this->startLines[$lineNumber])) { + // Start line of a class. + if (isset($this->startLines[$lineNumber]['className'])) { + if (isset($currentClass)) { + $classStack[] = &$currentClass; + } + + $currentClass = &$this->startLines[$lineNumber]; + } // Start line of a trait. + elseif (isset($this->startLines[$lineNumber]['traitName'])) { + $currentTrait = &$this->startLines[$lineNumber]; + } // Start line of a method. + elseif (isset($this->startLines[$lineNumber]['methodName'])) { + $currentMethod = &$this->startLines[$lineNumber]; + } // Start line of a function. + elseif (isset($this->startLines[$lineNumber]['functionName'])) { + if (isset($currentFunction)) { + $functionStack[] = &$currentFunction; + } + + $currentFunction = &$this->startLines[$lineNumber]; + } + } + + if (isset($this->coverageData[$lineNumber])) { + if (isset($currentClass)) { + $currentClass['executableLines']++; + } + + if (isset($currentTrait)) { + $currentTrait['executableLines']++; + } + + if (isset($currentMethod)) { + $currentMethod['executableLines']++; + } + + if (isset($currentFunction)) { + $currentFunction['executableLines']++; + } + + $this->numExecutableLines++; + + if (count($this->coverageData[$lineNumber]) > 0) { + if (isset($currentClass)) { + $currentClass['executedLines']++; + } + + if (isset($currentTrait)) { + $currentTrait['executedLines']++; + } + + if (isset($currentMethod)) { + $currentMethod['executedLines']++; + } + + if (isset($currentFunction)) { + $currentFunction['executedLines']++; + } + + $this->numExecutedLines++; + } + } + + if (isset($this->endLines[$lineNumber])) { + // End line of a class. + if (isset($this->endLines[$lineNumber]['className'])) { + unset($currentClass); + + if ($classStack) { + end($classStack); + $key = key($classStack); + $currentClass = &$classStack[$key]; + unset($classStack[$key]); + } + } // End line of a trait. + elseif (isset($this->endLines[$lineNumber]['traitName'])) { + unset($currentTrait); + } // End line of a method. + elseif (isset($this->endLines[$lineNumber]['methodName'])) { + unset($currentMethod); + } // End line of a function. + elseif (isset($this->endLines[$lineNumber]['functionName'])) { + unset($currentFunction); + + if ($functionStack) { + end($functionStack); + $key = key($functionStack); + $currentFunction = &$functionStack[$key]; + unset($functionStack[$key]); + } + } + } + } + + foreach ($this->traits as &$trait) { + foreach ($trait['methods'] as &$method) { + if ($method['executableLines'] > 0) { + $method['coverage'] = ($method['executedLines'] / + $method['executableLines']) * 100; + } else { + $method['coverage'] = 100; + } + + $method['crap'] = $this->crap( + $method['ccn'], + $method['coverage'] + ); + + $trait['ccn'] += $method['ccn']; + } + + if ($trait['executableLines'] > 0) { + $trait['coverage'] = ($trait['executedLines'] / + $trait['executableLines']) * 100; + + if ($trait['coverage'] == 100) { + $this->numTestedClasses++; + } + } else { + $trait['coverage'] = 100; + } + + $trait['crap'] = $this->crap( + $trait['ccn'], + $trait['coverage'] + ); + } + + foreach ($this->classes as &$class) { + foreach ($class['methods'] as &$method) { + if ($method['executableLines'] > 0) { + $method['coverage'] = ($method['executedLines'] / + $method['executableLines']) * 100; + } else { + $method['coverage'] = 100; + } + + $method['crap'] = $this->crap( + $method['ccn'], + $method['coverage'] + ); + + $class['ccn'] += $method['ccn']; + } + + if ($class['executableLines'] > 0) { + $class['coverage'] = ($class['executedLines'] / + $class['executableLines']) * 100; + + if ($class['coverage'] == 100) { + $this->numTestedClasses++; + } + } else { + $class['coverage'] = 100; + } + + $class['crap'] = $this->crap( + $class['ccn'], + $class['coverage'] + ); + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processClasses(\PHP_Token_Stream $tokens) + { + $classes = $tokens->getClasses(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($classes as $className => $class) { + $this->classes[$className] = [ + 'className' => $className, + 'methods' => [], + 'startLine' => $class['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => 0, + 'coverage' => 0, + 'crap' => 0, + 'package' => $class['package'], + 'link' => $link . $class['startLine'] + ]; + + $this->startLines[$class['startLine']] = &$this->classes[$className]; + $this->endLines[$class['endLine']] = &$this->classes[$className]; + + foreach ($class['methods'] as $methodName => $method) { + $this->classes[$className]['methods'][$methodName] = $this->newMethod($methodName, $method, $link); + + $this->startLines[$method['startLine']] = &$this->classes[$className]['methods'][$methodName]; + $this->endLines[$method['endLine']] = &$this->classes[$className]['methods'][$methodName]; + } + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processTraits(\PHP_Token_Stream $tokens) + { + $traits = $tokens->getTraits(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($traits as $traitName => $trait) { + $this->traits[$traitName] = [ + 'traitName' => $traitName, + 'methods' => [], + 'startLine' => $trait['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => 0, + 'coverage' => 0, + 'crap' => 0, + 'package' => $trait['package'], + 'link' => $link . $trait['startLine'] + ]; + + $this->startLines[$trait['startLine']] = &$this->traits[$traitName]; + $this->endLines[$trait['endLine']] = &$this->traits[$traitName]; + + foreach ($trait['methods'] as $methodName => $method) { + $this->traits[$traitName]['methods'][$methodName] = $this->newMethod($methodName, $method, $link); + + $this->startLines[$method['startLine']] = &$this->traits[$traitName]['methods'][$methodName]; + $this->endLines[$method['endLine']] = &$this->traits[$traitName]['methods'][$methodName]; + } + } + } + + /** + * @param \PHP_Token_Stream $tokens + */ + protected function processFunctions(\PHP_Token_Stream $tokens) + { + $functions = $tokens->getFunctions(); + unset($tokens); + + $link = $this->getId() . '.html#'; + + foreach ($functions as $functionName => $function) { + $this->functions[$functionName] = [ + 'functionName' => $functionName, + 'signature' => $function['signature'], + 'startLine' => $function['startLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => $function['ccn'], + 'coverage' => 0, + 'crap' => 0, + 'link' => $link . $function['startLine'] + ]; + + $this->startLines[$function['startLine']] = &$this->functions[$functionName]; + $this->endLines[$function['endLine']] = &$this->functions[$functionName]; + } + } + + /** + * Calculates the Change Risk Anti-Patterns (CRAP) index for a unit of code + * based on its cyclomatic complexity and percentage of code coverage. + * + * @param int $ccn + * @param float $coverage + * + * @return string + */ + protected function crap($ccn, $coverage) + { + if ($coverage == 0) { + return (string) (pow($ccn, 2) + $ccn); + } + + if ($coverage >= 95) { + return (string) $ccn; + } + + return sprintf( + '%01.2F', + pow($ccn, 2) * pow(1 - $coverage/100, 3) + $ccn + ); + } + + /** + * @param string $methodName + * @param array $method + * @param string $link + * + * @return array + */ + private function newMethod($methodName, array $method, $link) + { + return [ + 'methodName' => $methodName, + 'visibility' => $method['visibility'], + 'signature' => $method['signature'], + 'startLine' => $method['startLine'], + 'endLine' => $method['endLine'], + 'executableLines' => 0, + 'executedLines' => 0, + 'ccn' => $method['ccn'], + 'coverage' => 0, + 'crap' => 0, + 'link' => $link . $method['startLine'], + ]; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Node/Iterator.php b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php new file mode 100644 index 0000000000000000000000000000000000000000..e246380591f2eecda1e5d3fa87e7d330113e017a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php @@ -0,0 +1,103 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Node; + +/** + * Recursive iterator for node object graphs. + */ +class Iterator implements \RecursiveIterator +{ + /** + * @var int + */ + private $position; + + /** + * @var AbstractNode[] + */ + private $nodes; + + /** + * @param Directory $node + */ + public function __construct(Directory $node) + { + $this->nodes = $node->getChildNodes(); + } + + /** + * Rewinds the Iterator to the first element. + */ + public function rewind() + { + $this->position = 0; + } + + /** + * Checks if there is a current element after calls to rewind() or next(). + * + * @return bool + */ + public function valid() + { + return $this->position < count($this->nodes); + } + + /** + * Returns the key of the current element. + * + * @return int + */ + public function key() + { + return $this->position; + } + + /** + * Returns the current element. + * + * @return \PHPUnit_Framework_Test + */ + public function current() + { + return $this->valid() ? $this->nodes[$this->position] : null; + } + + /** + * Moves forward to next element. + */ + public function next() + { + $this->position++; + } + + /** + * Returns the sub iterator for the current element. + * + * @return Iterator + */ + public function getChildren() + { + return new self( + $this->nodes[$this->position] + ); + } + + /** + * Checks whether the current element has children. + * + * @return bool + */ + public function hasChildren() + { + return $this->nodes[$this->position] instanceof Directory; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Clover.php b/vendor/phpunit/php-code-coverage/src/Report/Clover.php new file mode 100644 index 0000000000000000000000000000000000000000..054b1dfde7afdb96a00e43335308b7d817ab9975 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Clover.php @@ -0,0 +1,251 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\File; + +/** + * Generates a Clover XML logfile from a code coverage object. + */ +class Clover +{ + /** + * @param CodeCoverage $coverage + * @param string $target + * @param string $name + * + * @return string + */ + public function process(CodeCoverage $coverage, $target = null, $name = null) + { + $xmlDocument = new \DOMDocument('1.0', 'UTF-8'); + $xmlDocument->formatOutput = true; + + $xmlCoverage = $xmlDocument->createElement('coverage'); + $xmlCoverage->setAttribute('generated', (int) $_SERVER['REQUEST_TIME']); + $xmlDocument->appendChild($xmlCoverage); + + $xmlProject = $xmlDocument->createElement('project'); + $xmlProject->setAttribute('timestamp', (int) $_SERVER['REQUEST_TIME']); + + if (is_string($name)) { + $xmlProject->setAttribute('name', $name); + } + + $xmlCoverage->appendChild($xmlProject); + + $packages = []; + $report = $coverage->getReport(); + unset($coverage); + + foreach ($report as $item) { + if (!$item instanceof File) { + continue; + } + + /* @var File $item */ + + $xmlFile = $xmlDocument->createElement('file'); + $xmlFile->setAttribute('name', $item->getPath()); + + $classes = $item->getClassesAndTraits(); + $coverage = $item->getCoverageData(); + $lines = []; + $namespace = 'global'; + + foreach ($classes as $className => $class) { + $classStatements = 0; + $coveredClassStatements = 0; + $coveredMethods = 0; + $classMethods = 0; + + foreach ($class['methods'] as $methodName => $method) { + if ($method['executableLines'] == 0) { + continue; + } + + $classMethods++; + $classStatements += $method['executableLines']; + $coveredClassStatements += $method['executedLines']; + + if ($method['coverage'] == 100) { + $coveredMethods++; + } + + $methodCount = 0; + + foreach (range($method['startLine'], $method['endLine']) as $line) { + if (isset($coverage[$line]) && ($coverage[$line] !== null)) { + $methodCount = max($methodCount, count($coverage[$line])); + } + } + + $lines[$method['startLine']] = [ + 'ccn' => $method['ccn'], + 'count' => $methodCount, + 'crap' => $method['crap'], + 'type' => 'method', + 'visibility' => $method['visibility'], + 'name' => $methodName + ]; + } + + if (!empty($class['package']['namespace'])) { + $namespace = $class['package']['namespace']; + } + + $xmlClass = $xmlDocument->createElement('class'); + $xmlClass->setAttribute('name', $className); + $xmlClass->setAttribute('namespace', $namespace); + + if (!empty($class['package']['fullPackage'])) { + $xmlClass->setAttribute( + 'fullPackage', + $class['package']['fullPackage'] + ); + } + + if (!empty($class['package']['category'])) { + $xmlClass->setAttribute( + 'category', + $class['package']['category'] + ); + } + + if (!empty($class['package']['package'])) { + $xmlClass->setAttribute( + 'package', + $class['package']['package'] + ); + } + + if (!empty($class['package']['subpackage'])) { + $xmlClass->setAttribute( + 'subpackage', + $class['package']['subpackage'] + ); + } + + $xmlFile->appendChild($xmlClass); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('complexity', $class['ccn']); + $xmlMetrics->setAttribute('methods', $classMethods); + $xmlMetrics->setAttribute('coveredmethods', $coveredMethods); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $classStatements); + $xmlMetrics->setAttribute('coveredstatements', $coveredClassStatements); + $xmlMetrics->setAttribute('elements', $classMethods + $classStatements /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $coveredMethods + $coveredClassStatements /* + coveredconditionals */); + $xmlClass->appendChild($xmlMetrics); + } + + foreach ($coverage as $line => $data) { + if ($data === null || isset($lines[$line])) { + continue; + } + + $lines[$line] = [ + 'count' => count($data), 'type' => 'stmt' + ]; + } + + ksort($lines); + + foreach ($lines as $line => $data) { + $xmlLine = $xmlDocument->createElement('line'); + $xmlLine->setAttribute('num', $line); + $xmlLine->setAttribute('type', $data['type']); + + if (isset($data['name'])) { + $xmlLine->setAttribute('name', $data['name']); + } + + if (isset($data['visibility'])) { + $xmlLine->setAttribute('visibility', $data['visibility']); + } + + if (isset($data['ccn'])) { + $xmlLine->setAttribute('complexity', $data['ccn']); + } + + if (isset($data['crap'])) { + $xmlLine->setAttribute('crap', $data['crap']); + } + + $xmlLine->setAttribute('count', $data['count']); + $xmlFile->appendChild($xmlLine); + } + + $linesOfCode = $item->getLinesOfCode(); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); + $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); + $xmlMetrics->setAttribute('classes', $item->getNumClassesAndTraits()); + $xmlMetrics->setAttribute('methods', $item->getNumMethods()); + $xmlMetrics->setAttribute('coveredmethods', $item->getNumTestedMethods()); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $item->getNumExecutableLines()); + $xmlMetrics->setAttribute('coveredstatements', $item->getNumExecutedLines()); + $xmlMetrics->setAttribute('elements', $item->getNumMethods() + $item->getNumExecutableLines() /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $item->getNumTestedMethods() + $item->getNumExecutedLines() /* + coveredconditionals */); + $xmlFile->appendChild($xmlMetrics); + + if ($namespace == 'global') { + $xmlProject->appendChild($xmlFile); + } else { + if (!isset($packages[$namespace])) { + $packages[$namespace] = $xmlDocument->createElement( + 'package' + ); + + $packages[$namespace]->setAttribute('name', $namespace); + $xmlProject->appendChild($packages[$namespace]); + } + + $packages[$namespace]->appendChild($xmlFile); + } + } + + $linesOfCode = $report->getLinesOfCode(); + + $xmlMetrics = $xmlDocument->createElement('metrics'); + $xmlMetrics->setAttribute('files', count($report)); + $xmlMetrics->setAttribute('loc', $linesOfCode['loc']); + $xmlMetrics->setAttribute('ncloc', $linesOfCode['ncloc']); + $xmlMetrics->setAttribute('classes', $report->getNumClassesAndTraits()); + $xmlMetrics->setAttribute('methods', $report->getNumMethods()); + $xmlMetrics->setAttribute('coveredmethods', $report->getNumTestedMethods()); + $xmlMetrics->setAttribute('conditionals', 0); + $xmlMetrics->setAttribute('coveredconditionals', 0); + $xmlMetrics->setAttribute('statements', $report->getNumExecutableLines()); + $xmlMetrics->setAttribute('coveredstatements', $report->getNumExecutedLines()); + $xmlMetrics->setAttribute('elements', $report->getNumMethods() + $report->getNumExecutableLines() /* + conditionals */); + $xmlMetrics->setAttribute('coveredelements', $report->getNumTestedMethods() + $report->getNumExecutedLines() /* + coveredconditionals */); + $xmlProject->appendChild($xmlMetrics); + + $buffer = $xmlDocument->saveXML(); + + if ($target !== null) { + if (!is_dir(dirname($target))) { + mkdir(dirname($target), 0777, true); + } + + file_put_contents($target, $buffer); + } + + return $buffer; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php new file mode 100644 index 0000000000000000000000000000000000000000..7adf78fe39056b8617812398611c42e910815150 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php @@ -0,0 +1,172 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\File; +use SebastianBergmann\CodeCoverage\InvalidArgumentException; + +class Crap4j +{ + /** + * @var int + */ + private $threshold; + + /** + * @param int $threshold + */ + public function __construct($threshold = 30) + { + if (!is_int($threshold)) { + throw InvalidArgumentException::create( + 1, + 'integer' + ); + } + + $this->threshold = $threshold; + } + + /** + * @param CodeCoverage $coverage + * @param string $target + * @param string $name + * + * @return string + */ + public function process(CodeCoverage $coverage, $target = null, $name = null) + { + $document = new \DOMDocument('1.0', 'UTF-8'); + $document->formatOutput = true; + + $root = $document->createElement('crap_result'); + $document->appendChild($root); + + $project = $document->createElement('project', is_string($name) ? $name : ''); + $root->appendChild($project); + $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s', (int) $_SERVER['REQUEST_TIME']))); + + $stats = $document->createElement('stats'); + $methodsNode = $document->createElement('methods'); + + $report = $coverage->getReport(); + unset($coverage); + + $fullMethodCount = 0; + $fullCrapMethodCount = 0; + $fullCrapLoad = 0; + $fullCrap = 0; + + foreach ($report as $item) { + $namespace = 'global'; + + if (!$item instanceof File) { + continue; + } + + $file = $document->createElement('file'); + $file->setAttribute('name', $item->getPath()); + + $classes = $item->getClassesAndTraits(); + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + $crapLoad = $this->getCrapLoad($method['crap'], $method['ccn'], $method['coverage']); + + $fullCrap += $method['crap']; + $fullCrapLoad += $crapLoad; + $fullMethodCount++; + + if ($method['crap'] >= $this->threshold) { + $fullCrapMethodCount++; + } + + $methodNode = $document->createElement('method'); + + if (!empty($class['package']['namespace'])) { + $namespace = $class['package']['namespace']; + } + + $methodNode->appendChild($document->createElement('package', $namespace)); + $methodNode->appendChild($document->createElement('className', $className)); + $methodNode->appendChild($document->createElement('methodName', $methodName)); + $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature']))); + $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature']))); + $methodNode->appendChild($document->createElement('crap', $this->roundValue($method['crap']))); + $methodNode->appendChild($document->createElement('complexity', $method['ccn'])); + $methodNode->appendChild($document->createElement('coverage', $this->roundValue($method['coverage']))); + $methodNode->appendChild($document->createElement('crapLoad', round($crapLoad))); + + $methodsNode->appendChild($methodNode); + } + } + } + + $stats->appendChild($document->createElement('name', 'Method Crap Stats')); + $stats->appendChild($document->createElement('methodCount', $fullMethodCount)); + $stats->appendChild($document->createElement('crapMethodCount', $fullCrapMethodCount)); + $stats->appendChild($document->createElement('crapLoad', round($fullCrapLoad))); + $stats->appendChild($document->createElement('totalCrap', $fullCrap)); + + if ($fullMethodCount > 0) { + $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount); + } else { + $crapMethodPercent = 0; + } + + $stats->appendChild($document->createElement('crapMethodPercent', $crapMethodPercent)); + + $root->appendChild($stats); + $root->appendChild($methodsNode); + + $buffer = $document->saveXML(); + + if ($target !== null) { + if (!is_dir(dirname($target))) { + mkdir(dirname($target), 0777, true); + } + + file_put_contents($target, $buffer); + } + + return $buffer; + } + + /** + * @param float $crapValue + * @param int $cyclomaticComplexity + * @param float $coveragePercent + * + * @return float + */ + private function getCrapLoad($crapValue, $cyclomaticComplexity, $coveragePercent) + { + $crapLoad = 0; + + if ($crapValue >= $this->threshold) { + $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100); + $crapLoad += $cyclomaticComplexity / $this->threshold; + } + + return $crapLoad; + } + + /** + * @param float $value + * + * @return float + */ + private function roundValue($value) + { + return round($value, 2); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php new file mode 100644 index 0000000000000000000000000000000000000000..adcfe424788a923b00ce97e768f02b3b433d115e --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php @@ -0,0 +1,179 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; +use SebastianBergmann\CodeCoverage\RuntimeException; + +/** + * Generates an HTML report from a code coverage object. + */ +class Facade +{ + /** + * @var string + */ + private $templatePath; + + /** + * @var string + */ + private $generator; + + /** + * @var int + */ + private $lowUpperBound; + + /** + * @var int + */ + private $highLowerBound; + + /** + * Constructor. + * + * @param int $lowUpperBound + * @param int $highLowerBound + * @param string $generator + */ + public function __construct($lowUpperBound = 50, $highLowerBound = 90, $generator = '') + { + $this->generator = $generator; + $this->highLowerBound = $highLowerBound; + $this->lowUpperBound = $lowUpperBound; + $this->templatePath = __DIR__ . '/Renderer/Template/'; + } + + /** + * @param CodeCoverage $coverage + * @param string $target + */ + public function process(CodeCoverage $coverage, $target) + { + $target = $this->getDirectory($target); + $report = $coverage->getReport(); + unset($coverage); + + if (!isset($_SERVER['REQUEST_TIME'])) { + $_SERVER['REQUEST_TIME'] = time(); + } + + $date = date('D M j G:i:s T Y', $_SERVER['REQUEST_TIME']); + + $dashboard = new Dashboard( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $directory = new Directory( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $file = new File( + $this->templatePath, + $this->generator, + $date, + $this->lowUpperBound, + $this->highLowerBound + ); + + $directory->render($report, $target . 'index.html'); + $dashboard->render($report, $target . 'dashboard.html'); + + foreach ($report as $node) { + $id = $node->getId(); + + if ($node instanceof DirectoryNode) { + if (!file_exists($target . $id)) { + mkdir($target . $id, 0777, true); + } + + $directory->render($node, $target . $id . '/index.html'); + $dashboard->render($node, $target . $id . '/dashboard.html'); + } else { + $dir = dirname($target . $id); + + if (!file_exists($dir)) { + mkdir($dir, 0777, true); + } + + $file->render($node, $target . $id . '.html'); + } + } + + $this->copyFiles($target); + } + + /** + * @param string $target + */ + private function copyFiles($target) + { + $dir = $this->getDirectory($target . 'css'); + copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css'); + copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css'); + copy($this->templatePath . 'css/style.css', $dir . 'style.css'); + + $dir = $this->getDirectory($target . 'fonts'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.eot', $dir . 'glyphicons-halflings-regular.eot'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.svg', $dir . 'glyphicons-halflings-regular.svg'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.ttf', $dir . 'glyphicons-halflings-regular.ttf'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff', $dir . 'glyphicons-halflings-regular.woff'); + copy($this->templatePath . 'fonts/glyphicons-halflings-regular.woff2', $dir . 'glyphicons-halflings-regular.woff2'); + + $dir = $this->getDirectory($target . 'js'); + copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js'); + copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js'); + copy($this->templatePath . 'js/holder.min.js', $dir . 'holder.min.js'); + copy($this->templatePath . 'js/html5shiv.min.js', $dir . 'html5shiv.min.js'); + copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js'); + copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js'); + copy($this->templatePath . 'js/respond.min.js', $dir . 'respond.min.js'); + } + + /** + * @param string $directory + * + * @return string + * + * @throws RuntimeException + */ + private function getDirectory($directory) + { + if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) { + $directory .= DIRECTORY_SEPARATOR; + } + + if (is_dir($directory)) { + return $directory; + } + + if (@mkdir($directory, 0777, true)) { + return $directory; + } + + throw new RuntimeException( + sprintf( + 'Directory "%s" does not exist.', + $directory + ) + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php new file mode 100644 index 0000000000000000000000000000000000000000..e5a2f0d0ce0f489994ed2eefdf6a47183cf4bb79 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php @@ -0,0 +1,298 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode; +use SebastianBergmann\CodeCoverage\Node\File as FileNode; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; +use SebastianBergmann\Environment\Runtime; +use SebastianBergmann\Version; + +/** + * Base class for node renderers. + */ +abstract class Renderer +{ + /** + * @var string + */ + protected $templatePath; + + /** + * @var string + */ + protected $generator; + + /** + * @var string + */ + protected $date; + + /** + * @var int + */ + protected $lowUpperBound; + + /** + * @var int + */ + protected $highLowerBound; + + /** + * @var string + */ + protected $version; + + /** + * Constructor. + * + * @param string $templatePath + * @param string $generator + * @param string $date + * @param int $lowUpperBound + * @param int $highLowerBound + */ + public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) + { + $version = new Version('4.0.7', dirname(dirname(dirname(dirname(__DIR__))))); + + $this->templatePath = $templatePath; + $this->generator = $generator; + $this->date = $date; + $this->lowUpperBound = $lowUpperBound; + $this->highLowerBound = $highLowerBound; + $this->version = $version->getVersion(); + } + + /** + * @param \Text_Template $template + * @param array $data + * + * @return string + */ + protected function renderItemTemplate(\Text_Template $template, array $data) + { + $numSeparator = ' / '; + + if (isset($data['numClasses']) && $data['numClasses'] > 0) { + $classesLevel = $this->getColorLevel($data['testedClassesPercent']); + + $classesNumber = $data['numTestedClasses'] . $numSeparator . + $data['numClasses']; + + $classesBar = $this->getCoverageBar( + $data['testedClassesPercent'] + ); + } else { + $classesLevel = ''; + $classesNumber = '0' . $numSeparator . '0'; + $classesBar = ''; + $data['testedClassesPercentAsString'] = 'n/a'; + } + + if ($data['numMethods'] > 0) { + $methodsLevel = $this->getColorLevel($data['testedMethodsPercent']); + + $methodsNumber = $data['numTestedMethods'] . $numSeparator . + $data['numMethods']; + + $methodsBar = $this->getCoverageBar( + $data['testedMethodsPercent'] + ); + } else { + $methodsLevel = ''; + $methodsNumber = '0' . $numSeparator . '0'; + $methodsBar = ''; + $data['testedMethodsPercentAsString'] = 'n/a'; + } + + if ($data['numExecutableLines'] > 0) { + $linesLevel = $this->getColorLevel($data['linesExecutedPercent']); + + $linesNumber = $data['numExecutedLines'] . $numSeparator . + $data['numExecutableLines']; + + $linesBar = $this->getCoverageBar( + $data['linesExecutedPercent'] + ); + } else { + $linesLevel = ''; + $linesNumber = '0' . $numSeparator . '0'; + $linesBar = ''; + $data['linesExecutedPercentAsString'] = 'n/a'; + } + + $template->setVar( + [ + 'icon' => isset($data['icon']) ? $data['icon'] : '', + 'crap' => isset($data['crap']) ? $data['crap'] : '', + 'name' => $data['name'], + 'lines_bar' => $linesBar, + 'lines_executed_percent' => $data['linesExecutedPercentAsString'], + 'lines_level' => $linesLevel, + 'lines_number' => $linesNumber, + 'methods_bar' => $methodsBar, + 'methods_tested_percent' => $data['testedMethodsPercentAsString'], + 'methods_level' => $methodsLevel, + 'methods_number' => $methodsNumber, + 'classes_bar' => $classesBar, + 'classes_tested_percent' => isset($data['testedClassesPercentAsString']) ? $data['testedClassesPercentAsString'] : '', + 'classes_level' => $classesLevel, + 'classes_number' => $classesNumber + ] + ); + + return $template->render(); + } + + /** + * @param \Text_Template $template + * @param AbstractNode $node + */ + protected function setCommonTemplateVariables(\Text_Template $template, AbstractNode $node) + { + $template->setVar( + [ + 'id' => $node->getId(), + 'full_path' => $node->getPath(), + 'path_to_root' => $this->getPathToRoot($node), + 'breadcrumbs' => $this->getBreadcrumbs($node), + 'date' => $this->date, + 'version' => $this->version, + 'runtime' => $this->getRuntimeString(), + 'generator' => $this->generator, + 'low_upper_bound' => $this->lowUpperBound, + 'high_lower_bound' => $this->highLowerBound + ] + ); + } + + protected function getBreadcrumbs(AbstractNode $node) + { + $breadcrumbs = ''; + $path = $node->getPathAsArray(); + $pathToRoot = []; + $max = count($path); + + if ($node instanceof FileNode) { + $max--; + } + + for ($i = 0; $i < $max; $i++) { + $pathToRoot[] = str_repeat('../', $i); + } + + foreach ($path as $step) { + if ($step !== $node) { + $breadcrumbs .= $this->getInactiveBreadcrumb( + $step, + array_pop($pathToRoot) + ); + } else { + $breadcrumbs .= $this->getActiveBreadcrumb($step); + } + } + + return $breadcrumbs; + } + + protected function getActiveBreadcrumb(AbstractNode $node) + { + $buffer = sprintf( + '
  • %s
  • ' . "\n", + $node->getName() + ); + + if ($node instanceof DirectoryNode) { + $buffer .= '
  • (Dashboard)
  • ' . "\n"; + } + + return $buffer; + } + + protected function getInactiveBreadcrumb(AbstractNode $node, $pathToRoot) + { + return sprintf( + '
  • %s
  • ' . "\n", + $pathToRoot, + $node->getName() + ); + } + + protected function getPathToRoot(AbstractNode $node) + { + $id = $node->getId(); + $depth = substr_count($id, '/'); + + if ($id != 'index' && + $node instanceof DirectoryNode) { + $depth++; + } + + return str_repeat('../', $depth); + } + + protected function getCoverageBar($percent) + { + $level = $this->getColorLevel($percent); + + $template = new \Text_Template( + $this->templatePath . 'coverage_bar.html', + '{{', + '}}' + ); + + $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]); + + return $template->render(); + } + + /** + * @param int $percent + * + * @return string + */ + protected function getColorLevel($percent) + { + if ($percent <= $this->lowUpperBound) { + return 'danger'; + } elseif ($percent > $this->lowUpperBound && + $percent < $this->highLowerBound) { + return 'warning'; + } else { + return 'success'; + } + } + + /** + * @return string + */ + private function getRuntimeString() + { + $runtime = new Runtime; + + $buffer = sprintf( + '%s %s', + $runtime->getVendorUrl(), + $runtime->getName(), + $runtime->getVersion() + ); + + if ($runtime->hasXdebug() && !$runtime->hasPHPDBGCodeCoverage()) { + $buffer .= sprintf( + ' with Xdebug %s', + phpversion('xdebug') + ); + } + + return $buffer; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php new file mode 100644 index 0000000000000000000000000000000000000000..7cde17559212a576df9091c749f2b0e425ad40a3 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php @@ -0,0 +1,302 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; + +/** + * Renders the dashboard for a directory node. + */ +class Dashboard extends Renderer +{ + /** + * @param DirectoryNode $node + * @param string $file + */ + public function render(DirectoryNode $node, $file) + { + $classes = $node->getClassesAndTraits(); + $template = new \Text_Template( + $this->templatePath . 'dashboard.html', + '{{', + '}}' + ); + + $this->setCommonTemplateVariables($template, $node); + + $baseLink = $node->getId() . '/'; + $complexity = $this->complexity($classes, $baseLink); + $coverageDistribution = $this->coverageDistribution($classes); + $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink); + $projectRisks = $this->projectRisks($classes, $baseLink); + + $template->setVar( + [ + 'insufficient_coverage_classes' => $insufficientCoverage['class'], + 'insufficient_coverage_methods' => $insufficientCoverage['method'], + 'project_risks_classes' => $projectRisks['class'], + 'project_risks_methods' => $projectRisks['method'], + 'complexity_class' => $complexity['class'], + 'complexity_method' => $complexity['method'], + 'class_coverage_distribution' => $coverageDistribution['class'], + 'method_coverage_distribution' => $coverageDistribution['method'] + ] + ); + + $template->renderTo($file); + } + + /** + * Returns the data for the Class/Method Complexity charts. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function complexity(array $classes, $baseLink) + { + $result = ['class' => [], 'method' => []]; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($className != '*') { + $methodName = $className . '::' . $methodName; + } + + $result['method'][] = [ + $method['coverage'], + $method['ccn'], + sprintf( + '%s', + str_replace($baseLink, '', $method['link']), + $methodName + ) + ]; + } + + $result['class'][] = [ + $class['coverage'], + $class['ccn'], + sprintf( + '%s', + str_replace($baseLink, '', $class['link']), + $className + ) + ]; + } + + return [ + 'class' => json_encode($result['class']), + 'method' => json_encode($result['method']) + ]; + } + + /** + * Returns the data for the Class / Method Coverage Distribution chart. + * + * @param array $classes + * + * @return array + */ + protected function coverageDistribution(array $classes) + { + $result = [ + 'class' => [ + '0%' => 0, + '0-10%' => 0, + '10-20%' => 0, + '20-30%' => 0, + '30-40%' => 0, + '40-50%' => 0, + '50-60%' => 0, + '60-70%' => 0, + '70-80%' => 0, + '80-90%' => 0, + '90-100%' => 0, + '100%' => 0 + ], + 'method' => [ + '0%' => 0, + '0-10%' => 0, + '10-20%' => 0, + '20-30%' => 0, + '30-40%' => 0, + '40-50%' => 0, + '50-60%' => 0, + '60-70%' => 0, + '70-80%' => 0, + '80-90%' => 0, + '90-100%' => 0, + '100%' => 0 + ] + ]; + + foreach ($classes as $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] == 0) { + $result['method']['0%']++; + } elseif ($method['coverage'] == 100) { + $result['method']['100%']++; + } else { + $key = floor($method['coverage'] / 10) * 10; + $key = $key . '-' . ($key + 10) . '%'; + $result['method'][$key]++; + } + } + + if ($class['coverage'] == 0) { + $result['class']['0%']++; + } elseif ($class['coverage'] == 100) { + $result['class']['100%']++; + } else { + $key = floor($class['coverage'] / 10) * 10; + $key = $key . '-' . ($key + 10) . '%'; + $result['class'][$key]++; + } + } + + return [ + 'class' => json_encode(array_values($result['class'])), + 'method' => json_encode(array_values($result['method'])) + ]; + } + + /** + * Returns the classes / methods with insufficient coverage. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function insufficientCoverage(array $classes, $baseLink) + { + $leastTestedClasses = []; + $leastTestedMethods = []; + $result = ['class' => '', 'method' => '']; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] < $this->highLowerBound) { + if ($className != '*') { + $key = $className . '::' . $methodName; + } else { + $key = $methodName; + } + + $leastTestedMethods[$key] = $method['coverage']; + } + } + + if ($class['coverage'] < $this->highLowerBound) { + $leastTestedClasses[$className] = $class['coverage']; + } + } + + asort($leastTestedClasses); + asort($leastTestedMethods); + + foreach ($leastTestedClasses as $className => $coverage) { + $result['class'] .= sprintf( + ' %s%d%%' . "\n", + str_replace($baseLink, '', $classes[$className]['link']), + $className, + $coverage + ); + } + + foreach ($leastTestedMethods as $methodName => $coverage) { + list($class, $method) = explode('::', $methodName); + + $result['method'] .= sprintf( + ' %s%d%%' . "\n", + str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), + $methodName, + $method, + $coverage + ); + } + + return $result; + } + + /** + * Returns the project risks according to the CRAP index. + * + * @param array $classes + * @param string $baseLink + * + * @return array + */ + protected function projectRisks(array $classes, $baseLink) + { + $classRisks = []; + $methodRisks = []; + $result = ['class' => '', 'method' => '']; + + foreach ($classes as $className => $class) { + foreach ($class['methods'] as $methodName => $method) { + if ($method['coverage'] < $this->highLowerBound && + $method['ccn'] > 1) { + if ($className != '*') { + $key = $className . '::' . $methodName; + } else { + $key = $methodName; + } + + $methodRisks[$key] = $method['crap']; + } + } + + if ($class['coverage'] < $this->highLowerBound && + $class['ccn'] > count($class['methods'])) { + $classRisks[$className] = $class['crap']; + } + } + + arsort($classRisks); + arsort($methodRisks); + + foreach ($classRisks as $className => $crap) { + $result['class'] .= sprintf( + ' %s%d' . "\n", + str_replace($baseLink, '', $classes[$className]['link']), + $className, + $crap + ); + } + + foreach ($methodRisks as $methodName => $crap) { + list($class, $method) = explode('::', $methodName); + + $result['method'] .= sprintf( + ' %s%d' . "\n", + str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']), + $methodName, + $method, + $crap + ); + } + + return $result; + } + + protected function getActiveBreadcrumb(AbstractNode $node) + { + return sprintf( + '
  • %s
  • ' . "\n" . + '
  • (Dashboard)
  • ' . "\n", + $node->getName() + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php new file mode 100644 index 0000000000000000000000000000000000000000..a4b1b96f4ddb0c6309e8b12a64c09477e3947ab7 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node; +use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode; + +/** + * Renders a directory node. + */ +class Directory extends Renderer +{ + /** + * @param DirectoryNode $node + * @param string $file + */ + public function render(DirectoryNode $node, $file) + { + $template = new \Text_Template($this->templatePath . 'directory.html', '{{', '}}'); + + $this->setCommonTemplateVariables($template, $node); + + $items = $this->renderItem($node, true); + + foreach ($node->getDirectories() as $item) { + $items .= $this->renderItem($item); + } + + foreach ($node->getFiles() as $item) { + $items .= $this->renderItem($item); + } + + $template->setVar( + [ + 'id' => $node->getId(), + 'items' => $items + ] + ); + + $template->renderTo($file); + } + + /** + * @param Node $node + * @param bool $total + * + * @return string + */ + protected function renderItem(Node $node, $total = false) + { + $data = [ + 'numClasses' => $node->getNumClassesAndTraits(), + 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), + 'numMethods' => $node->getNumMethods(), + 'numTestedMethods' => $node->getNumTestedMethods(), + 'linesExecutedPercent' => $node->getLineExecutedPercent(false), + 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), + 'numExecutedLines' => $node->getNumExecutedLines(), + 'numExecutableLines' => $node->getNumExecutableLines(), + 'testedMethodsPercent' => $node->getTestedMethodsPercent(false), + 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), + 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), + 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent() + ]; + + if ($total) { + $data['name'] = 'Total'; + } else { + if ($node instanceof DirectoryNode) { + $data['name'] = sprintf( + '%s', + $node->getName(), + $node->getName() + ); + + $data['icon'] = ' '; + } else { + $data['name'] = sprintf( + '%s', + $node->getName(), + $node->getName() + ); + + $data['icon'] = ' '; + } + } + + return $this->renderItemTemplate( + new \Text_Template($this->templatePath . 'directory_item.html', '{{', '}}'), + $data + ); + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php new file mode 100644 index 0000000000000000000000000000000000000000..5461c9e7633fbb1a5ec754832f03c79a115a00b7 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php @@ -0,0 +1,551 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report\Html; + +use SebastianBergmann\CodeCoverage\Node\File as FileNode; +use SebastianBergmann\CodeCoverage\Util; + +/** + * Renders a file node. + */ +class File extends Renderer +{ + /** + * @var int + */ + private $htmlspecialcharsFlags; + + /** + * Constructor. + * + * @param string $templatePath + * @param string $generator + * @param string $date + * @param int $lowUpperBound + * @param int $highLowerBound + */ + public function __construct($templatePath, $generator, $date, $lowUpperBound, $highLowerBound) + { + parent::__construct( + $templatePath, + $generator, + $date, + $lowUpperBound, + $highLowerBound + ); + + $this->htmlspecialcharsFlags = ENT_COMPAT; + + $this->htmlspecialcharsFlags = $this->htmlspecialcharsFlags | ENT_HTML401 | ENT_SUBSTITUTE; + } + + /** + * @param FileNode $node + * @param string $file + */ + public function render(FileNode $node, $file) + { + $template = new \Text_Template($this->templatePath . 'file.html', '{{', '}}'); + + $template->setVar( + [ + 'items' => $this->renderItems($node), + 'lines' => $this->renderSource($node) + ] + ); + + $this->setCommonTemplateVariables($template, $node); + + $template->renderTo($file); + } + + /** + * @param FileNode $node + * + * @return string + */ + protected function renderItems(FileNode $node) + { + $template = new \Text_Template($this->templatePath . 'file_item.html', '{{', '}}'); + + $methodItemTemplate = new \Text_Template( + $this->templatePath . 'method_item.html', + '{{', + '}}' + ); + + $items = $this->renderItemTemplate( + $template, + [ + 'name' => 'Total', + 'numClasses' => $node->getNumClassesAndTraits(), + 'numTestedClasses' => $node->getNumTestedClassesAndTraits(), + 'numMethods' => $node->getNumMethods(), + 'numTestedMethods' => $node->getNumTestedMethods(), + 'linesExecutedPercent' => $node->getLineExecutedPercent(false), + 'linesExecutedPercentAsString' => $node->getLineExecutedPercent(), + 'numExecutedLines' => $node->getNumExecutedLines(), + 'numExecutableLines' => $node->getNumExecutableLines(), + 'testedMethodsPercent' => $node->getTestedMethodsPercent(false), + 'testedMethodsPercentAsString' => $node->getTestedMethodsPercent(), + 'testedClassesPercent' => $node->getTestedClassesAndTraitsPercent(false), + 'testedClassesPercentAsString' => $node->getTestedClassesAndTraitsPercent(), + 'crap' => 'CRAP' + ] + ); + + $items .= $this->renderFunctionItems( + $node->getFunctions(), + $methodItemTemplate + ); + + $items .= $this->renderTraitOrClassItems( + $node->getTraits(), + $template, + $methodItemTemplate + ); + + $items .= $this->renderTraitOrClassItems( + $node->getClasses(), + $template, + $methodItemTemplate + ); + + return $items; + } + + /** + * @param array $items + * @param \Text_Template $template + * @param \Text_Template $methodItemTemplate + * + * @return string + */ + protected function renderTraitOrClassItems(array $items, \Text_Template $template, \Text_Template $methodItemTemplate) + { + if (empty($items)) { + return ''; + } + + $buffer = ''; + + foreach ($items as $name => $item) { + $numMethods = count($item['methods']); + $numTestedMethods = 0; + + foreach ($item['methods'] as $method) { + if ($method['executedLines'] == $method['executableLines']) { + $numTestedMethods++; + } + } + + if ($item['executableLines'] > 0) { + $numClasses = 1; + $numTestedClasses = $numTestedMethods == $numMethods ? 1 : 0; + $linesExecutedPercentAsString = Util::percent( + $item['executedLines'], + $item['executableLines'], + true + ); + } else { + $numClasses = 'n/a'; + $numTestedClasses = 'n/a'; + $linesExecutedPercentAsString = 'n/a'; + } + + $buffer .= $this->renderItemTemplate( + $template, + [ + 'name' => $name, + 'numClasses' => $numClasses, + 'numTestedClasses' => $numTestedClasses, + 'numMethods' => $numMethods, + 'numTestedMethods' => $numTestedMethods, + 'linesExecutedPercent' => Util::percent( + $item['executedLines'], + $item['executableLines'], + false + ), + 'linesExecutedPercentAsString' => $linesExecutedPercentAsString, + 'numExecutedLines' => $item['executedLines'], + 'numExecutableLines' => $item['executableLines'], + 'testedMethodsPercent' => Util::percent( + $numTestedMethods, + $numMethods, + false + ), + 'testedMethodsPercentAsString' => Util::percent( + $numTestedMethods, + $numMethods, + true + ), + 'testedClassesPercent' => Util::percent( + $numTestedMethods == $numMethods ? 1 : 0, + 1, + false + ), + 'testedClassesPercentAsString' => Util::percent( + $numTestedMethods == $numMethods ? 1 : 0, + 1, + true + ), + 'crap' => $item['crap'] + ] + ); + + foreach ($item['methods'] as $method) { + $buffer .= $this->renderFunctionOrMethodItem( + $methodItemTemplate, + $method, + ' ' + ); + } + } + + return $buffer; + } + + /** + * @param array $functions + * @param \Text_Template $template + * + * @return string + */ + protected function renderFunctionItems(array $functions, \Text_Template $template) + { + if (empty($functions)) { + return ''; + } + + $buffer = ''; + + foreach ($functions as $function) { + $buffer .= $this->renderFunctionOrMethodItem( + $template, + $function + ); + } + + return $buffer; + } + + /** + * @param \Text_Template $template + * + * @return string + */ + protected function renderFunctionOrMethodItem(\Text_Template $template, array $item, $indent = '') + { + $numTestedItems = $item['executedLines'] == $item['executableLines'] ? 1 : 0; + + return $this->renderItemTemplate( + $template, + [ + 'name' => sprintf( + '%s%s', + $indent, + $item['startLine'], + htmlspecialchars($item['signature']), + isset($item['functionName']) ? $item['functionName'] : $item['methodName'] + ), + 'numMethods' => 1, + 'numTestedMethods' => $numTestedItems, + 'linesExecutedPercent' => Util::percent( + $item['executedLines'], + $item['executableLines'], + false + ), + 'linesExecutedPercentAsString' => Util::percent( + $item['executedLines'], + $item['executableLines'], + true + ), + 'numExecutedLines' => $item['executedLines'], + 'numExecutableLines' => $item['executableLines'], + 'testedMethodsPercent' => Util::percent( + $numTestedItems, + 1, + false + ), + 'testedMethodsPercentAsString' => Util::percent( + $numTestedItems, + 1, + true + ), + 'crap' => $item['crap'] + ] + ); + } + + /** + * @param FileNode $node + * + * @return string + */ + protected function renderSource(FileNode $node) + { + $coverageData = $node->getCoverageData(); + $testData = $node->getTestData(); + $codeLines = $this->loadFile($node->getPath()); + $lines = ''; + $i = 1; + + foreach ($codeLines as $line) { + $trClass = ''; + $popoverContent = ''; + $popoverTitle = ''; + + if (array_key_exists($i, $coverageData)) { + $numTests = count($coverageData[$i]); + + if ($coverageData[$i] === null) { + $trClass = ' class="warning"'; + } elseif ($numTests == 0) { + $trClass = ' class="danger"'; + } else { + $lineCss = 'covered-by-large-tests'; + $popoverContent = '
      '; + + if ($numTests > 1) { + $popoverTitle = $numTests . ' tests cover line ' . $i; + } else { + $popoverTitle = '1 test covers line ' . $i; + } + + foreach ($coverageData[$i] as $test) { + if ($lineCss == 'covered-by-large-tests' && $testData[$test]['size'] == 'medium') { + $lineCss = 'covered-by-medium-tests'; + } elseif ($testData[$test]['size'] == 'small') { + $lineCss = 'covered-by-small-tests'; + } + + switch ($testData[$test]['status']) { + case 0: + switch ($testData[$test]['size']) { + case 'small': + $testCSS = ' class="covered-by-small-tests"'; + break; + + case 'medium': + $testCSS = ' class="covered-by-medium-tests"'; + break; + + default: + $testCSS = ' class="covered-by-large-tests"'; + break; + } + break; + + case 1: + case 2: + $testCSS = ' class="warning"'; + break; + + case 3: + $testCSS = ' class="danger"'; + break; + + case 4: + $testCSS = ' class="danger"'; + break; + + default: + $testCSS = ''; + } + + $popoverContent .= sprintf( + '%s', + $testCSS, + htmlspecialchars($test) + ); + } + + $popoverContent .= '
    '; + $trClass = ' class="' . $lineCss . ' popin"'; + } + } + + if (!empty($popoverTitle)) { + $popover = sprintf( + ' data-title="%s" data-content="%s" data-placement="bottom" data-html="true"', + $popoverTitle, + htmlspecialchars($popoverContent) + ); + } else { + $popover = ''; + } + + $lines .= sprintf( + ' %s' . "\n", + $trClass, + $popover, + $i, + $i, + $i, + $line + ); + + $i++; + } + + return $lines; + } + + /** + * @param string $file + * + * @return array + */ + protected function loadFile($file) + { + $buffer = file_get_contents($file); + $tokens = token_get_all($buffer); + $result = ['']; + $i = 0; + $stringFlag = false; + $fileEndsWithNewLine = substr($buffer, -1) == "\n"; + + unset($buffer); + + foreach ($tokens as $j => $token) { + if (is_string($token)) { + if ($token === '"' && $tokens[$j - 1] !== '\\') { + $result[$i] .= sprintf( + '%s', + htmlspecialchars($token) + ); + + $stringFlag = !$stringFlag; + } else { + $result[$i] .= sprintf( + '%s', + htmlspecialchars($token) + ); + } + + continue; + } + + list($token, $value) = $token; + + $value = str_replace( + ["\t", ' '], + ['    ', ' '], + htmlspecialchars($value, $this->htmlspecialcharsFlags) + ); + + if ($value === "\n") { + $result[++$i] = ''; + } else { + $lines = explode("\n", $value); + + foreach ($lines as $jj => $line) { + $line = trim($line); + + if ($line !== '') { + if ($stringFlag) { + $colour = 'string'; + } else { + switch ($token) { + case T_INLINE_HTML: + $colour = 'html'; + break; + + case T_COMMENT: + case T_DOC_COMMENT: + $colour = 'comment'; + break; + + case T_ABSTRACT: + case T_ARRAY: + case T_AS: + case T_BREAK: + case T_CALLABLE: + case T_CASE: + case T_CATCH: + case T_CLASS: + case T_CLONE: + case T_CONTINUE: + case T_DEFAULT: + case T_ECHO: + case T_ELSE: + case T_ELSEIF: + case T_EMPTY: + case T_ENDDECLARE: + case T_ENDFOR: + case T_ENDFOREACH: + case T_ENDIF: + case T_ENDSWITCH: + case T_ENDWHILE: + case T_EXIT: + case T_EXTENDS: + case T_FINAL: + case T_FINALLY: + case T_FOREACH: + case T_FUNCTION: + case T_GLOBAL: + case T_IF: + case T_IMPLEMENTS: + case T_INCLUDE: + case T_INCLUDE_ONCE: + case T_INSTANCEOF: + case T_INSTEADOF: + case T_INTERFACE: + case T_ISSET: + case T_LOGICAL_AND: + case T_LOGICAL_OR: + case T_LOGICAL_XOR: + case T_NAMESPACE: + case T_NEW: + case T_PRIVATE: + case T_PROTECTED: + case T_PUBLIC: + case T_REQUIRE: + case T_REQUIRE_ONCE: + case T_RETURN: + case T_STATIC: + case T_THROW: + case T_TRAIT: + case T_TRY: + case T_UNSET: + case T_USE: + case T_VAR: + case T_WHILE: + case T_YIELD: + $colour = 'keyword'; + break; + + default: + $colour = 'default'; + } + } + + $result[$i] .= sprintf( + '%s', + $colour, + $line + ); + } + + if (isset($lines[$jj + 1])) { + $result[++$i] = ''; + } + } + } + } + + if ($fileEndsWithNewLine) { + unset($result[count($result)-1]); + } + + return $result; + } +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..5a09c354dcb52c30af19e4d85044ea99513854ad --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist @@ -0,0 +1,5 @@ +
    +
    + {{percent}}% covered ({{level}}) +
    +
    diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css new file mode 100644 index 0000000000000000000000000000000000000000..ed3905e0e0c91d4ed7d8aa14412dffeb038745ff --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css new file mode 100644 index 0000000000000000000000000000000000000000..7a6f7fe90c69cdbb23a7d27e5fcbd20286fe5b8f --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css @@ -0,0 +1 @@ +.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc} \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css new file mode 100644 index 0000000000000000000000000000000000000000..824fb3171d6bab6e39f59684147613705bc9557a --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css @@ -0,0 +1,122 @@ +body { + padding-top: 10px; +} + +.popover { + max-width: none; +} + +.glyphicon { + margin-right:.25em; +} + +.table-bordered>thead>tr>td { + border-bottom-width: 1px; +} + +.table tbody>tr>td, .table thead>tr>td { + padding-top: 3px; + padding-bottom: 3px; +} + +.table-condensed tbody>tr>td { + padding-top: 0; + padding-bottom: 0; +} + +.table .progress { + margin-bottom: inherit; +} + +.table-borderless th, .table-borderless td { + border: 0 !important; +} + +.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success { + background-color: #dff0d8; +} + +.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests { + background-color: #c3e3b5; +} + +.table tbody tr.covered-by-small-tests, li.covered-by-small-tests { + background-color: #99cb84; +} + +.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger { + background-color: #f2dede; +} + +.table tbody td.warning, li.warning, span.warning { + background-color: #fcf8e3; +} + +.table tbody td.info { + background-color: #d9edf7; +} + +td.big { + width: 117px; +} + +td.small { +} + +td.codeLine { + font-family: monospace; + white-space: pre; +} + +td span.comment { + color: #888a85; +} + +td span.default { + color: #2e3436; +} + +td span.html { + color: #888a85; +} + +td span.keyword { + color: #2e3436; + font-weight: bold; +} + +pre span.string { + color: #2e3436; +} + +span.success, span.warning, span.danger { + margin-right: 2px; + padding-left: 10px; + padding-right: 10px; + text-align: center; +} + +#classCoverageDistribution, #classComplexity { + height: 200px; + width: 475px; +} + +#toplink { + position: fixed; + left: 5px; + bottom: 5px; + outline: 0; +} + +svg text { + font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: #666; + fill: #666; +} + +.scrollbox { + height:245px; + overflow-x:hidden; + overflow-y:scroll; +} diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..8bdf04d8370934a7fb67731d7a7a5525f8380b78 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist @@ -0,0 +1,284 @@ + + + + + Dashboard for {{full_path}} + + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    Classes

    +
    +
    +
    +
    +

    Coverage Distribution

    +
    + +
    +
    +
    +

    Complexity

    +
    + +
    +
    +
    +
    +
    +

    Insufficient Coverage

    +
    + + + + + + + + +{{insufficient_coverage_classes}} + +
    ClassCoverage
    +
    +
    +
    +

    Project Risks

    +
    + + + + + + + + +{{project_risks_classes}} + +
    ClassCRAP
    +
    +
    +
    +
    +
    +

    Methods

    +
    +
    +
    +
    +

    Coverage Distribution

    +
    + +
    +
    +
    +

    Complexity

    +
    + +
    +
    +
    +
    +
    +

    Insufficient Coverage

    +
    + + + + + + + + +{{insufficient_coverage_methods}} + +
    MethodCoverage
    +
    +
    +
    +

    Project Risks

    +
    + + + + + + + + +{{project_risks_methods}} + +
    MethodCRAP
    +
    +
    +
    + +
    + + + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..29fbf23eadfe673e1a534659d643630fcbcfebae --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist @@ -0,0 +1,61 @@ + + + + + Code Coverage for {{full_path}} + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +{{items}} + +
     
    Code Coverage
     
    Lines
    Functions and Methods
    Classes and Traits
    +
    +
    +

    Legend

    +

    + Low: 0% to {{low_upper_bound}}% + Medium: {{low_upper_bound}}% to {{high_lower_bound}}% + High: {{high_lower_bound}}% to 100% +

    +

    + Generated by php-code-coverage {{version}} using {{runtime}}{{generator}} at {{date}}. +

    +
    +
    + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..78dbb3565ce8608af07993c313816b1ab6dca0e4 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist @@ -0,0 +1,13 @@ + + {{icon}}{{name}} + {{lines_bar}} +
    {{lines_executed_percent}}
    +
    {{lines_number}}
    + {{methods_bar}} +
    {{methods_tested_percent}}
    +
    {{methods_number}}
    + {{classes_bar}} +
    {{classes_tested_percent}}
    +
    {{classes_number}}
    + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..8c42d4e8185b6da0ced8839183bc976104a529c7 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist @@ -0,0 +1,90 @@ + + + + + Code Coverage for {{full_path}} + + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + +{{items}} + +
     
    Code Coverage
     
    Classes and Traits
    Functions and Methods
    Lines
    + + +{{lines}} + +
    +
    +
    +

    Legend

    +

    + Executed + Not Executed + Dead Code +

    +

    + Generated by php-code-coverage {{version}} using {{runtime}}{{generator}} at {{date}}. +

    + +
    +
    + + + + + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist new file mode 100644 index 0000000000000000000000000000000000000000..756fdd69b1b3af315b4df12c89b9129d5da794c4 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist @@ -0,0 +1,14 @@ + + {{name}} + {{classes_bar}} +
    {{classes_tested_percent}}
    +
    {{classes_number}}
    + {{methods_bar}} +
    {{methods_tested_percent}}
    +
    {{methods_number}}
    + {{crap}} + {{lines_bar}} +
    {{lines_executed_percent}}
    +
    {{lines_number}}
    + + diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.eot differ diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000000000000000000000000000000000000..94fb5490a2ed10b2c69a4a567a4fd2e4f706d841 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.ttf differ diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35 Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff differ diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 Binary files /dev/null and b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9bcd2fccaed9442f1460191d6670ca5e8e08520c --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js new file mode 100644 index 0000000000000000000000000000000000000000..166487309a774a196d29b52ad29f14d8a16f9509 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js @@ -0,0 +1,5 @@ +!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++ie;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++aa;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)0?0:3:xo(r[0]-e)0?2:1:xo(r[1]-t)0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){ +r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)Uo?{x:s,y:xo(t-s)Uo?{x:xo(e-g)Uo?{x:h,y:xo(t-h)Uo?{x:xo(e-p)=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.yd||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.yr||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.yp){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.xu||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return ur;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++oe;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.ro;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++0;h--)o.push(u(c)*h);for(c=0;o[c]l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++oe?[NaN,NaN]:[e>0?a[e-1]:n[0],et?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ir&&(e=r)}else{for(;++i=r){e=r;break}for(;++ir&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i=r){e=r;break}for(;++ie&&(e=r)}else{for(;++i=r){e=r;break}for(;++ie&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}else{for(;++u=r){e=i=r;break}for(;++ur&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++ii){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++rr;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++uu;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], +shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++rn?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.xy&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++lt;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++cs?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u0)for(u=-1;++u=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.xg.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++it?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++oe&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0; +if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++ue.dx)&&(f=e.dx);++ue&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++au;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js new file mode 100644 index 0000000000000000000000000000000000000000..6bfc844ba5656c29bf2d99aec4ffcb335cf7f4a4 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/holder.min.js @@ -0,0 +1,12 @@ +/*! + +Holder - client side image placeholders +Version 2.7.1+6hydf +© 2015 Ivan Malopinsky - http://imsky.co + +Site: http://holderjs.com +Issues: https://github.com/imsky/holder/issues +License: http://opensource.org/licenses/MIT + +*/ +!function(a){if(a.document){var b=a.document;b.querySelectorAll||(b.querySelectorAll=function(c){var d,e=b.createElement("style"),f=[];for(b.documentElement.firstChild.appendChild(e),b._qsa=[],e.styleSheet.cssText=c+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",a.scrollBy(0,0),e.parentNode.removeChild(e);b._qsa.length;)d=b._qsa.shift(),d.style.removeAttribute("x-qsa"),f.push(d);return b._qsa=null,f}),b.querySelector||(b.querySelector=function(a){var c=b.querySelectorAll(a);return c.length?c[0]:null}),b.getElementsByClassName||(b.getElementsByClassName=function(a){return a=String(a).replace(/^|\s+/g,"."),b.querySelectorAll(a)}),Object.keys||(Object.keys=function(a){if(a!==Object(a))throw TypeError("Object.keys called on non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}),function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";a.atob=a.atob||function(a){a=String(a);var c,d=0,e=[],f=0,g=0;if(a=a.replace(/\s/g,""),a.length%4===0&&(a=a.replace(/=+$/,"")),a.length%4===1)throw Error("InvalidCharacterError");if(/[^+/0-9A-Za-z]/.test(a))throw Error("InvalidCharacterError");for(;d>16&255)),e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f)),g=0,f=0),d+=1;return 12===g?(f>>=4,e.push(String.fromCharCode(255&f))):18===g&&(f>>=2,e.push(String.fromCharCode(f>>8&255)),e.push(String.fromCharCode(255&f))),e.join("")},a.btoa=a.btoa||function(a){a=String(a);var c,d,e,f,g,h,i,j=0,k=[];if(/[^\x00-\xFF]/.test(a))throw Error("InvalidCharacterError");for(;j>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,j===a.length+2?(h=64,i=64):j===a.length+1&&(i=64),k.push(b.charAt(f),b.charAt(g),b.charAt(h),b.charAt(i));return k.join("")}}(a),Object.prototype.hasOwnProperty||(Object.prototype.hasOwnProperty=function(a){var b=this.__proto__||this.constructor.prototype;return a in this&&(!(a in b)||b[a]!==this[a])}),function(){if("performance"in a==!1&&(a.performance={}),Date.now=Date.now||function(){return(new Date).getTime()},"now"in a.performance==!1){var b=Date.now();performance.timing&&performance.timing.navigationStart&&(b=performance.timing.navigationStart),a.performance.now=function(){return Date.now()-b}}}(),a.requestAnimationFrame||(a.webkitRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return webkitRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=webkitCancelAnimationFrame}(a):a.mozRequestAnimationFrame?!function(a){a.requestAnimationFrame=function(b){return mozRequestAnimationFrame(function(){b(a.performance.now())})},a.cancelAnimationFrame=mozCancelAnimationFrame}(a):!function(a){a.requestAnimationFrame=function(b){return a.setTimeout(b,1e3/60)},a.cancelAnimationFrame=a.clearTimeout}(a))}}(this),function(a,b){"object"==typeof exports&&"object"==typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):"object"==typeof exports?exports.Holder=b():a.Holder=b()}(this,function(){return function(a){function b(d){if(c[d])return c[d].exports;var e=c[d]={exports:{},id:d,loaded:!1};return a[d].call(e.exports,e,e.exports,b),e.loaded=!0,e.exports}var c={};return b.m=a,b.c=c,b.p="",b(0)}([function(a,b,c){(function(b){function d(a,b,c,d){var f=e(c.substr(c.lastIndexOf(a.domain)),a);f&&h({mode:null,el:d,flags:f,engineSettings:b})}function e(a,b){var c={theme:B(J.settings.themes.gray,null),stylesheets:b.stylesheets,instanceOptions:b};return a.match(/([\d]+p?)x([\d]+p?)(?:\?|$)/)?f(a,c):g(a,c)}function f(a,b){var c=a.split("?"),d=c[0].split("/");b.holderURL=a;var e=d[1],f=e.match(/([\d]+p?)x([\d]+p?)/);if(!f)return!1;if(b.fluid=-1!==e.indexOf("p"),b.dimensions={width:f[1].replace("p","%"),height:f[2].replace("p","%")},2===c.length){var g=A.parse(c[1]);if(g.bg&&(b.theme.background=(-1===g.bg.indexOf("#")?"#":"")+g.bg),g.fg&&(b.theme.foreground=(-1===g.fg.indexOf("#")?"#":"")+g.fg),g.theme&&b.instanceOptions.themes.hasOwnProperty(g.theme)&&(b.theme=B(b.instanceOptions.themes[g.theme],null)),g.text&&(b.text=g.text),g.textmode&&(b.textmode=g.textmode),g.size&&(b.size=g.size),g.font&&(b.font=g.font),g.align&&(b.align=g.align),b.nowrap=z.truthy(g.nowrap),b.auto=z.truthy(g.auto),z.truthy(g.random)){J.vars.cache.themeKeys=J.vars.cache.themeKeys||Object.keys(b.instanceOptions.themes);var h=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(b.instanceOptions.themes[h],null)}}return b}function g(a,b){var c=!1,d=String.fromCharCode(11),e=a.replace(/([^\\])\//g,"$1"+d).split(d),f=/%[0-9a-f]{2}/gi,g=b.instanceOptions;b.holderURL=[];for(var h=e.length,i=0;h>i;i++){var j=e[i];if(j.match(f))try{j=decodeURIComponent(j)}catch(k){j=e[i]}var l=!1;if(J.flags.dimensions.match(j))c=!0,b.dimensions=J.flags.dimensions.output(j),l=!0;else if(J.flags.fluid.match(j))c=!0,b.dimensions=J.flags.fluid.output(j),b.fluid=!0,l=!0;else if(J.flags.textmode.match(j))b.textmode=J.flags.textmode.output(j),l=!0;else if(J.flags.colors.match(j)){var m=J.flags.colors.output(j);b.theme=B(b.theme,m),l=!0}else if(g.themes[j])g.themes.hasOwnProperty(j)&&(b.theme=B(g.themes[j],null)),l=!0;else if(J.flags.font.match(j))b.font=J.flags.font.output(j),l=!0;else if(J.flags.auto.match(j))b.auto=!0,l=!0;else if(J.flags.text.match(j))b.text=J.flags.text.output(j),l=!0;else if(J.flags.size.match(j))b.size=J.flags.size.output(j),l=!0;else if(J.flags.random.match(j)){null==J.vars.cache.themeKeys&&(J.vars.cache.themeKeys=Object.keys(g.themes));var n=J.vars.cache.themeKeys[0|Math.random()*J.vars.cache.themeKeys.length];b.theme=B(g.themes[n],null),l=!0}l&&b.holderURL.push(j)}return b.holderURL.unshift(g.domain),b.holderURL=b.holderURL.join("/"),c?b:!1}function h(a){var b=a.mode,c=a.el,d=a.flags,e=a.engineSettings,f=d.dimensions,g=d.theme,h=f.width+"x"+f.height;if(b=null==b?d.fluid?"fluid":"image":b,null!=d.text&&(g.text=d.text,"object"===c.nodeName.toLowerCase())){for(var j=g.text.split("\\n"),k=0;k1){var n,o=0,p=0,q=0;j=new e.Group("line"+q),("left"===a.align||"right"===a.align)&&(m=a.width*(1-2*(1-J.setup.lineWrapRatio)));for(var r=0;r=m||t===!0)&&(b(g,j,o,g.properties.leading),g.add(j),o=0,p+=g.properties.leading,q+=1,j=new e.Group("line"+q),j.y=p),t!==!0&&(i.moveTo(o,0),o+=h.spaceWidth+s.width,j.add(i))}if(b(g,j,o,g.properties.leading),g.add(j),"left"===a.align)g.moveTo(a.width-l,null,null);else if("right"===a.align){for(n in g.children)j=g.children[n],j.moveTo(a.width-j.width,null,null);g.moveTo(0-(a.width-l),null,null)}else{for(n in g.children)j=g.children[n],j.moveTo((g.width-j.width)/2,null,null);g.moveTo((a.width-g.width)/2,null,null)}g.moveTo(null,(a.height-g.height)/2,null),(a.height-g.height)/2<0&&g.moveTo(null,0,null)}else i=new e.Text(a.text),j=new e.Group("line0"),j.add(i),g.add(j),"left"===a.align?g.moveTo(a.width-l,null,null):"right"===a.align?g.moveTo(0-(a.width-l),null,null):g.moveTo((a.width-h.boundingBox.width)/2,null,null),g.moveTo(null,(a.height-h.boundingBox.height)/2,null);return d}function k(a,b,c){var d=parseInt(a,10),e=parseInt(b,10),f=Math.max(d,e),g=Math.min(d,e),h=.8*Math.min(g,f*J.defaults.scale);return Math.round(Math.max(c,h))}function l(a){var b;b=null==a||null==a.nodeType?J.vars.resizableImages:[a];for(var c=0,d=b.length;d>c;c++){var e=b[c];if(e.holderData){var f=e.holderData.flags,g=D(e);if(g){if(!e.holderData.resizeUpdate)continue;if(f.fluid&&f.auto){var h=e.holderData.fluidConfig;switch(h.mode){case"width":g.height=g.width/h.ratio;break;case"height":g.width=g.height*h.ratio}}var j={mode:"image",holderSettings:{dimensions:g,theme:f.theme,flags:f},el:e,engineSettings:e.holderData.engineSettings};"exact"==f.textmode&&(f.exactDimensions=g,j.holderSettings.dimensions=f.dimensions),i(j)}else p(e)}}}function m(a){if(a.holderData){var b=D(a);if(b){var c=a.holderData.flags,d={fluidHeight:"%"==c.dimensions.height.slice(-1),fluidWidth:"%"==c.dimensions.width.slice(-1),mode:null,initialDimensions:b};d.fluidWidth&&!d.fluidHeight?(d.mode="width",d.ratio=d.initialDimensions.width/parseFloat(c.dimensions.height)):!d.fluidWidth&&d.fluidHeight&&(d.mode="height",d.ratio=parseFloat(c.dimensions.width)/d.initialDimensions.height),a.holderData.fluidConfig=d}else p(a)}}function n(){for(var a,c=[],d=Object.keys(J.vars.invisibleImages),e=0,f=d.length;f>e;e++)a=J.vars.invisibleImages[d[e]],D(a)&&"img"==a.nodeName.toLowerCase()&&(c.push(a),delete J.vars.invisibleImages[d[e]]);c.length&&I.run({images:c}),b.requestAnimationFrame(n)}function o(){J.vars.visibilityCheckStarted||(b.requestAnimationFrame(n),J.vars.visibilityCheckStarted=!0)}function p(a){a.holderData.invisibleId||(J.vars.invisibleId+=1,J.vars.invisibleImages["i"+J.vars.invisibleId]=a,a.holderData.invisibleId=J.vars.invisibleId)}function q(a,b){return null==b?document.createElement(a):document.createElementNS(b,a)}function r(a,b){for(var c in b)a.setAttribute(c,b[c])}function s(a,b,c){var d,e;null==a?(a=q("svg",E),d=q("defs",E),e=q("style",E),r(e,{type:"text/css"}),d.appendChild(e),a.appendChild(d)):e=a.querySelector("style"),a.webkitMatchesSelector&&a.setAttribute("xmlns",E);for(var f=0;f=0;h--){var i=g.createProcessingInstruction("xml-stylesheet",'href="'+f[h]+'" rel="stylesheet"');g.insertBefore(i,g.firstChild)}g.removeChild(g.documentElement),e=d.serializeToString(g)}var j=d.serializeToString(a);return j=j.replace(/\&(\#[0-9]{2,}\;)/g,"&$1"),e+j}}function u(){return b.DOMParser?(new DOMParser).parseFromString("","application/xml"):void 0}function v(a){J.vars.debounceTimer||a.call(this),J.vars.debounceTimer&&b.clearTimeout(J.vars.debounceTimer),J.vars.debounceTimer=b.setTimeout(function(){J.vars.debounceTimer=null,a.call(this)},J.setup.debounce)}function w(){v(function(){l(null)})}var x=c(1),y=c(2),z=c(3),A=c(4),B=z.extend,C=z.getNodeArray,D=z.dimensionCheck,E="http://www.w3.org/2000/svg",F=8,G="2.7.1",H="\nCreated with Holder.js "+G+".\nLearn more at http://holderjs.com\n(c) 2012-2015 Ivan Malopinsky - http://imsky.co\n",I={version:G,addTheme:function(a,b){return null!=a&&null!=b&&(J.settings.themes[a]=b),delete J.vars.cache.themeKeys,this},addImage:function(a,b){var c=document.querySelectorAll(b);if(c.length)for(var d=0,e=c.length;e>d;d++){var f=q("img"),g={};g[J.vars.dataAttr]=a,r(f,g),c[d].appendChild(f)}return this},setResizeUpdate:function(a,b){a.holderData&&(a.holderData.resizeUpdate=!!b,a.holderData.resizeUpdate&&l(a))},run:function(a){a=a||{};var c={},f=B(J.settings,a);J.vars.preempted=!0,J.vars.dataAttr=f.dataAttr||J.vars.dataAttr,c.renderer=f.renderer?f.renderer:J.setup.renderer,-1===J.setup.renderers.join(",").indexOf(c.renderer)&&(c.renderer=J.setup.supportsSVG?"svg":J.setup.supportsCanvas?"canvas":"html");var g=C(f.images),i=C(f.bgnodes),j=C(f.stylenodes),k=C(f.objects);c.stylesheets=[],c.svgXMLStylesheet=!0,c.noFontFallback=f.noFontFallback?f.noFontFallback:!1;for(var l=0;l1){c.nodeValue="";for(var u=0;u=0?b:1)}function f(a){v?e(a):w.push(a)}null==document.readyState&&document.addEventListener&&(document.addEventListener("DOMContentLoaded",function y(){document.removeEventListener("DOMContentLoaded",y,!1),document.readyState="complete"},!1),document.readyState="loading");var g=a.document,h=g.documentElement,i="load",j=!1,k="on"+i,l="complete",m="readyState",n="attachEvent",o="detachEvent",p="addEventListener",q="DOMContentLoaded",r="onreadystatechange",s="removeEventListener",t=p in g,u=j,v=j,w=[];if(g[m]===l)e(b);else if(t)g[p](q,c,j),a[p](i,c,j);else{g[n](r,c),a[n](k,c);try{u=null==a.frameElement&&h}catch(x){}u&&u.doScroll&&!function z(){if(!v){try{u.doScroll("left")}catch(a){return e(z,50)}d(),b()}}()}return f.version="1.4.0",f.isReady=function(){return v},f}a.exports="undefined"!=typeof window&&b(window)},function(a,b,c){var d=c(5),e=function(a){function b(a,b){for(var c in b)a[c]=b[c];return a}var c=1,e=d.defclass({constructor:function(a){c++,this.parent=null,this.children={},this.id=c,this.name="n"+c,null!=a&&(this.name=a),this.x=0,this.y=0,this.z=0,this.width=0,this.height=0},resize:function(a,b){null!=a&&(this.width=a),null!=b&&(this.height=b)},moveTo:function(a,b,c){this.x=null!=a?a:this.x,this.y=null!=b?b:this.y,this.z=null!=c?c:this.z},add:function(a){var b=a.name;if(null!=this.children[b])throw"SceneGraph: child with that name already exists: "+b;this.children[b]=a,a.parent=this}}),f=d(e,function(b){this.constructor=function(){b.constructor.call(this,"root"),this.properties=a}}),g=d(e,function(a){function c(c,d){if(a.constructor.call(this,c),this.properties={fill:"#000"},null!=d)b(this.properties,d);else if(null!=c&&"string"!=typeof c)throw"SceneGraph: invalid node name"}this.Group=d.extend(this,{constructor:c,type:"group"}),this.Rect=d.extend(this,{constructor:c,type:"rect"}),this.Text=d.extend(this,{constructor:function(a){c.call(this),this.properties.text=a},type:"text"})}),h=new f;return this.Shape=g,this.root=h,this};a.exports=e},function(a,b){(function(a){b.extend=function(a,b){var c={};for(var d in a)a.hasOwnProperty(d)&&(c[d]=a[d]);if(null!=b)for(var e in b)b.hasOwnProperty(e)&&(c[e]=b[e]);return c},b.cssProps=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c+":"+a[c]);return b.join(";")},b.encodeHtmlEntity=function(a){for(var b=[],c=0,d=a.length-1;d>=0;d--)c=a.charCodeAt(d),b.unshift(c>128?["&#",c,";"].join(""):a[d]);return b.join("")},b.getNodeArray=function(b){var c=null;return"string"==typeof b?c=document.querySelectorAll(b):a.NodeList&&b instanceof a.NodeList?c=b:a.Node&&b instanceof a.Node?c=[b]:a.HTMLCollection&&b instanceof a.HTMLCollection?c=b:b instanceof Array?c=b:null===b&&(c=[]),c},b.imageExists=function(a,b){var c=new Image;c.onerror=function(){b.call(this,!1)},c.onload=function(){b.call(this,!0)},c.src=a},b.decodeHtmlEntity=function(a){return a.replace(/&#(\d+);/g,function(a,b){return String.fromCharCode(b)})},b.dimensionCheck=function(a){var b={height:a.clientHeight,width:a.clientWidth};return b.height&&b.width?b:!1},b.truthy=function(a){return"string"==typeof a?"true"===a||"yes"===a||"1"===a||"on"===a||"✓"===a:!!a}}).call(b,function(){return this}())},function(a,b,c){var d=encodeURIComponent,e=decodeURIComponent,f=c(6),g=c(7),h=/(\w+)\[(\d+)\]/,i=/\w+\.\w+/;b.parse=function(a){if("string"!=typeof a)return{};if(a=f(a),""===a)return{};"?"===a.charAt(0)&&(a=a.slice(1));for(var b={},c=a.split("&"),d=0;d