Merge branch 'develop'
diff --git a/.gitignore b/.gitignore
index 2ce022f..aeaa68d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,5 @@
 build
 composer.phar
-composer.lock
 docs
 vendor
 .idea
diff --git a/.travis.yml b/.travis.yml
index d8340d0..b10fe09 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,10 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 language: php
 php:
+  - 7.2
+  - 7.1
   - 7.0
   - 5.6
-  - 5.5
 before_script:
   - pear channel-discover pear.phing.info
   - pear install phing/phing
   - phpenv rehash
   - phing
+  - composer install
+script:
+  - phing test
diff --git a/README.md b/README.md
index d8f60f0..4dc3dd9 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
 # Apache PredictionIO PHP SDK
 
-
-[![Build Status](https://travis-ci.org/apache/incubator-predictionio-sdk-php.svg?branch=develop)](https://travis-ci.org/apache/incubator-predictionio-sdk-php)
+[![Build
+Status](https://travis-ci.org/apache/predictionio-sdk-php.svg?branch=develop)](https://travis-ci.org/apache/predictionio-sdk-php)
 
 ## Prerequisites
 
-* PHP 5.4+ (http://php.net/)
+* PHP 5.6+ (http://php.net/)
 * PHP: cURL (http://php.net/manual/en/book.curl.php)
 * Phing (http://www.phing.info/)
 * ApiGen (http://apigen.org/)
@@ -14,9 +14,11 @@
 
 ## Getting Started
 
-The easiest way to install PredictionIO PHP client is to use [Composer](http://getcomposer.org/).
+The easiest way to install PredictionIO PHP client is to use
+[Composer](http://getcomposer.org/).
 
-1. `predictionio` is available on [Packagist](https://packagist.org) and can be installed using [Composer](https://getcomposer.org/):
+1. `predictionio` is available on [Packagist](https://packagist.org) and can be
+installed using [Composer](https://getcomposer.org/):
 
         composer require predictionio/predictionio
 
@@ -75,19 +77,22 @@
 
 ## Bugs and Feature Requests
 
-Use [Apache JIRA](https://issues.apache.org/jira/browse/PIO) to report bugs or request new features.
+Use [Apache JIRA](https://issues.apache.org/jira/browse/PIO) to report bugs or
+request new features.
 
 ## Community
 
 Keep track of development and community news.
 
-*   Subscribe to the user mailing list <mailto:user-subscribe@predictionio.apache.org>
-    and the dev mailing list <mailto:dev-subscribe@predictionio.apache.org>
+*   Subscribe to the [user mailing
+    list](mailto:user-subscribe@predictionio.apache.org) and the [dev mailing
+    list](mailto:dev-subscribe@predictionio.apache.org).
 *   Follow [@PredictionIO](https://twitter.com/PredictionIO) on Twitter.
 
 ## Contributing
 
-Read the [Contribute Code](http://predictionio.apache.org/community/contribute-code/) page.
+Read the [Contribute
+Code](http://predictionio.apache.org/community/contribute-code/) page.
 
 ## License
 
diff --git a/build.xml b/build.xml
index 4355efe..309634f 100644
--- a/build.xml
+++ b/build.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
 <project name="predictionio" default="install-dependencies">
 
   <target name="install-dependencies">
@@ -10,8 +25,10 @@
       </then>
       <else>
         <echo message="Installing composer" />
-        <exec command="curl -s http://getcomposer.org/installer | php" passthru="true" />
-        <exec command="php composer.phar install --dev" passthru="true" />
+        <exec command="php -r &quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&quot;" passthru="true" />
+        <exec command="php -r &quot;if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&quot;" passthru="true" />
+        <exec command="php composer-setup.php" passthru="true" />
+        <exec command="php -r &quot;unlink('composer-setup.php');&quot;" passthru="true" />
       </else>
     </if>
   </target>
@@ -26,7 +43,11 @@
   </target>
 
   <target name="apigen">
-    <exec command="apigen -s src -d docs --title 'PredictionIO API PHP Client'" passthru="true" />
+    <exec command="vendor/apigen/apigen/bin/apigen generate -s src -d docs --title 'PredictionIO API PHP Client'" passthru="true" />
+  </target>
+
+  <target name="test">
+    <exec command="vendor/phpunit/phpunit/phpunit" passthru="true" />
   </target>
 
 </project>
diff --git a/composer.json b/composer.json
index 570dac5..917e5b6 100644
--- a/composer.json
+++ b/composer.json
@@ -15,17 +15,18 @@
     "authors": [
         {
             "name": "Apache PredictionIO",
-            "email": "user@predictionio.apache.org",
+            "email": "dev@predictionio.apache.org",
             "homepage": "http://predictionio.apache.org"
         }
     ],
     "require": {
-        "php": ">=5.5.0",
+        "php": ">=5.6.0",
         "guzzlehttp/guzzle": "^6.1"
     },
     "require-dev": {
-        "symfony/class-loader": "~2.3",
-        "phpunit/phpunit": "^4.7"
+        "symfony/class-loader": "^2.3",
+        "phpunit/phpunit": "^5",
+        "apigen/apigen": "^4.1.2"
     },
     "autoload": {
         "psr-4": {
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..09c15f2
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,3767 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "bae15d857f4a61c45b8021628d1b2f72",
+    "packages": [
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "6.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "shasum": ""
+            },
+            "require": {
+                "guzzlehttp/promises": "^1.0",
+                "guzzlehttp/psr7": "^1.4",
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+                "psr/log": "^1.0"
+            },
+            "suggest": {
+                "psr/log": "Required for using the Log middleware"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.3-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "time": "2018-04-22T15:46:56+00:00"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "v1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "time": "2016-12-20T10:07:11+00:00"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "1.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0",
+                "psr/http-message": "~1.0"
+            },
+            "provide": {
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "time": "2017-03-20T17:10:46+00:00"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "time": "2016-08-06T14:39:51+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "andrewsville/php-token-reflection",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Andrewsville/PHP-Token-Reflection.git",
+                "reference": "e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Andrewsville/PHP-Token-Reflection/zipball/e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee",
+                "reference": "e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "TokenReflection": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3"
+            ],
+            "authors": [
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                }
+            ],
+            "description": "Library emulating the PHP internal reflection using just the tokenized source code.",
+            "homepage": "http://andrewsville.github.com/PHP-Token-Reflection/",
+            "keywords": [
+                "library",
+                "reflection",
+                "tokenizer"
+            ],
+            "time": "2014-08-06T16:37:08+00:00"
+        },
+        {
+            "name": "apigen/apigen",
+            "version": "v4.1.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ApiGen.git",
+                "reference": "3365433ea3433b0e5c8f763608f8e63cbedb2a3a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ApiGen/zipball/3365433ea3433b0e5c8f763608f8e63cbedb2a3a",
+                "reference": "3365433ea3433b0e5c8f763608f8e63cbedb2a3a",
+                "shasum": ""
+            },
+            "require": {
+                "andrewsville/php-token-reflection": "~1.4",
+                "apigen/theme-bootstrap": "~1.1.2",
+                "apigen/theme-default": "~1.0.1",
+                "herrera-io/phar-update": "~2.0",
+                "kdyby/events": "~2.0",
+                "kukulich/fshl": "~2.1",
+                "latte/latte": ">=2.2.0,<2.3.5",
+                "michelf/php-markdown": "~1.4",
+                "nette/application": "~2.2",
+                "nette/bootstrap": "~2.2",
+                "nette/di": "~2.2",
+                "nette/mail": "~2.2",
+                "nette/neon": "~2.2",
+                "nette/robot-loader": "~2.2",
+                "nette/safe-stream": "~2.2",
+                "php": ">=5.4",
+                "symfony/console": "~2.6",
+                "symfony/options-resolver": "~2.6.1",
+                "symfony/yaml": "~2.6",
+                "tracy/tracy": "~2.2"
+            },
+            "require-dev": {
+                "herrera-io/box": "~1.6",
+                "mockery/mockery": "~0.9"
+            },
+            "bin": [
+                "bin/apigen"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ApiGen\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                },
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "PHP source code API generator",
+            "homepage": "http://apigen.org/",
+            "keywords": [
+                "api",
+                "documentation",
+                "generator",
+                "phpdoc"
+            ],
+            "time": "2015-11-29T20:11:30+00:00"
+        },
+        {
+            "name": "apigen/theme-bootstrap",
+            "version": "v1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ThemeBootstrap.git",
+                "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ThemeBootstrap/zipball/55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c",
+                "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c",
+                "shasum": ""
+            },
+            "require": {
+                "latte/latte": "~2.2"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "Twitter Bootstrap theme for ApiGen",
+            "homepage": "http://apigen.org/",
+            "abandoned": "apigen/apigen",
+            "time": "2015-10-11T14:52:50+00:00"
+        },
+        {
+            "name": "apigen/theme-default",
+            "version": "v1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ThemeDefault.git",
+                "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ThemeDefault/zipball/51648cf83645d9ae6c655fe46bcd26a347d45336",
+                "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336",
+                "shasum": ""
+            },
+            "require": {
+                "latte/latte": "~2.2"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                },
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "Default theme for ApiGen",
+            "homepage": "http://apigen.org/",
+            "abandoned": "apigen/apigen",
+            "time": "2015-10-11T14:55:30+00:00"
+        },
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3,<8.0-DEV"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "~2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/doctrine/instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2015-06-14T21:17:01+00:00"
+        },
+        {
+            "name": "herrera-io/json",
+            "version": "1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-php/json.git",
+                "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-php/json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1",
+                "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "justinrainbow/json-schema": ">=1.0,<2.0-dev",
+                "php": ">=5.3.3",
+                "seld/jsonlint": ">=1.0,<2.0-dev"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "mikey179/vfsstream": "1.1.0",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/lib/json_version.php"
+                ],
+                "psr-0": {
+                    "Herrera\\Json": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for simplifying JSON linting and validation.",
+            "homepage": "http://herrera-io.github.com/php-json",
+            "keywords": [
+                "json",
+                "lint",
+                "schema",
+                "validate"
+            ],
+            "abandoned": "kherge/json",
+            "time": "2013-10-30T16:51:34+00:00"
+        },
+        {
+            "name": "herrera-io/phar-update",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-abandoned/php-phar-update.git",
+                "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/15643c90d3d43620a4f45c910e6afb7a0ad4b488",
+                "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488",
+                "shasum": ""
+            },
+            "require": {
+                "herrera-io/json": "1.*",
+                "herrera-io/version": "1.*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "mikey179/vfsstream": "1.1.0",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/lib/constants.php"
+                ],
+                "psr-0": {
+                    "Herrera\\Phar\\Update": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for self-updating Phars.",
+            "homepage": "http://herrera-io.github.com/php-phar-update",
+            "keywords": [
+                "phar",
+                "update"
+            ],
+            "abandoned": true,
+            "time": "2013-11-09T17:13:13+00:00"
+        },
+        {
+            "name": "herrera-io/version",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-abandoned/php-version.git",
+                "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-abandoned/php-version/zipball/d39d9642b92a04d8b8a28b871b797a35a2545e85",
+                "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Herrera\\Version": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for creating, editing, and comparing semantic versioning numbers.",
+            "homepage": "http://github.com/herrera-io/php-version",
+            "keywords": [
+                "semantic",
+                "version"
+            ],
+            "abandoned": true,
+            "time": "2014-05-27T05:29:25+00:00"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "1.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341",
+                "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.29"
+            },
+            "require-dev": {
+                "json-schema/json-schema-test-suite": "1.1.0",
+                "phpdocumentor/phpdocumentor": "~2",
+                "phpunit/phpunit": "~3.7"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "JsonSchema\\": "src/JsonSchema/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "time": "2016-01-25T15:43:01+00:00"
+        },
+        {
+            "name": "kdyby/events",
+            "version": "v2.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Kdyby/Events.git",
+                "reference": "d8a0e8a64a59f501996f8f9591aa3f950208f091"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Kdyby/Events/zipball/d8a0e8a64a59f501996f8f9591aa3f950208f091",
+                "reference": "d8a0e8a64a59f501996f8f9591aa3f950208f091",
+                "shasum": ""
+            },
+            "require": {
+                "nette/di": "~2.3@dev",
+                "nette/utils": "~2.3@dev"
+            },
+            "require-dev": {
+                "latte/latte": "~2.3@dev",
+                "nette/application": "~2.3@dev",
+                "nette/bootstrap": "~2.3@dev",
+                "nette/caching": "~2.3@dev",
+                "nette/component-model": "~2.2@dev",
+                "nette/database": "~2.3@dev",
+                "nette/deprecated": "~2.3@dev",
+                "nette/di": "~2.3@dev",
+                "nette/finder": "~2.3@dev",
+                "nette/forms": "~2.3@dev",
+                "nette/http": "~2.3@dev",
+                "nette/mail": "~2.3@dev",
+                "nette/neon": "~2.3@dev",
+                "nette/php-generator": "~2.3@dev",
+                "nette/reflection": "~2.3@dev",
+                "nette/robot-loader": "~2.3@dev",
+                "nette/safe-stream": "~2.3@dev",
+                "nette/security": "~2.3@dev",
+                "nette/tester": "~1.4",
+                "nette/tokenizer": "~2.2@dev",
+                "nette/utils": "~2.3@dev",
+                "symfony/event-dispatcher": "~2.3",
+                "tracy/tracy": "~2.3@dev"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Kdyby\\Events\\": "src/"
+                },
+                "classmap": [
+                    "src/Kdyby/Events/exceptions.php"
+                ],
+                "files": [
+                    "src/Doctrine/compatibility.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Filip Procházka",
+                    "email": "filip@prochazka.su",
+                    "homepage": "http://filip-prochazka.com"
+                }
+            ],
+            "description": "Events for Nette Framework",
+            "homepage": "http://kdyby.org",
+            "keywords": [
+                "kdyby",
+                "nette"
+            ],
+            "time": "2016-04-19T11:19:31+00:00"
+        },
+        {
+            "name": "kukulich/fshl",
+            "version": "2.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kukulich/fshl.git",
+                "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kukulich/fshl/zipball/974c294ade5d76c0c16b6fe3fd3a584ba999b24f",
+                "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "FSHL": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+"
+            ],
+            "authors": [
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                }
+            ],
+            "description": "FSHL is a free, open source, universal, fast syntax highlighter written in PHP.",
+            "homepage": "http://fshl.kukulich.cz/",
+            "keywords": [
+                "highlight",
+                "library",
+                "syntax"
+            ],
+            "time": "2012-09-08T19:00:07+00:00"
+        },
+        {
+            "name": "latte/latte",
+            "version": "v2.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/latte.git",
+                "reference": "5e891af999776d2204a9d06ad66ad8fa0bcd4f8b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/latte/zipball/5e891af999776d2204a9d06ad66ad8fa0bcd4f8b",
+                "reference": "5e891af999776d2204a9d06ad66ad8fa0bcd4f8b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.1"
+            },
+            "require-dev": {
+                "nette/tester": "~1.3"
+            },
+            "suggest": {
+                "ext-fileinfo": "to use filter |datastream",
+                "ext-mbstring": "to use filters like lower, upper, capitalize, ..."
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "http://nette.org/contributors"
+                }
+            ],
+            "description": "Latte: the amazing template engine for PHP",
+            "homepage": "http://latte.nette.org",
+            "keywords": [
+                "templating",
+                "twig"
+            ],
+            "time": "2015-08-23T12:36:55+00:00"
+        },
+        {
+            "name": "michelf/php-markdown",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/michelf/php-markdown.git",
+                "reference": "01ab082b355bf188d907b9929cd99b2923053495"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495",
+                "reference": "01ab082b355bf188d907b9929cd99b2923053495",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Michelf\\": "Michelf/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Michel Fortin",
+                    "email": "michel.fortin@michelf.ca",
+                    "homepage": "https://michelf.ca/",
+                    "role": "Developer"
+                },
+                {
+                    "name": "John Gruber",
+                    "homepage": "https://daringfireball.net/"
+                }
+            ],
+            "description": "PHP Markdown",
+            "homepage": "https://michelf.ca/projects/php-markdown/",
+            "keywords": [
+                "markdown"
+            ],
+            "time": "2018-01-15T00:49:33+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^4.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                },
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "time": "2017-10-19T19:58:43+00:00"
+        },
+        {
+            "name": "nette/application",
+            "version": "v2.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/application.git",
+                "reference": "fe1915f880d8e5d16217bad467950733fd5cbad3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/application/zipball/fe1915f880d8e5d16217bad467950733fd5cbad3",
+                "reference": "fe1915f880d8e5d16217bad467950733fd5cbad3",
+                "shasum": ""
+            },
+            "require": {
+                "nette/component-model": "^2.3",
+                "nette/http": "^2.2",
+                "nette/reflection": "^2.2",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/di": "<2.4",
+                "nette/forms": "<2.4",
+                "nette/latte": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "^2.4.3",
+                "mockery/mockery": "^0.9.5",
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/forms": "^2.4",
+                "nette/robot-loader": "^2.4.2 || ^3.0",
+                "nette/security": "^2.4",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "latte/latte": "Allows using Latte in templates",
+                "nette/forms": "Allows to use Nette\\Application\\UI\\Form"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ],
+                "files": [
+                    "src/compatibility.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "Forms",
+                "component-based",
+                "control",
+                "framework",
+                "mvc",
+                "mvp",
+                "nette",
+                "presenter",
+                "routing",
+                "seo"
+            ],
+            "time": "2018-05-16T09:28:51+00:00"
+        },
+        {
+            "name": "nette/bootstrap",
+            "version": "v2.4.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/bootstrap.git",
+                "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543",
+                "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543",
+                "shasum": ""
+            },
+            "require": {
+                "nette/di": "~2.4.7",
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "~2.2",
+                "nette/application": "~2.3",
+                "nette/caching": "~2.3",
+                "nette/database": "~2.3",
+                "nette/forms": "~2.3",
+                "nette/http": "~2.4.0",
+                "nette/mail": "~2.3",
+                "nette/robot-loader": "^2.4.2 || ^3.0",
+                "nette/safe-stream": "~2.2",
+                "nette/security": "~2.3",
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.4.1"
+            },
+            "suggest": {
+                "nette/robot-loader": "to use Configurator::createRobotLoader()",
+                "tracy/tracy": "to use Configurator::enableTracy()"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "bootstrapping",
+                "configurator",
+                "nette"
+            ],
+            "time": "2018-05-17T12:52:20+00:00"
+        },
+        {
+            "name": "nette/caching",
+            "version": "v2.5.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/caching.git",
+                "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/caching/zipball/7fba7c7ab2585fafb7b31152f2595e1551120555",
+                "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555",
+                "shasum": ""
+            },
+            "require": {
+                "nette/finder": "^2.2 || ~3.0.0",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "^2.4",
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "cache",
+                "journal",
+                "memcached",
+                "nette",
+                "sqlite"
+            ],
+            "time": "2018-03-21T11:04:32+00:00"
+        },
+        {
+            "name": "nette/component-model",
+            "version": "v2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/component-model.git",
+                "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/component-model/zipball/6e7980f5ddec31f68a39e767799b1b0be9dd1014",
+                "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.5 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/application": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "⚛ Nette Component Model",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "components",
+                "nette"
+            ],
+            "time": "2018-03-20T16:32:50+00:00"
+        },
+        {
+            "name": "nette/di",
+            "version": "v2.4.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/di.git",
+                "reference": "3f8f212b02d5c17feb97a7e0a39ab306f40c06ca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/di/zipball/3f8f212b02d5c17feb97a7e0a39ab306f40c06ca",
+                "reference": "3f8f212b02d5c17feb97a7e0a39ab306f40c06ca",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/neon": "^2.3.3 || ~3.0.0",
+                "nette/php-generator": "^2.6.1 || ~3.0.0",
+                "nette/utils": "^2.4.3 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/bootstrap": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "compiled",
+                "di",
+                "dic",
+                "factory",
+                "ioc",
+                "nette",
+                "static"
+            ],
+            "time": "2018-06-11T08:46:01+00:00"
+        },
+        {
+            "name": "nette/finder",
+            "version": "v2.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/finder.git",
+                "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0",
+                "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🔍 Nette Finder: find files and directories with an intuitive API.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "filesystem",
+                "glob",
+                "iterator",
+                "nette"
+            ],
+            "time": "2018-06-28T11:49:23+00:00"
+        },
+        {
+            "name": "nette/http",
+            "version": "v2.4.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/http.git",
+                "reference": "a36e6bad0aae8bacf849c150b5e0ecacef0d9eca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/http/zipball/a36e6bad0aae8bacf849c150b5e0ecacef0d9eca",
+                "reference": "a36e6bad0aae8bacf849c150b5e0ecacef0d9eca",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4.8 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-fileinfo": "to detect type of uploaded files",
+                "nette/security": "allows use Nette\\Http\\UserStorage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "cookies",
+                "http",
+                "nette",
+                "proxy",
+                "request",
+                "response",
+                "security",
+                "session",
+                "url"
+            ],
+            "time": "2018-09-03T19:16:55+00:00"
+        },
+        {
+            "name": "nette/mail",
+            "version": "v2.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/mail.git",
+                "reference": "13312eb627d913f2630018a07a9e40cb7003dc76"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/mail/zipball/13312eb627d913f2630018a07a9e40cb7003dc76",
+                "reference": "13312eb627d913f2630018a07a9e40cb7003dc76",
+                "shasum": ""
+            },
+            "require": {
+                "ext-iconv": "*",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-fileinfo": "to detect type of attached files"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "📧 Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "mail",
+                "mailer",
+                "mime",
+                "nette",
+                "smtp"
+            ],
+            "time": "2018-03-18T16:30:02+00:00"
+        },
+        {
+            "name": "nette/neon",
+            "version": "v2.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/neon.git",
+                "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398",
+                "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398",
+                "shasum": ""
+            },
+            "require": {
+                "ext-iconv": "*",
+                "ext-json": "*",
+                "php": ">=5.6.0"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🍸 Nette NEON: encodes and decodes NEON file format.",
+            "homepage": "http://ne-on.org",
+            "keywords": [
+                "export",
+                "import",
+                "neon",
+                "nette",
+                "yaml"
+            ],
+            "time": "2018-03-21T12:12:21+00:00"
+        },
+        {
+            "name": "nette/php-generator",
+            "version": "v2.6.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/php-generator.git",
+                "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/php-generator/zipball/c1f6b2163c5471c4d94cd94b93362f12bceef183",
+                "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.4.2 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.1 features.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "code",
+                "nette",
+                "php",
+                "scaffolding"
+            ],
+            "time": "2018-04-26T16:47:39+00:00"
+        },
+        {
+            "name": "nette/reflection",
+            "version": "v2.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/reflection.git",
+                "reference": "b12327e98ead74e87a1315e0d48182a702adf901"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901",
+                "reference": "b12327e98ead74e87a1315e0d48182a702adf901",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/caching": "^2.2 || ^3.0",
+                "nette/utils": "^2.4 || ^3.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4 || ^3.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "Nette Reflection: docblock annotations parser and common reflection classes",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "annotation",
+                "nette",
+                "reflection"
+            ],
+            "time": "2017-07-11T19:28:57+00:00"
+        },
+        {
+            "name": "nette/robot-loader",
+            "version": "v2.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/robot-loader.git",
+                "reference": "1f7f8792ce4d94162959e6b766822d6051623bca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/robot-loader/zipball/1f7f8792ce4d94162959e6b766822d6051623bca",
+                "reference": "1f7f8792ce4d94162959e6b766822d6051623bca",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/caching": "~2.2",
+                "nette/finder": "~2.3",
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "autoload",
+                "class",
+                "interface",
+                "nette",
+                "trait"
+            ],
+            "time": "2017-08-14T20:23:02+00:00"
+        },
+        {
+            "name": "nette/safe-stream",
+            "version": "v2.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/safe-stream.git",
+                "reference": "0fcd45ae82be5817f4b3ad25bc8955968f355412"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/safe-stream/zipball/0fcd45ae82be5817f4b3ad25bc8955968f355412",
+                "reference": "0fcd45ae82be5817f4b3ad25bc8955968f355412",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.1"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~1.7",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/loader.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "Nette SafeStream: atomic and safe manipulation with files via native PHP functions.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "atomic",
+                "filesystem",
+                "nette",
+                "safe"
+            ],
+            "time": "2017-07-13T18:20:37+00:00"
+        },
+        {
+            "name": "nette/utils",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/utils.git",
+                "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/utils/zipball/183069866dc477fcfbac393ed486aaa6d93d19a5",
+                "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "suggest": {
+                "ext-gd": "to use Image",
+                "ext-iconv": "to use Strings::webalize() and toAscii()",
+                "ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
+                "ext-json": "to use Nette\\Utils\\Json",
+                "ext-mbstring": "to use Strings::lower() etc...",
+                "ext-xml": "to use Strings::length() etc. when mbstring is not available"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ],
+                "files": [
+                    "src/loader.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "array",
+                "core",
+                "datetime",
+                "images",
+                "json",
+                "nette",
+                "paginator",
+                "password",
+                "slugify",
+                "string",
+                "unicode",
+                "utf-8",
+                "utility",
+                "validation"
+            ],
+            "time": "2018-05-02T17:16:08+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "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": "2017-09-11T18:02:19+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "3.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0.0",
+                "phpdocumentor/type-resolver": "^0.4.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": "2017-11-10T14:09:06+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "0.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5 || ^7.0",
+                "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": "2017-07-14T14:27:02+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.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": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "4.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "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-04-02T07:44:40+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-12-04T08:55:13+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "5.7.27",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "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.4.3",
+                "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.6|^2.0.1",
+                "symfony/yaml": "~2.1|~3.0|~4.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": "2018-02-01T05:50:59+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "3.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+                "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": "2017-06-30T09:13:00+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.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-05-22T07:24:03+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "2.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"
+            },
+            "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"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2016-11-26T07:53:53+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "2.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"
+            },
+            "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": "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": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2015-10-12T03:26:01+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "2.0.1",
+            "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"
+            },
+            "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"
+                }
+            ],
+            "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": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2016-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"
+            ],
+            "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": "seld/jsonlint",
+            "version": "1.7.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/jsonlint.git",
+                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
+                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "bin": [
+                "bin/jsonlint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "JSON Linter",
+            "keywords": [
+                "json",
+                "linter",
+                "parser",
+                "validator"
+            ],
+            "time": "2018-01-24T12:46:19+00:00"
+        },
+        {
+            "name": "symfony/class-loader",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/class-loader.git",
+                "reference": "f65a559906874b194eda635eacf7ffeef0fbff3d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/class-loader/zipball/f65a559906874b194eda635eacf7ffeef0fbff3d",
+                "reference": "f65a559906874b194eda635eacf7ffeef0fbff3d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/polyfill-apcu": "~1.1"
+            },
+            "require-dev": {
+                "symfony/finder": "^2.0.5|~3.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ClassLoader\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony ClassLoader Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T11:13:39+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/0c1fcbb9afb5cff992c982ff99c0434f0146dcfc",
+                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/debug": "^2.7.2|~3.0.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1|~3.0.0",
+                "symfony/process": "~2.1|~3.0.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T11:13:39+00:00"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v3.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
+                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.9",
+                "psr/log": "~1.0"
+            },
+            "conflict": {
+                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+            },
+            "require-dev": {
+                "symfony/class-loader": "~2.8|~3.0",
+                "symfony/http-kernel": "~2.8|~3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Debug Component",
+            "homepage": "https://symfony.com",
+            "time": "2016-07-30T07:22:48+00:00"
+        },
+        {
+            "name": "symfony/options-resolver",
+            "version": "v2.6.13",
+            "target-dir": "Symfony/Component/OptionsResolver",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/options-resolver.git",
+                "reference": "31e56594cee489e9a235b852228b0598b52101c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/31e56594cee489e9a235b852228b0598b52101c1",
+                "reference": "31e56594cee489e9a235b852228b0598b52101c1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\OptionsResolver\\": ""
+                }
+            },
+            "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 OptionsResolver Component",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "config",
+                "configuration",
+                "options"
+            ],
+            "time": "2015-05-13T11:33:56+00:00"
+        },
+        {
+            "name": "symfony/polyfill-apcu",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-apcu.git",
+                "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2",
+                "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Apcu\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "apcu",
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
+                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "fbf876678e29dc634430dcf0096e216eb0004467"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/fbf876678e29dc634430dcf0096e216eb0004467",
+                "reference": "fbf876678e29dc634430dcf0096e216eb0004467",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T09:03:18+00:00"
+        },
+        {
+            "name": "tracy/tracy",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/tracy.git",
+                "reference": "93f89fbff33db4d583062104c71d6083b717371a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/tracy/zipball/93f89fbff33db4d583062104c71d6083b717371a",
+                "reference": "93f89fbff33db4d583062104c71d6083b717371a",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-session": "*",
+                "php": ">=5.4.4"
+            },
+            "require-dev": {
+                "nette/di": "~2.3",
+                "nette/tester": "~1.7"
+            },
+            "suggest": {
+                "https://nette.org/donate": "Please support Tracy via a donation"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src"
+                ],
+                "files": [
+                    "src/shortcuts.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.",
+            "homepage": "https://tracy.nette.org",
+            "keywords": [
+                "Xdebug",
+                "debug",
+                "debugger",
+                "nette",
+                "profiler"
+            ],
+            "time": "2018-08-13T16:46:17+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "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": "2018-01-29T19:49:41+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.6.0"
+    },
+    "platform-dev": []
+}
diff --git a/examples/ItemrankImport.php b/examples/ItemrankImport.php
index 4266a7f..4bdd0e5 100644
--- a/examples/ItemrankImport.php
+++ b/examples/ItemrankImport.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EventClient;
@@ -10,24 +26,21 @@
 
 // set user - generate 10 users
 for ($u=1; $u<=10; $u++) {
-  $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M'));
-  print_r($response);
+    $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M'));
+    print_r($response);
 }
 
 // set item - generate 50 items
 for ($i=1; $i<=50; $i++) {
-  $response=$client->setItem($i, array('itypes'=>array('1')));
-  print_r($response);
+    $response=$client->setItem($i, array('itypes'=>array('1')));
+    print_r($response);
 }
 
 // record event - each user randomly views 10 items
 for ($u=1; $u<=10; $u++) {
-  for ($count=0; $count<10; $count++) {
-    $i = rand(1,50);
-    $response=$client->recordUserActionOnItem('view', $u, $i);
-    print_r($response);
-  }
-} 
-
-
-?>
+    for ($count=0; $count<10; $count++) {
+        $i = rand(1, 50);
+        $response=$client->recordUserActionOnItem('view', $u, $i);
+        print_r($response);
+    }
+}
diff --git a/examples/ItemrankQuery.php b/examples/ItemrankQuery.php
index 2d06346..0598a51 100644
--- a/examples/ItemrankQuery.php
+++ b/examples/ItemrankQuery.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EngineClient;
@@ -9,8 +25,6 @@
 
 // Rank item 1 to 5 for each user
 for ($i=1; $i<=10; $i++) {
-  $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5)));
-  print_r($response);
+    $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5)));
+    print_r($response);
 }
-
-?>
diff --git a/examples/SampleEvent.php b/examples/SampleEvent.php
index b41fc07..f813a45 100644
--- a/examples/SampleEvent.php
+++ b/examples/SampleEvent.php
@@ -1,68 +1,89 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EventClient;
 use predictionio\PredictionIOAPIError;
 
 try {
-  // check Event Server status
-  $client = new EventClient(
-    "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O");
-  $response=$client->getStatus();
-  echo($response);
+    // check Event Server status
+    $client = new EventClient(
+        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"
+    );
+    $response=$client->getStatus();
+    echo($response);
 
-  // set user with event time
-  $response=$client->setUser(9, array('age'=>10), 
-                        '2014-01-01T10:20:30.400+08:00');
-  print_r($response);
+    // set user with event time
+    $response=$client->setUser(
+        9,
+        array('age'=>10),
+        '2014-01-01T10:20:30.400+08:00'
+    );
+    print_r($response);
 
-  // set user 
-  $response=$client->setUser(8, array('age'=>20, 'gender'=>'M'));
-  print_r($response);
+    // set user
+    $response=$client->setUser(8, array('age'=>20, 'gender'=>'M'));
+    print_r($response);
 
-  // unset user
-  $response=$client->unsetUser(8, array('age'=>20));
-  print_r($response);
+    // unset user
+    $response=$client->unsetUser(8, array('age'=>20));
+    print_r($response);
 
-  // delete user
-  $response=$client->deleteUser(9);
-  print_r($response);
-  
-  // set item with event time
-  $response=$client->setItem(3, array('itypes'=>array('1')), 
-                        '2013-12-20T05:15:25.350+08:00');
-  print_r($response);
+    // delete user
+    $response=$client->deleteUser(9);
+    print_r($response);
 
-  // set item 
-  $response=$client->setItem(2, array('itypes'=>array('1')));
-  print_r($response);
+    // set item with event time
+    $response=$client->setItem(
+        3,
+        array('itypes'=>array('1')),
+        '2013-12-20T05:15:25.350+08:00'
+    );
+    print_r($response);
 
-  // unset item 
-  $response=$client->unsetItem(2, array('itypes'=>array('1')));
-  print_r($response);
+    // set item
+    $response=$client->setItem(2, array('itypes'=>array('1')));
+    print_r($response);
 
-  // delete item 
-  $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00');
-  print_r($response);
+    // unset item
+    $response=$client->unsetItem(2, array('itypes'=>array('1')));
+    print_r($response);
 
-  // record user action on item
-  $response=$client->recordUserActionOnItem('view', 8, 2);
-  print_r($response);
+    // delete item
+    $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00');
+    print_r($response);
 
-  // create event
-  $response=$client->createEvent(array(
-                        'event' => 'my_event',
-                        'entityType' => 'user',
-                        'entityId' => '8',
-                        'properties' => array('prop1'=>1, 'prop2'=>2),
-                   ));
-  print_r($response); 
+    // record user action on item
+    $response=$client->recordUserActionOnItem('view', 8, 2);
+    print_r($response);
 
-  // get event
-  $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo');
-  print_r($response);                       
+    // create event
+    $response=$client->createEvent(array(
+        'event' => 'my_event',
+        'entityType' => 'user',
+        'entityId' => '8',
+        'properties' => array('prop1'=>1, 'prop2'=>2),
+    ));
+    print_r($response);
 
+    // get event
+    $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo');
+    print_r($response);
 } catch (PredictionIOAPIError $e) {
-  echo $e->getMessage();
+    echo $e->getMessage();
 }
-?>
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index d313305..80c60eb 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
 <phpunit colors="true"
          verbose="false"
          convertErrorsToExceptions="true"
diff --git a/src/predictionio/BaseClient.php b/src/predictionio/BaseClient.php
index ecec355..83da150 100644
--- a/src/predictionio/BaseClient.php
+++ b/src/predictionio/BaseClient.php
@@ -1,5 +1,20 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 use GuzzleHttp\Client;
@@ -9,59 +24,61 @@
  * Base client for Event and Engine client
  *
  */
-abstract class BaseClient {
-  private $baseUrl;
-  public $client;
+abstract class BaseClient
+{
+    private $baseUrl;
+    public $client;
 
-  /**
-   * @param string $baseUrl Base URL to the server
-   * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely
-   * @param float $connectTimeout Number of seconds to wait while trying to connect to a server
-   */  
-  public function __construct($baseUrl, $timeout, $connectTimeout) {
-    $this->baseUrl = $baseUrl;
-    $this->client = new Client([
+    /**
+     * @param string $baseUrl Base URL to the server
+     * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely
+     * @param float $connectTimeout Number of seconds to wait while trying to connect to a server
+     */
+    public function __construct($baseUrl, $timeout, $connectTimeout)
+    {
+        $this->baseUrl = $baseUrl;
+        $this->client = new Client([
            'base_uri' => $this->baseUrl,
            'timeout' => $timeout,
            'connect_timeout' => $connectTimeout
-    ]);
-
-  }
-
-  /**
-   * Get the status of the Event Server or Engine Instance
-   *
-   * @return string status
-   */
-  public function getStatus() {
-    return $this->client->get('/')->getBody();
-  }
-
-  /**
-   * Send a HTTP request to the server
-   *
-   * @param string $method HTTP request method
-   * @param string $url Relative or absolute url
-   * @param string $body HTTP request body
-   *
-   * @return array JSON response
-   * @throws PredictionIOAPIError Request error
-   */
-  protected function sendRequest($method, $url, $body) {
-    $options = [
-      'headers' => [
-        'Accept-Encoding' => 'gzip',
-        'Content-Type' => 'application/json',
-      ],
-      'body' => $body,
-    ];
-
-    try {
-      $response = $this->client->request($method, $url, $options);
-      return json_decode($response->getBody(), true);
-    } catch (ClientException $e) {
-      throw new PredictionIOAPIError($e->getMessage()); 
+        ]);
     }
-  }
+
+    /**
+     * Get the status of the Event Server or Engine Instance
+     *
+     * @return string status
+     */
+    public function getStatus()
+    {
+        return $this->client->get('/')->getBody();
+    }
+
+    /**
+     * Send a HTTP request to the server
+     *
+     * @param string $method HTTP request method
+     * @param string $url Relative or absolute url
+     * @param string $body HTTP request body
+     *
+     * @return array JSON response
+     * @throws PredictionIOAPIError Request error
+     */
+    protected function sendRequest($method, $url, $body)
+    {
+        $options = [
+            'headers' => [
+                'Accept-Encoding' => 'gzip',
+                'Content-Type' => 'application/json',
+            ],
+            'body' => $body,
+        ];
+
+        try {
+            $response = $this->client->request($method, $url, $options);
+            return json_decode($response->getBody(), true);
+        } catch (ClientException $e) {
+            throw new PredictionIOAPIError($e->getMessage());
+        }
+    }
 }
-?>
diff --git a/src/predictionio/EngineClient.php b/src/predictionio/EngineClient.php
index f45ac35..7355937 100644
--- a/src/predictionio/EngineClient.php
+++ b/src/predictionio/EngineClient.php
@@ -1,12 +1,28 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 /**
  * Client for connecting to an Engine Instance
  *
  */
-class EngineClient extends BaseClient {
+class EngineClient extends BaseClient
+{
 
   /**
    * @param string Base URL to the Engine Instance. Default is localhost:8000.
@@ -15,23 +31,25 @@
    * @param float Number of seconds to wait while trying to connect to a server.
    *              Default is 5.
    */
-  public function __construct($baseUrl="http://localhost:8000",
-                              $timeout=0, $connectTimeout=5 ) {
-    parent::__construct($baseUrl, $timeout, $connectTimeout);
-  }
+    public function __construct(
+        $baseUrl="http://localhost:8000",
+        $timeout=0,
+        $connectTimeout=5
+    ) {
+        parent::__construct($baseUrl, $timeout, $connectTimeout);
+    }
 
-  /**
-   * Send prediction query to an Engine Instance
-   *
-   * @param array Query
-   *
-   * @return array JSON response
-   *
-   * @throws PredictionIOAPIError Request error
-   */
-  public function sendQuery(array $query) {
-    return $this->sendRequest("POST", "/queries.json", json_encode($query));
-  }
+    /**
+     * Send prediction query to an Engine Instance
+     *
+     * @param array Query
+     *
+     * @return array JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function sendQuery(array $query)
+    {
+        return $this->sendRequest("POST", "/queries.json", json_encode($query));
+    }
 }
-
-?>
diff --git a/src/predictionio/EventClient.php b/src/predictionio/EventClient.php
index df4286f..7a31bc7 100644
--- a/src/predictionio/EventClient.php
+++ b/src/predictionio/EventClient.php
@@ -1,267 +1,310 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
+
 use GuzzleHttp\Client;
 use \DateTime;
- 
+
 /**
  * Client for connecting to an Event Server
  *
  */
-class EventClient extends BaseClient {
-  const DATE_TIME_FORMAT = DateTime::ISO8601;
-  private $accessKey;
-  private $eventUrl;
+class EventClient extends BaseClient
+{
+    const DATE_TIME_FORMAT = DateTime::ISO8601;
+    private $accessKey;
+    private $eventUrl;
 
-  /**
-   * @param string Access Key
-   * @param string Base URL to the Event Server. Default is localhost:7070.
-   * @param float Timeout of the request in seconds. Use 0 to wait indefinitely
-   *              Default is 0.
-   * @param float Number of seconds to wait while trying to connect to a server.
-   *              Default is 5.                
-   */
-  public function __construct($accessKey, $baseUrl='http://localhost:7070',
-                              $timeout=0, $connectTimeout=5 ) {
-    parent::__construct($baseUrl, $timeout, $connectTimeout);
-    $this->accessKey = $accessKey;
-    $this->eventUrl = "/events.json?accessKey=$this->accessKey";
-  }
+    /**
+     * @param string Access Key
+     * @param string Base URL to the Event Server. Default is localhost:7070.
+     * @param float Timeout of the request in seconds. Use 0 to wait indefinitely
+     *              Default is 0.
+     * @param float Number of seconds to wait while trying to connect to a server.
+     *              Default is 5.
+     */
+    public function __construct(
+        $accessKey,
+        $baseUrl='http://localhost:7070',
+        $timeout=0,
+        $connectTimeout=5
+    ) {
+        parent::__construct($baseUrl, $timeout, $connectTimeout);
+        $this->accessKey = $accessKey;
+        $this->eventUrl = "/events.json?accessKey=$this->accessKey";
+    }
 
-  private function getEventTime($eventTime) {
-    $result = $eventTime;
-    if (!isset($eventTime)) {
-      $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT);
-    } 
+    private function getEventTime($eventTime)
+    {
+        $result = $eventTime;
+        if (!isset($eventTime)) {
+            $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT);
+        }
 
-    return $result;
-  }
+        return $result;
+    }
 
-  /**
-   * Set a user entity
-   *
-   * @param int|string User Id 
-   * @param array Properties of the user entity to set
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function setUser($uid, array $properties=array(), $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+    /**
+     * Set a user entity
+     *
+     * @param int|string User Id
+     * @param array Properties of the user entity to set
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function setUser($uid, array $properties=array(), $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    // casting to object so that an empty array would be represented as {}
-    if (empty($properties)) $properties = (object)$properties;
+        // casting to object so that an empty array would be represented as {}
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
 
-    $json = json_encode([
-        'event' => '$set',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$set',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-  /**
-   * Unset a user entity
-   *
-   * @param int|string User Id 
-   * @param array Properties of the user entity to unset
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function unsetUser($uid, array $properties, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) 
-      throw new PredictionIOAPIError('Specify at least one property'); 
+    /**
+     * Unset a user entity
+     *
+     * @param int|string User Id
+     * @param array Properties of the user entity to unset
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function unsetUser($uid, array $properties, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            throw new PredictionIOAPIError('Specify at least one property');
+        }
 
-    $json = json_encode([
-        'event' => '$unset',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$unset',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-  /**
-   * Delete a user entity
-   *
-   * @param int|string User Id 
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function deleteUser($uid, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+    /**
+     * Delete a user entity
+     *
+     * @param int|string User Id
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function deleteUser($uid, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    $json = json_encode([
-        'event' => '$delete',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$delete',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
- 
-  /**
-   * Set an item entity
-   *
-   * @param int|string Item Id 
-   * @param array Properties of the item entity to set
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-   public function setItem($iid, array $properties=array(), $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) $properties = (object)$properties;
-    $json = json_encode([
-        'event' => '$set',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Set an item entity
+     *
+     * @param int|string Item Id
+     * @param array Properties of the item entity to set
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function setItem($iid, array $properties=array(), $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
+        $json = json_encode([
+            'event' => '$set',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Unset an item entity
-   *
-   * @param int|string Item Id 
-   * @param array Properties of the item entity to unset
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function unsetItem($iid, array $properties, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties))
-        throw new PredictionIOAPIError('Specify at least one property'); 
-    $json = json_encode([
-        'event' => '$unset',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Unset an item entity
+     *
+     * @param int|string Item Id
+     * @param array Properties of the item entity to unset
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function unsetItem($iid, array $properties, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            throw new PredictionIOAPIError('Specify at least one property');
+        }
+        $json = json_encode([
+            'event' => '$unset',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Delete an item entity
-   *
-   * @param int|string Item Id 
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function deleteItem($iid, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    $json = json_encode([
-        'event' => '$delete',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'eventTime' => $eventTime,
-    ]);
+    /**
+     * Delete an item entity
+     *
+     * @param int|string Item Id
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function deleteItem($iid, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        $json = json_encode([
+            'event' => '$delete',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Record a user action on an item
-   *
-   * @param string Event name
-   * @param int|string User Id 
-   * @param int|string Item Id 
-   * @param array Properties of the event
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-   public function recordUserActionOnItem($event, $uid, $iid, 
-                                         array $properties=array(),
-                                         $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) $properties = (object)$properties;
-    $json = json_encode([
-        'event' => $event,
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'targetEntityType' => 'item',
-        'targetEntityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Record a user action on an item
+     *
+     * @param string Event name
+     * @param int|string User Id
+     * @param int|string Item Id
+     * @param array Properties of the event
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function recordUserActionOnItem(
+       $event,
+       $uid,
+       $iid,
+       array $properties=array(),
+       $eventTime=null
+   ) {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
+        $json = json_encode([
+            'event' => $event,
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'targetEntityType' => 'item',
+            'targetEntityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Create an event
-   *
-   * @param array An array describing the event
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function createEvent(array $data) {
-    $json = json_encode($data);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Create an event
+     *
+     * @param array An array describing the event
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function createEvent(array $data)
+    {
+        $json = json_encode($data);
 
-  /**
-   * Retrieve an event
-   *
-   * @param string Event ID
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function getEvent($eventId) {
-    return $this->sendRequest('GET', 
-      "/events/$eventId.json?accessKey=$this->accessKey", '');
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
+
+    /**
+     * Retrieve an event
+     *
+     * @param string Event ID
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function getEvent($eventId)
+    {
+        return $this->sendRequest(
+            'GET',
+            "/events/$eventId.json?accessKey=$this->accessKey",
+            ''
+        );
+    }
 }
-
-?>
diff --git a/src/predictionio/Exporter.php b/src/predictionio/Exporter.php
index 35b7a03..c965dc7 100644
--- a/src/predictionio/Exporter.php
+++ b/src/predictionio/Exporter.php
@@ -1,13 +1,28 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
-
-trait Exporter {
-
+trait Exporter
+{
     abstract public function export($json);
 
-    public function jsonEncode($data) {
+    public function jsonEncode($data)
+    {
         return json_encode($data);
     }
 
@@ -24,10 +39,15 @@
      * @param array $properties
      * @param $eventTime
      */
-    public function createEvent($event, $entityType, $entityId,
-                                $targetEntityType=null, $targetEntityId=null, array $properties=null,
-                                $eventTime=null) {
-
+    public function createEvent(
+        $event,
+        $entityType,
+        $entityId,
+        $targetEntityType=null,
+        $targetEntityId=null,
+        array $properties=null,
+        $eventTime=null
+    ) {
         if (!isset($eventTime)) {
             $eventTime = new \DateTime();
         } elseif (!($eventTime instanceof \DateTime)) {
@@ -58,5 +78,4 @@
 
         $this->export($json);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/predictionio/FileExporter.php b/src/predictionio/FileExporter.php
index d0ee711..8e820dc 100644
--- a/src/predictionio/FileExporter.php
+++ b/src/predictionio/FileExporter.php
@@ -1,5 +1,20 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 /**
@@ -7,21 +22,24 @@
  *
  * @package predictionio
  */
-class FileExporter {
-
+class FileExporter
+{
     use Exporter;
 
     private $file;
 
-    public function __construct($fileName) {
+    public function __construct($fileName)
+    {
         $this->file = fopen($fileName, 'w');
     }
 
-    public function export($json) {
+    public function export($json)
+    {
         fwrite($this->file, "$json\n");
     }
 
-    public function close() {
+    public function close()
+    {
         fclose($this->file);
     }
-}
\ No newline at end of file
+}
diff --git a/src/predictionio/PredictionIOAPIError.php b/src/predictionio/PredictionIOAPIError.php
index ca4cacd..b51414f 100644
--- a/src/predictionio/PredictionIOAPIError.php
+++ b/src/predictionio/PredictionIOAPIError.php
@@ -1,9 +1,25 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
+
 /**
  * Thrown when there is an error with the request.
  */
-class PredictionIOAPIError extends \Exception {
-
+class PredictionIOAPIError extends \Exception
+{
 }
-?>
diff --git a/tests/Unit/EngineClientTest.php b/tests/Unit/EngineClientTest.php
index 66c43b9..2f5fbbf 100644
--- a/tests/Unit/EngineClientTest.php
+++ b/tests/Unit/EngineClientTest.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio\tests\Unit;
 
 use GuzzleHttp\Middleware;
@@ -9,36 +25,35 @@
 use GuzzleHttp\HandlerStack;
 use GuzzleHttp\Psr7\Response;
 
+class EngineClientTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var EngineClient $engineClient */
+    protected $engineClient;
+    protected $container = [];
 
-class EngineClientTest extends \PHPUnit_Framework_TestCase {
-  /** @var EngineClient $engineClient */
-  protected $engineClient;
-  protected $container = [];
+    protected function setUp()
+    {
+        $history=Middleware::History($this->container);
+        $mock=new MockHandler([new Response(200)]);
+        $handler=HandlerStack::create($mock);
+        $handler->push($history);
+        $this->engineClient=new EngineClient();
+        $existingOptions = $this->engineClient->client->getConfig();
+        $existingOptions['handler'] = $handler;
+        $mockClient=new Client($existingOptions);
+        $this->engineClient->client = $mockClient;
+    }
 
-  protected function setUp() {
-    $history=Middleware::History($this->container);
-    $mock=new MockHandler([new Response(200)]);
-    $handler=HandlerStack::create($mock);
-    $handler->push($history);
-    $this->engineClient=new EngineClient();
-    $existingOptions = $this->engineClient->client->getConfig();
-    $existingOptions['handler'] = $handler;
-    $mockClient=new Client($existingOptions);
-    $this->engineClient->client = $mockClient;
-  }
+    public function testSendQuery()
+    {
+        $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3)));
+        $result=array_shift($this->container);
+        /** @var Request[] $result['request'] */
+        $body=json_decode($result['request']->getBody(), true);
 
-  public function testSendQuery() {
-    $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3)));
-    $result=array_shift($this->container);
-    /** @var Request[] $result['request'] */
-    $body=json_decode($result['request']->getBody(), true);
-
-    $this->assertEquals(5,$body['uid']);
-    $this->assertEquals(array(1,2,3),$body['iids']);
-    $this->assertEquals('POST',$result['request']->getMethod());
-    $this->assertEquals('http://localhost:8000/queries.json',$result['request']->getUri());
-  }
-
+        $this->assertEquals(5, $body['uid']);
+        $this->assertEquals(array(1,2,3), $body['iids']);
+        $this->assertEquals('POST', $result['request']->getMethod());
+        $this->assertEquals('http://localhost:8000/queries.json', $result['request']->getUri());
+    }
 }
-
-?>
diff --git a/tests/Unit/EventClientTest.php b/tests/Unit/EventClientTest.php
index 7a463ff..6c442ea 100644
--- a/tests/Unit/EventClientTest.php
+++ b/tests/Unit/EventClientTest.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio\tests\Unit;
 
 use GuzzleHttp\Client;
@@ -9,243 +25,263 @@
 use GuzzleHttp\Psr7\Response;
 use predictionio\EventClient;
 
-class EventClientTest extends \PHPUnit_Framework_TestCase {
-  /** @var  EventClient $eventClient */
-  protected $eventClient;
-  protected $container = [];
+class EventClientTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var  EventClient $eventClient */
+    protected $eventClient;
+    protected $container = [];
 
-  protected function setUp() {
-    $history=Middleware::History($this->container);
-    $mock=new MockHandler([new Response(200)]);
-    $handler=HandlerStack::create($mock);
-    $handler->push($history);
-    $this->eventClient=new EventClient(
-        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O");
-    $existingOptions = $this->eventClient->client->getConfig();
-    $existingOptions['handler'] = $handler;
-    $mockClient=new Client($existingOptions);
-    $this->eventClient->client = $mockClient;
-  }
+    protected function setUp()
+    {
+        $history=Middleware::History($this->container);
+        $mock=new MockHandler([new Response(200)]);
+        $handler=HandlerStack::create($mock);
+        $handler->push($history);
+        $this->eventClient=new EventClient(
+        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"
+    );
+        $existingOptions = $this->eventClient->client->getConfig();
+        $existingOptions['handler'] = $handler;
+        $mockClient=new Client($existingOptions);
+        $this->eventClient->client = $mockClient;
+    }
 
-  public function testSetUser() {
-    $this->eventClient->setUser(1,array('age'=>20));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testSetUser()
+    {
+        $this->eventClient->setUser(1, array('age'=>20));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals(20,$body['properties']['age']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals(20, $body['properties']['age']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testSetUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+    public function testSetUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->eventClient->setUser(1,array('age'=>20), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->eventClient->setUser(1, array('age'=>20), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  public function testUnsetUser() {
-    $this->eventClient->unsetUser(1,array('age'=>20));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testUnsetUser()
+    {
+        $this->eventClient->unsetUser(1, array('age'=>20));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals(20,$body['properties']['age']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals(20, $body['properties']['age']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testUnsetUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+    public function testUnsetUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->eventClient->unsetUser(1,array('age'=>20), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->eventClient->unsetUser(1, array('age'=>20), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  /**
-   * @expectedException \predictionio\PredictionIOAPIError
-   */
-  public function testUnsetUserWithoutProperties() {
-    $this->eventClient->unsetUser(1, array());
-  }
-  
-  public function testDeleteUser() {
-    $this->eventClient->deleteUser(1);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    /**
+     * @expectedException \predictionio\PredictionIOAPIError
+     */
+    public function testUnsetUserWithoutProperties()
+    {
+        $this->eventClient->unsetUser(1, array());
+    }
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testDeleteUser()
+    {
+        $this->eventClient->deleteUser(1);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testDeleteUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->deleteUser(1, $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testDeleteUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->deleteUser(1, $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testSetItem() {
-    $this->eventClient->setItem(1,array('type'=>'book'));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('book',$body['properties']['type']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testSetItem()
+    {
+        $this->eventClient->setItem(1, array('type'=>'book'));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testSetItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('book', $body['properties']['type']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->setItem(1,array('type'=>'book'), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testSetItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->setItem(1, array('type'=>'book'), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testUnsetItem() {
-    $this->eventClient->unsetItem(1,array('type'=>'book'));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('book',$body['properties']['type']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testUnsetItem()
+    {
+        $this->eventClient->unsetItem(1, array('type'=>'book'));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testUnsetItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('book', $body['properties']['type']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->unsetItem(1,array('type'=>'book'), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testUnsetItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->unsetItem(1, array('type'=>'book'), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  /**
-   * @expectedException \predictionio\PredictionIOAPIError
-   */
-  public function testUnsetItemWithoutProperties() {
-    $this->eventClient->unsetItem(1, array());
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  public function testDeleteItem() {
-    $this->eventClient->deleteItem(1);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    /**
+     * @expectedException \predictionio\PredictionIOAPIError
+     */
+    public function testUnsetItemWithoutProperties()
+    {
+        $this->eventClient->unsetItem(1, array());
+    }
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testDeleteItem()
+    {
+        $this->eventClient->deleteItem(1);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testDeleteItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->deleteItem(1, $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testDeleteItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->deleteItem(1, $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testRecordAction() {
-    $this->eventClient->recordUserActionOnItem('view',1,888, array('count'=>2));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('view',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('item',$body['targetEntityType']);
-    $this->assertEquals(888,$body['targetEntityId']);
-    $this->assertEquals(2,$body['properties']['count']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testRecordAction()
+    {
+        $this->eventClient->recordUserActionOnItem('view', 1, 888, array('count'=>2));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testRecordActionWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('view', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('item', $body['targetEntityType']);
+        $this->assertEquals(888, $body['targetEntityId']);
+        $this->assertEquals(2, $body['properties']['count']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->recordUserActionOnItem('view',1, 8, array(),$eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testRecordActionWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('view',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->recordUserActionOnItem('view', 1, 8, array(), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testCreateEvent() {
-    $this->eventClient->createEvent(array(
+        $this->assertEquals('view', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
+
+    public function testCreateEvent()
+    {
+        $this->eventClient->createEvent(array(
                         'event' => 'my_event',
                         'entityType' => 'user',
                         'entityId' => 'uid',
@@ -255,43 +291,40 @@
                                               'prop4'=>true,
                                               'prop5'=>array('a','b','c'),
                                               'prop6'=>4.56
-                                        ),
+                        ),
                         'eventTime' => '2004-12-13T21:39:45.618-07:00'
                        ));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('my_event',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals('uid',$body['entityId']);
-    $this->assertEquals(1,$body['properties']['prop1']);
-    $this->assertEquals('value2',$body['properties']['prop2']);
-    $this->assertEquals(array(1,2,3),$body['properties']['prop3']);
-    $this->assertEquals(true,$body['properties']['prop4']);
-    $this->assertEquals(array('a','b','c'),$body['properties']['prop5']);
-    $this->assertEquals(4.56,$body['properties']['prop6']);
-    $this->assertEquals('2004-12-13T21:39:45.618-07:00',$body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('my_event', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals('uid', $body['entityId']);
+        $this->assertEquals(1, $body['properties']['prop1']);
+        $this->assertEquals('value2', $body['properties']['prop2']);
+        $this->assertEquals(array(1,2,3), $body['properties']['prop3']);
+        $this->assertEquals(true, $body['properties']['prop4']);
+        $this->assertEquals(array('a','b','c'), $body['properties']['prop5']);
+        $this->assertEquals(4.56, $body['properties']['prop6']);
+        $this->assertEquals('2004-12-13T21:39:45.618-07:00', $body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testGetEvent() {
-    $this->eventClient->getEvent('event_id');
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testGetEvent()
+    {
+        $this->eventClient->getEvent('event_id');
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('GET',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events/event_id.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',
-                $request->getUri());
-  }
-
-
-
-
+        $this->assertEquals('GET', $request->getMethod());
+        $this->assertEquals(
+            'http://localhost:7070/events/event_id.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',
+            $request->getUri()
+        );
+    }
 }
-?>
-
diff --git a/tests/Unit/ExporterTest.php b/tests/Unit/ExporterTest.php
index fb2377b..7f3690a 100644
--- a/tests/Unit/ExporterTest.php
+++ b/tests/Unit/ExporterTest.php
@@ -1,11 +1,26 @@
 <?php
 
-namespace predictionio\tests\Unit;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
+namespace predictionio\tests\Unit;
 
 use predictionio\Exporter;
 
-class TestExporter {
+class TestExporter
+{
     use Exporter {
         jsonEncode as traitJsonEncode;
     }
@@ -13,31 +28,37 @@
     public $json;
     public $data;
 
-    public function __construct() {
+    public function __construct()
+    {
         $this->json = [];
         $this->data = [];
     }
 
-    public function jsonEncode($data) {
+    public function jsonEncode($data)
+    {
         $this->data[] = $data;
         return $this->traitJsonEncode($data);
     }
 
-    public function export($json) {
+    public function export($json)
+    {
         $this->json[] = $json;
     }
 }
 
-class ExporterTest extends \PHPUnit_Framework_TestCase {
+class ExporterTest extends \PHPUnit_Framework_TestCase
+{
 
     /** @var TestExporter $exporter */
     private $exporter;
 
-    protected function setUp() {
+    protected function setUp()
+    {
         $this->exporter = new TestExporter();
     }
 
-    public function testTimeIsNow() {
+    public function testTimeIsNow()
+    {
         $time = new \DateTime();
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id');
@@ -56,7 +77,8 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testTimeIsString() {
+    public function testTimeIsString()
+    {
         $time = new \DateTime('2015-04-01');
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, '2015-04-01');
@@ -75,7 +97,8 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testTimeIsDateTime() {
+    public function testTimeIsDateTime()
+    {
         $time = new \DateTime('2015-04-01');
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, $time);
@@ -94,11 +117,19 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testOptionalFields() {
+    public function testOptionalFields()
+    {
         $time = new \DateTime('2015-04-01');
 
-        $this->exporter->createEvent('event', 'entity-type', 'entity-id',
-            'target-entity-type', 'target-entity-id', ['property' => true], $time);
+        $this->exporter->createEvent(
+            'event',
+            'entity-type',
+            'entity-id',
+            'target-entity-type',
+            'target-entity-id',
+            ['property' => true],
+            $time
+        );
 
         $this->assertEquals(1, count($this->exporter->data));
         $data = $this->exporter->data[0];
@@ -116,5 +147,4 @@
         $pattern = '/^{"event":"event","entityType":"entity-type","entityId":"entity-id","eventTime":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}","targetEntityType":"target-entity-type","targetEntityId":"target-entity-id","properties":{"property":true}}$/';
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
-
-}
\ No newline at end of file
+}
diff --git a/tests/Unit/FileExporterTest.php b/tests/Unit/FileExporterTest.php
index f23affa..f7f43cd 100644
--- a/tests/Unit/FileExporterTest.php
+++ b/tests/Unit/FileExporterTest.php
@@ -1,12 +1,26 @@
 <?php
 
-namespace predictionio\tests\Unit;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
+namespace predictionio\tests\Unit;
 
 use predictionio\FileExporter;
 
-class FileExporterTest extends \PHPUnit_Framework_TestCase {
-
+class FileExporterTest extends \PHPUnit_Framework_TestCase
+{
     public function setUp()
     {
         register_shutdown_function(function () {
@@ -16,12 +30,27 @@
         });
     }
 
-    public function testExporter() {
+    public function testExporter()
+    {
         $exporter = new FileExporter('temp.file');
-        $exporter->createEvent('event-1', 'entity-type-1', 'entity-id-1',
-            null, null, null, '2015-04-01');
-        $exporter->createEvent('event-2', 'entity-type-2', 'entity-id-2',
-            'target-entity-type-2', 'target-entity-id-2', ['property' => 'blue'], '2015-04-01');
+        $exporter->createEvent(
+            'event-1',
+            'entity-type-1',
+            'entity-id-1',
+            null,
+            null,
+            null,
+            '2015-04-01'
+        );
+        $exporter->createEvent(
+            'event-2',
+            'entity-type-2',
+            'entity-id-2',
+            'target-entity-type-2',
+            'target-entity-id-2',
+            ['property' => 'blue'],
+            '2015-04-01'
+        );
         $exporter->close();
 
         $exported = file_get_contents('temp.file');
@@ -37,4 +66,4 @@
 
         $this->assertEquals($expected, $exported);
     }
-}
\ No newline at end of file
+}