diff --git a/currency/composer.json b/currency/composer.json
index ee63036..6a93c7f 100644
--- a/currency/composer.json
+++ b/currency/composer.json
@@ -1,7 +1,7 @@
 {
   "require" : {
-    "bartfeenstra/cldr" : "1.x-dev",
-    "bartfeenstra/currency" : "1.x-dev",
-    "symfony/yaml" : "2.1.*"
+    "bartfeenstra/cldr" : "~1.0",
+    "bartfeenstra/currency" : "~1.0",
+    "symfony/yaml" : "~2.1"
   }
 }
diff --git a/currency/composer.lock b/currency/composer.lock
index 0ce640f..8f7c3af 100644
--- a/currency/composer.lock
+++ b/currency/composer.lock
@@ -1,16 +1,17 @@
 {
     "_readme": [
         "This file locks the dependencies of your project to a known state",
-        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
     ],
-    "hash": "d3a353594342e4d9553e187be3d17387",
+    "hash": "eb6f040134c8e8586dae3dbaddd2d588",
     "packages": [
         {
             "name": "bartfeenstra/cldr",
-            "version": "1.x-dev",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/bartfeenstra/cldr",
+                "url": "https://github.com/bartfeenstra/cldr.git",
                 "reference": "256a058858f423bcc1fcdde837888bcd3a8034ca"
             },
             "dist": {
@@ -47,7 +48,7 @@
         },
         {
             "name": "bartfeenstra/currency",
-            "version": "1.x-dev",
+            "version": "1.0.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/bartfeenstra/currency.git",
@@ -88,26 +89,33 @@
         },
         {
             "name": "symfony/yaml",
-            "version": "v2.1.11",
-            "target-dir": "Symfony/Component/Yaml",
+            "version": "v2.7.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Yaml.git",
-                "reference": "v2.1.11"
+                "reference": "71340e996171474a53f3d29111d046be4ad8a0ff"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.1.11",
-                "reference": "v2.1.11",
+                "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff",
+                "reference": "71340e996171474a53f3d29111d046be4ad8a0ff",
                 "shasum": ""
             },
             "require": {
-                "php": ">=5.3.3"
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
             },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.7-dev"
+                }
+            },
             "autoload": {
-                "psr-0": {
-                    "Symfony\\Component\\Yaml": ""
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -121,29 +129,20 @@
                 },
                 {
                     "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
+                    "homepage": "https://symfony.com/contributors"
                 }
             ],
             "description": "Symfony Yaml Component",
-            "homepage": "http://symfony.com",
-            "time": "2013-05-10 00:09:46"
+            "homepage": "https://symfony.com",
+            "time": "2015-07-28 14:07:07"
         }
     ],
-    "packages-dev": [
-
-    ],
-    "aliases": [
-
-    ],
+    "packages-dev": [],
+    "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": {
-        "bartfeenstra/cldr": 20,
-        "bartfeenstra/currency": 20
-    },
-    "platform": [
-
-    ],
-    "platform-dev": [
-
-    ]
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": []
 }
diff --git a/currency/vendor/autoload.php b/currency/vendor/autoload.php
index c124e92..904f27f 100644
--- a/currency/vendor/autoload.php
+++ b/currency/vendor/autoload.php
@@ -1,7 +1,7 @@
 <?php
 
-// autoload.php generated by Composer
+// autoload.php @generated by Composer
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03::getLoader();
+return ComposerAutoloaderInit7551799b80a9b1d36802cb41210dad9f::getLoader();
diff --git a/currency/vendor/composer/ClassLoader.php b/currency/vendor/composer/ClassLoader.php
index 1db8d9a..5e1469e 100644
--- a/currency/vendor/composer/ClassLoader.php
+++ b/currency/vendor/composer/ClassLoader.php
@@ -42,19 +42,42 @@ namespace Composer\Autoload;
  */
 class ClassLoader
 {
-    private $prefixes = array();
-    private $fallbackDirs = array();
+    // PSR-4
+    private $prefixLengthsPsr4 = array();
+    private $prefixDirsPsr4 = array();
+    private $fallbackDirsPsr4 = array();
+
+    // PSR-0
+    private $prefixesPsr0 = array();
+    private $fallbackDirsPsr0 = array();
+
     private $useIncludePath = false;
     private $classMap = array();
 
+    private $classMapAuthoritative = false;
+
     public function getPrefixes()
     {
-        return call_user_func_array('array_merge', $this->prefixes);
+        if (!empty($this->prefixesPsr0)) {
+            return call_user_func_array('array_merge', $this->prefixesPsr0);
+        }
+
+        return array();
+    }
+
+    public function getPrefixesPsr4()
+    {
+        return $this->prefixDirsPsr4;
     }
 
     public function getFallbackDirs()
     {
-        return $this->fallbackDirs;
+        return $this->fallbackDirsPsr0;
+    }
+
+    public function getFallbackDirsPsr4()
+    {
+        return $this->fallbackDirsPsr4;
     }
 
     public function getClassMap()
@@ -75,23 +98,24 @@ class ClassLoader
     }
 
     /**
-     * Registers a set of classes, merging with any others previously set.
+     * Registers a set of PSR-0 directories for a given prefix, either
+     * appending or prepending to the ones previously set for this prefix.
      *
-     * @param string       $prefix  The classes prefix
-     * @param array|string $paths   The location(s) of the classes
-     * @param bool         $prepend Prepend the location(s)
+     * @param string       $prefix  The prefix
+     * @param array|string $paths   The PSR-0 root directories
+     * @param bool         $prepend Whether to prepend the directories
      */
     public function add($prefix, $paths, $prepend = false)
     {
         if (!$prefix) {
             if ($prepend) {
-                $this->fallbackDirs = array_merge(
+                $this->fallbackDirsPsr0 = array_merge(
                     (array) $paths,
-                    $this->fallbackDirs
+                    $this->fallbackDirsPsr0
                 );
             } else {
-                $this->fallbackDirs = array_merge(
-                    $this->fallbackDirs,
+                $this->fallbackDirsPsr0 = array_merge(
+                    $this->fallbackDirsPsr0,
                     (array) $paths
                 );
             }
@@ -100,38 +124,109 @@ class ClassLoader
         }
 
         $first = $prefix[0];
-        if (!isset($this->prefixes[$first][$prefix])) {
-            $this->prefixes[$first][$prefix] = (array) $paths;
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
 
             return;
         }
         if ($prepend) {
-            $this->prefixes[$first][$prefix] = array_merge(
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixesPsr0[$first][$prefix]
+            );
+        } else {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $this->prefixesPsr0[$first][$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace, either
+     * appending or prepending to the ones previously set for this namespace.
+     *
+     * @param string       $prefix  The prefix/namespace, with trailing '\\'
+     * @param array|string $paths   The PSR-0 base directories
+     * @param bool         $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function addPsr4($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            // Register directories for the root namespace.
+            if ($prepend) {
+                $this->fallbackDirsPsr4 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr4
+                );
+            } else {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $this->fallbackDirsPsr4,
+                    (array) $paths
+                );
+            }
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+            // Register directories for a new namespace.
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        } elseif ($prepend) {
+            // Prepend directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
                 (array) $paths,
-                $this->prefixes[$first][$prefix]
+                $this->prefixDirsPsr4[$prefix]
             );
         } else {
-            $this->prefixes[$first][$prefix] = array_merge(
-                $this->prefixes[$first][$prefix],
+            // Append directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $this->prefixDirsPsr4[$prefix],
                 (array) $paths
             );
         }
     }
 
     /**
-     * Registers a set of classes, replacing any others previously set.
+     * Registers a set of PSR-0 directories for a given prefix,
+     * replacing any others previously set for this prefix.
      *
-     * @param string       $prefix The classes prefix
-     * @param array|string $paths  The location(s) of the classes
+     * @param string       $prefix The prefix
+     * @param array|string $paths  The PSR-0 base directories
      */
     public function set($prefix, $paths)
     {
         if (!$prefix) {
-            $this->fallbackDirs = (array) $paths;
+            $this->fallbackDirsPsr0 = (array) $paths;
+        } else {
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+        }
+    }
 
-            return;
+    /**
+     * Registers a set of PSR-4 directories for a given namespace,
+     * replacing any others previously set for this namespace.
+     *
+     * @param string       $prefix The prefix/namespace, with trailing '\\'
+     * @param array|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
+     */
+    public function setPsr4($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr4 = (array) $paths;
+        } else {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
         }
-        $this->prefixes[substr($prefix, 0, 1)][$prefix] = (array) $paths;
     }
 
     /**
@@ -156,6 +251,27 @@ class ClassLoader
     }
 
     /**
+     * Turns off searching the prefix and fallback directories for classes
+     * that have not been registered with the class map.
+     *
+     * @param bool $classMapAuthoritative
+     */
+    public function setClassMapAuthoritative($classMapAuthoritative)
+    {
+        $this->classMapAuthoritative = $classMapAuthoritative;
+    }
+
+    /**
+     * Should class lookup fail if not found in the current class map?
+     *
+     * @return bool
+     */
+    public function isClassMapAuthoritative()
+    {
+        return $this->classMapAuthoritative;
+    }
+
+    /**
      * Registers this instance as an autoloader.
      *
      * @param bool $prepend Whether to prepend the autoloader or not
@@ -182,7 +298,7 @@ class ClassLoader
     public function loadClass($class)
     {
         if ($file = $this->findFile($class)) {
-            include $file;
+            includeFile($file);
 
             return true;
         }
@@ -202,45 +318,96 @@ class ClassLoader
             $class = substr($class, 1);
         }
 
+        // class map lookup
         if (isset($this->classMap[$class])) {
             return $this->classMap[$class];
         }
+        if ($this->classMapAuthoritative) {
+            return false;
+        }
+
+        $file = $this->findFileWithExtension($class, '.php');
+
+        // Search for Hack files if we are running on HHVM
+        if ($file === null && defined('HHVM_VERSION')) {
+            $file = $this->findFileWithExtension($class, '.hh');
+        }
+
+        if ($file === null) {
+            // Remember that this class does not exist.
+            return $this->classMap[$class] = false;
+        }
+
+        return $file;
+    }
+
+    private function findFileWithExtension($class, $ext)
+    {
+        // PSR-4 lookup
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+        $first = $class[0];
+        if (isset($this->prefixLengthsPsr4[$first])) {
+            foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-4 fallback dirs
+        foreach ($this->fallbackDirsPsr4 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+                return $file;
+            }
+        }
 
+        // PSR-0 lookup
         if (false !== $pos = strrpos($class, '\\')) {
             // namespaced class name
-            $classPath = strtr(substr($class, 0, $pos), '\\', DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
-            $className = substr($class, $pos + 1);
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
         } else {
             // PEAR-like class name
-            $classPath = null;
-            $className = $class;
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
         }
 
-        $classPath .= strtr($className, '_', DIRECTORY_SEPARATOR) . '.php';
-
-        $first = $class[0];
-        if (isset($this->prefixes[$first])) {
-            foreach ($this->prefixes[$first] as $prefix => $dirs) {
+        if (isset($this->prefixesPsr0[$first])) {
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
                 if (0 === strpos($class, $prefix)) {
                     foreach ($dirs as $dir) {
-                        if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
-                            return $dir . DIRECTORY_SEPARATOR . $classPath;
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                            return $file;
                         }
                     }
                 }
             }
         }
 
-        foreach ($this->fallbackDirs as $dir) {
-            if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
-                return $dir . DIRECTORY_SEPARATOR . $classPath;
+        // PSR-0 fallback dirs
+        foreach ($this->fallbackDirsPsr0 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                return $file;
             }
         }
 
-        if ($this->useIncludePath && $file = stream_resolve_include_path($classPath)) {
+        // PSR-0 include paths.
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
             return $file;
         }
-
-        return $this->classMap[$class] = false;
     }
 }
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+    include $file;
+}
diff --git a/currency/vendor/composer/LICENSE b/currency/vendor/composer/LICENSE
new file mode 100644
index 0000000..c8d57af
--- /dev/null
+++ b/currency/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) 2015 Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/currency/vendor/composer/autoload_classmap.php b/currency/vendor/composer/autoload_classmap.php
index af4ad58..7a91153 100644
--- a/currency/vendor/composer/autoload_classmap.php
+++ b/currency/vendor/composer/autoload_classmap.php
@@ -1,6 +1,6 @@
 <?php
 
-// autoload_classmap.php generated by Composer
+// autoload_classmap.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
diff --git a/currency/vendor/composer/autoload_namespaces.php b/currency/vendor/composer/autoload_namespaces.php
index 8a5c878..b2f4cc8 100644
--- a/currency/vendor/composer/autoload_namespaces.php
+++ b/currency/vendor/composer/autoload_namespaces.php
@@ -1,11 +1,10 @@
 <?php
 
-// autoload_namespaces.php generated by Composer
+// autoload_namespaces.php @generated by Composer
 
 $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 
 return array(
-    'Symfony\\Component\\Yaml' => array($vendorDir . '/symfony/yaml'),
     'BartFeenstra' => array($vendorDir . '/bartfeenstra/cldr/src', $vendorDir . '/bartfeenstra/currency/src'),
 );
diff --git a/currency/vendor/composer/autoload_psr4.php b/currency/vendor/composer/autoload_psr4.php
new file mode 100644
index 0000000..57d4009
--- /dev/null
+++ b/currency/vendor/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
+);
diff --git a/currency/vendor/composer/autoload_real.php b/currency/vendor/composer/autoload_real.php
index e4efd46..e59828e 100644
--- a/currency/vendor/composer/autoload_real.php
+++ b/currency/vendor/composer/autoload_real.php
@@ -1,8 +1,8 @@
 <?php
 
-// autoload_real.php generated by Composer
+// autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03
+class ComposerAutoloaderInit7551799b80a9b1d36802cb41210dad9f
 {
     private static $loader;
 
@@ -19,18 +19,20 @@ class ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03
             return self::$loader;
         }
 
-        spl_autoload_register(array('ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit7551799b80a9b1d36802cb41210dad9f', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03', 'loadClassLoader'));
-
-        $vendorDir = dirname(__DIR__);
-        $baseDir = dirname($vendorDir);
+        spl_autoload_unregister(array('ComposerAutoloaderInit7551799b80a9b1d36802cb41210dad9f', 'loadClassLoader'));
 
         $map = require __DIR__ . '/autoload_namespaces.php';
         foreach ($map as $namespace => $path) {
             $loader->set($namespace, $path);
         }
 
+        $map = require __DIR__ . '/autoload_psr4.php';
+        foreach ($map as $namespace => $path) {
+            $loader->setPsr4($namespace, $path);
+        }
+
         $classMap = require __DIR__ . '/autoload_classmap.php';
         if ($classMap) {
             $loader->addClassMap($classMap);
@@ -41,3 +43,8 @@ class ComposerAutoloaderInitd6e79012324333065af2e5d0c2f07d03
         return $loader;
     }
 }
+
+function composerRequire7551799b80a9b1d36802cb41210dad9f($file)
+{
+    require $file;
+}
diff --git a/currency/vendor/composer/installed.json b/currency/vendor/composer/installed.json
index d2e50be..525f760 100644
--- a/currency/vendor/composer/installed.json
+++ b/currency/vendor/composer/installed.json
@@ -1,11 +1,11 @@
 [
     {
         "name": "bartfeenstra/cldr",
-        "version": "1.x-dev",
-        "version_normalized": "1.9999999.9999999.9999999-dev",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/bartfeenstra/cldr",
+            "url": "https://github.com/bartfeenstra/cldr.git",
             "reference": "256a058858f423bcc1fcdde837888bcd3a8034ca"
         },
         "dist": {
@@ -42,30 +42,33 @@
         ]
     },
     {
-        "name": "symfony/yaml",
-        "version": "v2.1.11",
-        "version_normalized": "2.1.11.0",
-        "target-dir": "Symfony/Component/Yaml",
+        "name": "bartfeenstra/currency",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Yaml.git",
-            "reference": "v2.1.11"
+            "url": "https://github.com/bartfeenstra/currency.git",
+            "reference": "a1b4db3393dc2e7fa567d28a7722ae85bf587035"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.1.11",
-            "reference": "v2.1.11",
+            "url": "https://api.github.com/repos/bartfeenstra/currency/zipball/a1b4db3393dc2e7fa567d28a7722ae85bf587035",
+            "reference": "a1b4db3393dc2e7fa567d28a7722ae85bf587035",
             "shasum": ""
         },
-        "require": {
-            "php": ">=5.3.3"
+        "require-dev": {
+            "phpunit/phpunit": "3.7.*"
         },
-        "time": "2013-05-10 00:09:46",
+        "suggest": {
+            "php": "To use the PHP helpers, you need PHP 5.3 or higher.",
+            "symfony/yaml": "To use the PHP helpers, you need symfony/yaml 2.1."
+        },
+        "time": "2013-07-11 08:54:09",
         "type": "library",
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\Yaml": ""
+                "BartFeenstra": "src"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -74,45 +77,45 @@
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
+                "name": "Bart Feenstra",
+                "email": "bart@mynameisbart.com",
+                "homepage": "http://mynameisbart.com",
+                "role": "Developer"
             }
-        ],
-        "description": "Symfony Yaml Component",
-        "homepage": "http://symfony.com"
+        ]
     },
     {
-        "name": "bartfeenstra/currency",
-        "version": "1.x-dev",
-        "version_normalized": "1.9999999.9999999.9999999-dev",
+        "name": "symfony/yaml",
+        "version": "v2.7.3",
+        "version_normalized": "2.7.3.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/bartfeenstra/currency.git",
-            "reference": "a1b4db3393dc2e7fa567d28a7722ae85bf587035"
+            "url": "https://github.com/symfony/Yaml.git",
+            "reference": "71340e996171474a53f3d29111d046be4ad8a0ff"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/bartfeenstra/currency/zipball/a1b4db3393dc2e7fa567d28a7722ae85bf587035",
-            "reference": "a1b4db3393dc2e7fa567d28a7722ae85bf587035",
+            "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff",
+            "reference": "71340e996171474a53f3d29111d046be4ad8a0ff",
             "shasum": ""
         },
-        "require-dev": {
-            "phpunit/phpunit": "3.7.*"
+        "require": {
+            "php": ">=5.3.9"
         },
-        "suggest": {
-            "php": "To use the PHP helpers, you need PHP 5.3 or higher.",
-            "symfony/yaml": "To use the PHP helpers, you need symfony/yaml 2.1."
+        "require-dev": {
+            "symfony/phpunit-bridge": "~2.7"
         },
-        "time": "2013-07-11 08:54:09",
+        "time": "2015-07-28 14:07:07",
         "type": "library",
-        "installation-source": "source",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.7-dev"
+            }
+        },
+        "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "BartFeenstra": "src"
+            "psr-4": {
+                "Symfony\\Component\\Yaml\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -121,11 +124,15 @@
         ],
         "authors": [
             {
-                "name": "Bart Feenstra",
-                "email": "bart@mynameisbart.com",
-                "homepage": "http://mynameisbart.com",
-                "role": "Developer"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "https://symfony.com/contributors"
             }
-        ]
+        ],
+        "description": "Symfony Yaml Component",
+        "homepage": "https://symfony.com"
     }
 ]
diff --git a/currency/vendor/symfony/yaml/.gitignore b/currency/vendor/symfony/yaml/.gitignore
new file mode 100644
index 0000000..c49a5d8
--- /dev/null
+++ b/currency/vendor/symfony/yaml/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/currency/vendor/symfony/yaml/CHANGELOG.md b/currency/vendor/symfony/yaml/CHANGELOG.md
new file mode 100644
index 0000000..096cf65
--- /dev/null
+++ b/currency/vendor/symfony/yaml/CHANGELOG.md
@@ -0,0 +1,8 @@
+CHANGELOG
+=========
+
+2.1.0
+-----
+
+ * Yaml::parse() does not evaluate loaded files as PHP files by default
+   anymore (call Yaml::enablePhpParsing() to get back the old behavior)
diff --git a/currency/vendor/symfony/yaml/Dumper.php b/currency/vendor/symfony/yaml/Dumper.php
new file mode 100644
index 0000000..39cdcfc
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Dumper.php
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+/**
+ * Dumper dumps PHP variables to YAML strings.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Dumper
+{
+    /**
+     * The amount of spaces to use for indentation of nested nodes.
+     *
+     * @var int
+     */
+    protected $indentation = 4;
+
+    /**
+     * Sets the indentation.
+     *
+     * @param int $num The amount of spaces to use for indentation of nested nodes.
+     */
+    public function setIndentation($num)
+    {
+        $this->indentation = (int) $num;
+    }
+
+    /**
+     * Dumps a PHP value to YAML.
+     *
+     * @param mixed $input                  The PHP value
+     * @param int   $inline                 The level where you switch to inline YAML
+     * @param int   $indent                 The level of indentation (used internally)
+     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool  $objectSupport          true if object support is enabled, false otherwise
+     *
+     * @return string The YAML representation of the PHP value
+     */
+    public function dump($input, $inline = 0, $indent = 0, $exceptionOnInvalidType = false, $objectSupport = false)
+    {
+        $output = '';
+        $prefix = $indent ? str_repeat(' ', $indent) : '';
+
+        if ($inline <= 0 || !is_array($input) || empty($input)) {
+            $output .= $prefix.Inline::dump($input, $exceptionOnInvalidType, $objectSupport);
+        } else {
+            $isAHash = array_keys($input) !== range(0, count($input) - 1);
+
+            foreach ($input as $key => $value) {
+                $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value);
+
+                $output .= sprintf('%s%s%s%s',
+                    $prefix,
+                    $isAHash ? Inline::dump($key, $exceptionOnInvalidType, $objectSupport).':' : '-',
+                    $willBeInlined ? ' ' : "\n",
+                    $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + $this->indentation, $exceptionOnInvalidType, $objectSupport)
+                ).($willBeInlined ? "\n" : '');
+            }
+        }
+
+        return $output;
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Escaper.php b/currency/vendor/symfony/yaml/Escaper.php
new file mode 100644
index 0000000..ac325a2
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Escaper.php
@@ -0,0 +1,97 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+/**
+ * Escaper encapsulates escaping rules for single and double-quoted
+ * YAML strings.
+ *
+ * @author Matthew Lewinski <matthew@lewinski.org>
+ */
+class Escaper
+{
+    // Characters that would cause a dumped string to require double quoting.
+    const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9";
+
+    // Mapping arrays for escaping a double quoted string. The backslash is
+    // first to ensure proper escaping because str_replace operates iteratively
+    // on the input arrays. This ordering of the characters avoids the use of strtr,
+    // which performs more slowly.
+    private static $escapees = array('\\', '\\\\', '\\"', '"',
+                                     "\x00",  "\x01",  "\x02",  "\x03",  "\x04",  "\x05",  "\x06",  "\x07",
+                                     "\x08",  "\x09",  "\x0a",  "\x0b",  "\x0c",  "\x0d",  "\x0e",  "\x0f",
+                                     "\x10",  "\x11",  "\x12",  "\x13",  "\x14",  "\x15",  "\x16",  "\x17",
+                                     "\x18",  "\x19",  "\x1a",  "\x1b",  "\x1c",  "\x1d",  "\x1e",  "\x1f",
+                                     "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9",);
+    private static $escaped = array('\\\\', '\\"', '\\\\', '\\"',
+                                     '\\0',   '\\x01', '\\x02', '\\x03', '\\x04', '\\x05', '\\x06', '\\a',
+                                     '\\b',   '\\t',   '\\n',   '\\v',   '\\f',   '\\r',   '\\x0e', '\\x0f',
+                                     '\\x10', '\\x11', '\\x12', '\\x13', '\\x14', '\\x15', '\\x16', '\\x17',
+                                     '\\x18', '\\x19', '\\x1a', '\\e',   '\\x1c', '\\x1d', '\\x1e', '\\x1f',
+                                     '\\N', '\\_', '\\L', '\\P',);
+
+    /**
+     * Determines if a PHP value would require double quoting in YAML.
+     *
+     * @param string $value A PHP value
+     *
+     * @return bool True if the value would require double quotes.
+     */
+    public static function requiresDoubleQuoting($value)
+    {
+        return preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value);
+    }
+
+    /**
+     * Escapes and surrounds a PHP value with double quotes.
+     *
+     * @param string $value A PHP value
+     *
+     * @return string The quoted, escaped string
+     */
+    public static function escapeWithDoubleQuotes($value)
+    {
+        return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value));
+    }
+
+    /**
+     * Determines if a PHP value would require single quoting in YAML.
+     *
+     * @param string $value A PHP value
+     *
+     * @return bool True if the value would require single quotes.
+     */
+    public static function requiresSingleQuoting($value)
+    {
+        // Determines if a PHP value is entirely composed of a value that would
+        // require single quoting in YAML.
+        if (in_array(strtolower($value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) {
+            return true;
+        }
+
+        // Determines if the PHP value contains any single characters that would
+        // cause it to require single quoting in YAML.
+        return preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ \- ? | < > = ! % @ ` ]/x', $value);
+    }
+
+    /**
+     * Escapes and surrounds a PHP value with single quotes.
+     *
+     * @param string $value A PHP value
+     *
+     * @return string The quoted, escaped string
+     */
+    public static function escapeWithSingleQuotes($value)
+    {
+        return sprintf("'%s'", str_replace('\'', '\'\'', $value));
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Exception/DumpException.php b/currency/vendor/symfony/yaml/Exception/DumpException.php
new file mode 100644
index 0000000..9b3e6de
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Exception/DumpException.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Exception;
+
+/**
+ * Exception class thrown when an error occurs during dumping.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @api
+ */
+class DumpException extends RuntimeException
+{
+}
diff --git a/currency/vendor/symfony/yaml/Exception/ExceptionInterface.php b/currency/vendor/symfony/yaml/Exception/ExceptionInterface.php
new file mode 100644
index 0000000..92e5c2e
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Exception/ExceptionInterface.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Exception;
+
+/**
+ * Exception interface for all exceptions thrown by the component.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @api
+ */
+interface ExceptionInterface
+{
+}
diff --git a/currency/vendor/symfony/yaml/Exception/ParseException.php b/currency/vendor/symfony/yaml/Exception/ParseException.php
new file mode 100644
index 0000000..0447dff
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Exception/ParseException.php
@@ -0,0 +1,148 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Exception;
+
+/**
+ * Exception class thrown when an error occurs during parsing.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @api
+ */
+class ParseException extends RuntimeException
+{
+    private $parsedFile;
+    private $parsedLine;
+    private $snippet;
+    private $rawMessage;
+
+    /**
+     * Constructor.
+     *
+     * @param string     $message    The error message
+     * @param int        $parsedLine The line where the error occurred
+     * @param int        $snippet    The snippet of code near the problem
+     * @param string     $parsedFile The file name where the error occurred
+     * @param \Exception $previous   The previous exception
+     */
+    public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null)
+    {
+        $this->parsedFile = $parsedFile;
+        $this->parsedLine = $parsedLine;
+        $this->snippet = $snippet;
+        $this->rawMessage = $message;
+
+        $this->updateRepr();
+
+        parent::__construct($this->message, 0, $previous);
+    }
+
+    /**
+     * Gets the snippet of code near the error.
+     *
+     * @return string The snippet of code
+     */
+    public function getSnippet()
+    {
+        return $this->snippet;
+    }
+
+    /**
+     * Sets the snippet of code near the error.
+     *
+     * @param string $snippet The code snippet
+     */
+    public function setSnippet($snippet)
+    {
+        $this->snippet = $snippet;
+
+        $this->updateRepr();
+    }
+
+    /**
+     * Gets the filename where the error occurred.
+     *
+     * This method returns null if a string is parsed.
+     *
+     * @return string The filename
+     */
+    public function getParsedFile()
+    {
+        return $this->parsedFile;
+    }
+
+    /**
+     * Sets the filename where the error occurred.
+     *
+     * @param string $parsedFile The filename
+     */
+    public function setParsedFile($parsedFile)
+    {
+        $this->parsedFile = $parsedFile;
+
+        $this->updateRepr();
+    }
+
+    /**
+     * Gets the line where the error occurred.
+     *
+     * @return int The file line
+     */
+    public function getParsedLine()
+    {
+        return $this->parsedLine;
+    }
+
+    /**
+     * Sets the line where the error occurred.
+     *
+     * @param int $parsedLine The file line
+     */
+    public function setParsedLine($parsedLine)
+    {
+        $this->parsedLine = $parsedLine;
+
+        $this->updateRepr();
+    }
+
+    private function updateRepr()
+    {
+        $this->message = $this->rawMessage;
+
+        $dot = false;
+        if ('.' === substr($this->message, -1)) {
+            $this->message = substr($this->message, 0, -1);
+            $dot = true;
+        }
+
+        if (null !== $this->parsedFile) {
+            if (PHP_VERSION_ID >= 50400) {
+                $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
+            } else {
+                $jsonOptions = 0;
+            }
+            $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions));
+        }
+
+        if ($this->parsedLine >= 0) {
+            $this->message .= sprintf(' at line %d', $this->parsedLine);
+        }
+
+        if ($this->snippet) {
+            $this->message .= sprintf(' (near "%s")', $this->snippet);
+        }
+
+        if ($dot) {
+            $this->message .= '.';
+        }
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Exception/RuntimeException.php b/currency/vendor/symfony/yaml/Exception/RuntimeException.php
new file mode 100644
index 0000000..3573bf1
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Exception/RuntimeException.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Exception;
+
+/**
+ * Exception class thrown when an error occurs during parsing.
+ *
+ * @author Romain Neutron <imprec@gmail.com>
+ *
+ * @api
+ */
+class RuntimeException extends \RuntimeException implements ExceptionInterface
+{
+}
diff --git a/currency/vendor/symfony/yaml/Inline.php b/currency/vendor/symfony/yaml/Inline.php
new file mode 100644
index 0000000..6e3877b
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Inline.php
@@ -0,0 +1,546 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+use Symfony\Component\Yaml\Exception\ParseException;
+use Symfony\Component\Yaml\Exception\DumpException;
+
+/**
+ * Inline implements a YAML parser/dumper for the YAML inline syntax.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Inline
+{
+    const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')';
+
+    private static $exceptionOnInvalidType = false;
+    private static $objectSupport = false;
+    private static $objectForMap = false;
+
+    /**
+     * Converts a YAML string to a PHP array.
+     *
+     * @param string $value                  A YAML string
+     * @param bool   $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool   $objectSupport          true if object support is enabled, false otherwise
+     * @param bool   $objectForMap           true if maps should return a stdClass instead of array()
+     * @param array  $references             Mapping of variable names to values
+     *
+     * @return array A PHP array representing the YAML string
+     *
+     * @throws ParseException
+     */
+    public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false, $references = array())
+    {
+        self::$exceptionOnInvalidType = $exceptionOnInvalidType;
+        self::$objectSupport = $objectSupport;
+        self::$objectForMap = $objectForMap;
+
+        $value = trim($value);
+
+        if ('' === $value) {
+            return '';
+        }
+
+        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+            $mbEncoding = mb_internal_encoding();
+            mb_internal_encoding('ASCII');
+        }
+
+        $i = 0;
+        switch ($value[0]) {
+            case '[':
+                $result = self::parseSequence($value, $i, $references);
+                ++$i;
+                break;
+            case '{':
+                $result = self::parseMapping($value, $i, $references);
+                ++$i;
+                break;
+            default:
+                $result = self::parseScalar($value, null, array('"', "'"), $i, true, $references);
+        }
+
+        // some comments are allowed at the end
+        if (preg_replace('/\s+#.*$/A', '', substr($value, $i))) {
+            throw new ParseException(sprintf('Unexpected characters near "%s".', substr($value, $i)));
+        }
+
+        if (isset($mbEncoding)) {
+            mb_internal_encoding($mbEncoding);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Dumps a given PHP variable to a YAML string.
+     *
+     * @param mixed $value                  The PHP variable to convert
+     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool  $objectSupport          true if object support is enabled, false otherwise
+     *
+     * @return string The YAML string representing the PHP array
+     *
+     * @throws DumpException When trying to dump PHP resource
+     */
+    public static function dump($value, $exceptionOnInvalidType = false, $objectSupport = false)
+    {
+        switch (true) {
+            case is_resource($value):
+                if ($exceptionOnInvalidType) {
+                    throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value)));
+                }
+
+                return 'null';
+            case is_object($value):
+                if ($objectSupport) {
+                    return '!!php/object:'.serialize($value);
+                }
+
+                if ($exceptionOnInvalidType) {
+                    throw new DumpException('Object support when dumping a YAML file has been disabled.');
+                }
+
+                return 'null';
+            case is_array($value):
+                return self::dumpArray($value, $exceptionOnInvalidType, $objectSupport);
+            case null === $value:
+                return 'null';
+            case true === $value:
+                return 'true';
+            case false === $value:
+                return 'false';
+            case ctype_digit($value):
+                return is_string($value) ? "'$value'" : (int) $value;
+            case is_numeric($value):
+                $locale = setlocale(LC_NUMERIC, 0);
+                if (false !== $locale) {
+                    setlocale(LC_NUMERIC, 'C');
+                }
+                if (is_float($value)) {
+                    $repr = (string) $value;
+                    if (is_infinite($value)) {
+                        $repr = str_ireplace('INF', '.Inf', $repr);
+                    } elseif (floor($value) == $value && $repr == $value) {
+                        // Preserve float data type since storing a whole number will result in integer value.
+                        $repr = '!!float '.$repr;
+                    }
+                } else {
+                    $repr = is_string($value) ? "'$value'" : (string) $value;
+                }
+                if (false !== $locale) {
+                    setlocale(LC_NUMERIC, $locale);
+                }
+
+                return $repr;
+            case '' == $value:
+                return "''";
+            case Escaper::requiresDoubleQuoting($value):
+                return Escaper::escapeWithDoubleQuotes($value);
+            case Escaper::requiresSingleQuoting($value):
+            case preg_match(self::getHexRegex(), $value):
+            case preg_match(self::getTimestampRegex(), $value):
+                return Escaper::escapeWithSingleQuotes($value);
+            default:
+                return $value;
+        }
+    }
+
+    /**
+     * Dumps a PHP array to a YAML string.
+     *
+     * @param array $value                  The PHP array to dump
+     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool  $objectSupport          true if object support is enabled, false otherwise
+     *
+     * @return string The YAML string representing the PHP array
+     */
+    private static function dumpArray($value, $exceptionOnInvalidType, $objectSupport)
+    {
+        // array
+        $keys = array_keys($value);
+        $keysCount = count($keys);
+        if ((1 === $keysCount && '0' == $keys[0])
+            || ($keysCount > 1 && array_reduce($keys, function ($v, $w) { return (int) $v + $w; }, 0) === $keysCount * ($keysCount - 1) / 2)
+        ) {
+            $output = array();
+            foreach ($value as $val) {
+                $output[] = self::dump($val, $exceptionOnInvalidType, $objectSupport);
+            }
+
+            return sprintf('[%s]', implode(', ', $output));
+        }
+
+        // mapping
+        $output = array();
+        foreach ($value as $key => $val) {
+            $output[] = sprintf('%s: %s', self::dump($key, $exceptionOnInvalidType, $objectSupport), self::dump($val, $exceptionOnInvalidType, $objectSupport));
+        }
+
+        return sprintf('{ %s }', implode(', ', $output));
+    }
+
+    /**
+     * Parses a scalar to a YAML string.
+     *
+     * @param string $scalar
+     * @param string $delimiters
+     * @param array  $stringDelimiters
+     * @param int    &$i
+     * @param bool   $evaluate
+     * @param array  $references
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException When malformed inline YAML string is parsed
+     */
+    public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true, $references = array())
+    {
+        if (in_array($scalar[$i], $stringDelimiters)) {
+            // quoted scalar
+            $output = self::parseQuotedScalar($scalar, $i);
+
+            if (null !== $delimiters) {
+                $tmp = ltrim(substr($scalar, $i), ' ');
+                if (!in_array($tmp[0], $delimiters)) {
+                    throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i)));
+                }
+            }
+        } else {
+            // "normal" string
+            if (!$delimiters) {
+                $output = substr($scalar, $i);
+                $i += strlen($output);
+
+                // remove comments
+                if (false !== $strpos = strpos($output, ' #')) {
+                    $output = rtrim(substr($output, 0, $strpos));
+                }
+            } elseif (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) {
+                $output = $match[1];
+                $i += strlen($output);
+            } else {
+                throw new ParseException(sprintf('Malformed inline YAML string (%s).', $scalar));
+            }
+
+            if ($evaluate) {
+                $output = self::evaluateScalar($output, $references);
+            }
+        }
+
+        return $output;
+    }
+
+    /**
+     * Parses a quoted scalar to YAML.
+     *
+     * @param string $scalar
+     * @param int    &$i
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException When malformed inline YAML string is parsed
+     */
+    private static function parseQuotedScalar($scalar, &$i)
+    {
+        if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) {
+            throw new ParseException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
+        }
+
+        $output = substr($match[0], 1, strlen($match[0]) - 2);
+
+        $unescaper = new Unescaper();
+        if ('"' == $scalar[$i]) {
+            $output = $unescaper->unescapeDoubleQuotedString($output);
+        } else {
+            $output = $unescaper->unescapeSingleQuotedString($output);
+        }
+
+        $i += strlen($match[0]);
+
+        return $output;
+    }
+
+    /**
+     * Parses a sequence to a YAML string.
+     *
+     * @param string $sequence
+     * @param int    &$i
+     * @param array  $references
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException When malformed inline YAML string is parsed
+     */
+    private static function parseSequence($sequence, &$i = 0, $references = array())
+    {
+        $output = array();
+        $len = strlen($sequence);
+        ++$i;
+
+        // [foo, bar, ...]
+        while ($i < $len) {
+            switch ($sequence[$i]) {
+                case '[':
+                    // nested sequence
+                    $output[] = self::parseSequence($sequence, $i, $references);
+                    break;
+                case '{':
+                    // nested mapping
+                    $output[] = self::parseMapping($sequence, $i, $references);
+                    break;
+                case ']':
+                    return $output;
+                case ',':
+                case ' ':
+                    break;
+                default:
+                    $isQuoted = in_array($sequence[$i], array('"', "'"));
+                    $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i, true, $references);
+
+                    // the value can be an array if a reference has been resolved to an array var
+                    if (!is_array($value) && !$isQuoted && false !== strpos($value, ': ')) {
+                        // embedded mapping?
+                        try {
+                            $pos = 0;
+                            $value = self::parseMapping('{'.$value.'}', $pos, $references);
+                        } catch (\InvalidArgumentException $e) {
+                            // no, it's not
+                        }
+                    }
+
+                    $output[] = $value;
+
+                    --$i;
+            }
+
+            ++$i;
+        }
+
+        throw new ParseException(sprintf('Malformed inline YAML string %s', $sequence));
+    }
+
+    /**
+     * Parses a mapping to a YAML string.
+     *
+     * @param string $mapping
+     * @param int    &$i
+     * @param array  $references
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException When malformed inline YAML string is parsed
+     */
+    private static function parseMapping($mapping, &$i = 0, $references = array())
+    {
+        $output = array();
+        $len = strlen($mapping);
+        ++$i;
+
+        // {foo: bar, bar:foo, ...}
+        while ($i < $len) {
+            switch ($mapping[$i]) {
+                case ' ':
+                case ',':
+                    ++$i;
+                    continue 2;
+                case '}':
+                    if (self::$objectForMap) {
+                        return (object) $output;
+                    }
+
+                    return $output;
+            }
+
+            // key
+            $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false);
+
+            // value
+            $done = false;
+
+            while ($i < $len) {
+                switch ($mapping[$i]) {
+                    case '[':
+                        // nested sequence
+                        $value = self::parseSequence($mapping, $i, $references);
+                        // Spec: Keys MUST be unique; first one wins.
+                        // Parser cannot abort this mapping earlier, since lines
+                        // are processed sequentially.
+                        if (!isset($output[$key])) {
+                            $output[$key] = $value;
+                        }
+                        $done = true;
+                        break;
+                    case '{':
+                        // nested mapping
+                        $value = self::parseMapping($mapping, $i, $references);
+                        // Spec: Keys MUST be unique; first one wins.
+                        // Parser cannot abort this mapping earlier, since lines
+                        // are processed sequentially.
+                        if (!isset($output[$key])) {
+                            $output[$key] = $value;
+                        }
+                        $done = true;
+                        break;
+                    case ':':
+                    case ' ':
+                        break;
+                    default:
+                        $value = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i, true, $references);
+                        // Spec: Keys MUST be unique; first one wins.
+                        // Parser cannot abort this mapping earlier, since lines
+                        // are processed sequentially.
+                        if (!isset($output[$key])) {
+                            $output[$key] = $value;
+                        }
+                        $done = true;
+                        --$i;
+                }
+
+                ++$i;
+
+                if ($done) {
+                    continue 2;
+                }
+            }
+        }
+
+        throw new ParseException(sprintf('Malformed inline YAML string %s', $mapping));
+    }
+
+    /**
+     * Evaluates scalars and replaces magic values.
+     *
+     * @param string $scalar
+     * @param array  $references
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved
+     */
+    private static function evaluateScalar($scalar, $references = array())
+    {
+        $scalar = trim($scalar);
+        $scalarLower = strtolower($scalar);
+
+        if (0 === strpos($scalar, '*')) {
+            if (false !== $pos = strpos($scalar, '#')) {
+                $value = substr($scalar, 1, $pos - 2);
+            } else {
+                $value = substr($scalar, 1);
+            }
+
+            // an unquoted *
+            if (false === $value || '' === $value) {
+                throw new ParseException('A reference must contain at least one character.');
+            }
+
+            if (!array_key_exists($value, $references)) {
+                throw new ParseException(sprintf('Reference "%s" does not exist.', $value));
+            }
+
+            return $references[$value];
+        }
+
+        switch (true) {
+            case 'null' === $scalarLower:
+            case '' === $scalar:
+            case '~' === $scalar:
+                return;
+            case 'true' === $scalarLower:
+                return true;
+            case 'false' === $scalarLower:
+                return false;
+            // Optimise for returning strings.
+            case $scalar[0] === '+' || $scalar[0] === '-' || $scalar[0] === '.' || $scalar[0] === '!' || is_numeric($scalar[0]):
+                switch (true) {
+                    case 0 === strpos($scalar, '!str'):
+                        return (string) substr($scalar, 5);
+                    case 0 === strpos($scalar, '! '):
+                        return (int) self::parseScalar(substr($scalar, 2));
+                    case 0 === strpos($scalar, '!!php/object:'):
+                        if (self::$objectSupport) {
+                            return unserialize(substr($scalar, 13));
+                        }
+
+                        if (self::$exceptionOnInvalidType) {
+                            throw new ParseException('Object support when parsing a YAML file has been disabled.');
+                        }
+
+                        return;
+                    case 0 === strpos($scalar, '!!float '):
+                        return (float) substr($scalar, 8);
+                    case ctype_digit($scalar):
+                        $raw = $scalar;
+                        $cast = (int) $scalar;
+
+                        return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw);
+                    case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)):
+                        $raw = $scalar;
+                        $cast = (int) $scalar;
+
+                        return '0' == $scalar[1] ? octdec($scalar) : (((string) $raw === (string) $cast) ? $cast : $raw);
+                    case is_numeric($scalar):
+                    case preg_match(self::getHexRegex(), $scalar):
+                        return '0x' === $scalar[0].$scalar[1] ? hexdec($scalar) : (float) $scalar;
+                    case '.inf' === $scalarLower:
+                    case '.nan' === $scalarLower:
+                        return -log(0);
+                    case '-.inf' === $scalarLower:
+                        return log(0);
+                    case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar):
+                        return (float) str_replace(',', '', $scalar);
+                    case preg_match(self::getTimestampRegex(), $scalar):
+                        return strtotime($scalar);
+                }
+            default:
+                return (string) $scalar;
+        }
+    }
+
+    /**
+     * Gets a regex that matches a YAML date.
+     *
+     * @return string The regular expression
+     *
+     * @see http://www.yaml.org/spec/1.2/spec.html#id2761573
+     */
+    private static function getTimestampRegex()
+    {
+        return <<<EOF
+        ~^
+        (?P<year>[0-9][0-9][0-9][0-9])
+        -(?P<month>[0-9][0-9]?)
+        -(?P<day>[0-9][0-9]?)
+        (?:(?:[Tt]|[ \t]+)
+        (?P<hour>[0-9][0-9]?)
+        :(?P<minute>[0-9][0-9])
+        :(?P<second>[0-9][0-9])
+        (?:\.(?P<fraction>[0-9]*))?
+        (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
+        (?::(?P<tz_minute>[0-9][0-9]))?))?)?
+        $~x
+EOF;
+    }
+
+    /**
+     * Gets a regex that matches a YAML number in hexadecimal notation.
+     *
+     * @return string
+     */
+    private static function getHexRegex()
+    {
+        return '~^0x[0-9a-f]++$~i';
+    }
+}
diff --git a/currency/vendor/symfony/yaml/LICENSE b/currency/vendor/symfony/yaml/LICENSE
new file mode 100644
index 0000000..43028bc
--- /dev/null
+++ b/currency/vendor/symfony/yaml/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2004-2015 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/currency/vendor/symfony/yaml/Parser.php b/currency/vendor/symfony/yaml/Parser.php
new file mode 100644
index 0000000..2de62e5
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Parser.php
@@ -0,0 +1,697 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+use Symfony\Component\Yaml\Exception\ParseException;
+
+/**
+ * Parser parses YAML strings to convert them to PHP arrays.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Parser
+{
+    const FOLDED_SCALAR_PATTERN = '(?P<separator>\||>)(?P<modifiers>\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P<comments> +#.*)?';
+
+    private $offset = 0;
+    private $lines = array();
+    private $currentLineNb = -1;
+    private $currentLine = '';
+    private $refs = array();
+
+    /**
+     * Constructor.
+     *
+     * @param int $offset The offset of YAML document (used for line numbers in error messages)
+     */
+    public function __construct($offset = 0)
+    {
+        $this->offset = $offset;
+    }
+
+    /**
+     * Parses a YAML string to a PHP value.
+     *
+     * @param string $value                  A YAML string
+     * @param bool   $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool   $objectSupport          true if object support is enabled, false otherwise
+     * @param bool   $objectForMap           true if maps should return a stdClass instead of array()
+     *
+     * @return mixed A PHP value
+     *
+     * @throws ParseException If the YAML is not valid
+     */
+    public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false)
+    {
+        if (!preg_match('//u', $value)) {
+            throw new ParseException('The YAML value does not appear to be valid UTF-8.');
+        }
+        $this->currentLineNb = -1;
+        $this->currentLine = '';
+        $value = $this->cleanup($value);
+        $this->lines = explode("\n", $value);
+
+        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
+            $mbEncoding = mb_internal_encoding();
+            mb_internal_encoding('UTF-8');
+        }
+
+        $data = array();
+        $context = null;
+        $allowOverwrite = false;
+        while ($this->moveToNextLine()) {
+            if ($this->isCurrentLineEmpty()) {
+                continue;
+            }
+
+            // tab?
+            if ("\t" === $this->currentLine[0]) {
+                throw new ParseException('A YAML file cannot contain tabs as indentation.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
+            }
+
+            $isRef = $mergeNode = false;
+            if (preg_match('#^\-((?P<leadspaces>\s+)(?P<value>.+?))?\s*$#u', $this->currentLine, $values)) {
+                if ($context && 'mapping' == $context) {
+                    throw new ParseException('You cannot define a sequence item when in a mapping');
+                }
+                $context = 'sequence';
+
+                if (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
+                    $isRef = $matches['ref'];
+                    $values['value'] = $matches['value'];
+                }
+
+                // array
+                if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
+                    $c = $this->getRealCurrentLineNb() + 1;
+                    $parser = new self($c);
+                    $parser->refs = &$this->refs;
+                    $data[] = $parser->parse($this->getNextEmbedBlock(null, true), $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                } else {
+                    if (isset($values['leadspaces'])
+                        && preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\{\[].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $values['value'], $matches)
+                    ) {
+                        // this is a compact notation element, add to next block and parse
+                        $c = $this->getRealCurrentLineNb();
+                        $parser = new self($c);
+                        $parser->refs = &$this->refs;
+
+                        $block = $values['value'];
+                        if ($this->isNextLineIndented()) {
+                            $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + strlen($values['leadspaces']) + 1);
+                        }
+
+                        $data[] = $parser->parse($block, $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                    } else {
+                        $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                    }
+                }
+            } elseif (preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $this->currentLine, $values) && (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))) {
+                if ($context && 'sequence' == $context) {
+                    throw new ParseException('You cannot define a mapping item when in a sequence');
+                }
+                $context = 'mapping';
+
+                // force correct settings
+                Inline::parse(null, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
+                try {
+                    $key = Inline::parseScalar($values['key']);
+                } catch (ParseException $e) {
+                    $e->setParsedLine($this->getRealCurrentLineNb() + 1);
+                    $e->setSnippet($this->currentLine);
+
+                    throw $e;
+                }
+
+                if ('<<' === $key) {
+                    $mergeNode = true;
+                    $allowOverwrite = true;
+                    if (isset($values['value']) && 0 === strpos($values['value'], '*')) {
+                        $refName = substr($values['value'], 1);
+                        if (!array_key_exists($refName, $this->refs)) {
+                            throw new ParseException(sprintf('Reference "%s" does not exist.', $refName), $this->getRealCurrentLineNb() + 1, $this->currentLine);
+                        }
+
+                        $refValue = $this->refs[$refName];
+
+                        if (!is_array($refValue)) {
+                            throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
+                        }
+
+                        foreach ($refValue as $key => $value) {
+                            if (!isset($data[$key])) {
+                                $data[$key] = $value;
+                            }
+                        }
+                    } else {
+                        if (isset($values['value']) && $values['value'] !== '') {
+                            $value = $values['value'];
+                        } else {
+                            $value = $this->getNextEmbedBlock();
+                        }
+                        $c = $this->getRealCurrentLineNb() + 1;
+                        $parser = new self($c);
+                        $parser->refs = &$this->refs;
+                        $parsed = $parser->parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap);
+
+                        if (!is_array($parsed)) {
+                            throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
+                        }
+
+                        if (isset($parsed[0])) {
+                            // If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes
+                            // and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier
+                            // in the sequence override keys specified in later mapping nodes.
+                            foreach ($parsed as $parsedItem) {
+                                if (!is_array($parsedItem)) {
+                                    throw new ParseException('Merge items must be arrays.', $this->getRealCurrentLineNb() + 1, $parsedItem);
+                                }
+
+                                foreach ($parsedItem as $key => $value) {
+                                    if (!isset($data[$key])) {
+                                        $data[$key] = $value;
+                                    }
+                                }
+                            }
+                        } else {
+                            // If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the
+                            // current mapping, unless the key already exists in it.
+                            foreach ($parsed as $key => $value) {
+                                if (!isset($data[$key])) {
+                                    $data[$key] = $value;
+                                }
+                            }
+                        }
+                    }
+                } elseif (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
+                    $isRef = $matches['ref'];
+                    $values['value'] = $matches['value'];
+                }
+
+                if ($mergeNode) {
+                    // Merge keys
+                } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
+                    // hash
+                    // if next line is less indented or equal, then it means that the current value is null
+                    if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) {
+                        // Spec: Keys MUST be unique; first one wins.
+                        // But overwriting is allowed when a merge node is used in current block.
+                        if ($allowOverwrite || !isset($data[$key])) {
+                            $data[$key] = null;
+                        }
+                    } else {
+                        $c = $this->getRealCurrentLineNb() + 1;
+                        $parser = new self($c);
+                        $parser->refs = &$this->refs;
+                        $value = $parser->parse($this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                        // Spec: Keys MUST be unique; first one wins.
+                        // But overwriting is allowed when a merge node is used in current block.
+                        if ($allowOverwrite || !isset($data[$key])) {
+                            $data[$key] = $value;
+                        }
+                    }
+                } else {
+                    $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap);
+                    // Spec: Keys MUST be unique; first one wins.
+                    // But overwriting is allowed when a merge node is used in current block.
+                    if ($allowOverwrite || !isset($data[$key])) {
+                        $data[$key] = $value;
+                    }
+                }
+            } else {
+                // multiple documents are not supported
+                if ('---' === $this->currentLine) {
+                    throw new ParseException('Multiple documents are not supported.');
+                }
+
+                // 1-liner optionally followed by newline(s)
+                if (is_string($value) && $this->lines[0] === trim($value)) {
+                    try {
+                        $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
+                    } catch (ParseException $e) {
+                        $e->setParsedLine($this->getRealCurrentLineNb() + 1);
+                        $e->setSnippet($this->currentLine);
+
+                        throw $e;
+                    }
+
+                    if (is_array($value)) {
+                        $first = reset($value);
+                        if (is_string($first) && 0 === strpos($first, '*')) {
+                            $data = array();
+                            foreach ($value as $alias) {
+                                $data[] = $this->refs[substr($alias, 1)];
+                            }
+                            $value = $data;
+                        }
+                    }
+
+                    if (isset($mbEncoding)) {
+                        mb_internal_encoding($mbEncoding);
+                    }
+
+                    return $value;
+                }
+
+                switch (preg_last_error()) {
+                    case PREG_INTERNAL_ERROR:
+                        $error = 'Internal PCRE error.';
+                        break;
+                    case PREG_BACKTRACK_LIMIT_ERROR:
+                        $error = 'pcre.backtrack_limit reached.';
+                        break;
+                    case PREG_RECURSION_LIMIT_ERROR:
+                        $error = 'pcre.recursion_limit reached.';
+                        break;
+                    case PREG_BAD_UTF8_ERROR:
+                        $error = 'Malformed UTF-8 data.';
+                        break;
+                    case PREG_BAD_UTF8_OFFSET_ERROR:
+                        $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point.';
+                        break;
+                    default:
+                        $error = 'Unable to parse.';
+                }
+
+                throw new ParseException($error, $this->getRealCurrentLineNb() + 1, $this->currentLine);
+            }
+
+            if ($isRef) {
+                $this->refs[$isRef] = end($data);
+            }
+        }
+
+        if (isset($mbEncoding)) {
+            mb_internal_encoding($mbEncoding);
+        }
+
+        return empty($data) ? null : $data;
+    }
+
+    /**
+     * Returns the current line number (takes the offset into account).
+     *
+     * @return int The current line number
+     */
+    private function getRealCurrentLineNb()
+    {
+        return $this->currentLineNb + $this->offset;
+    }
+
+    /**
+     * Returns the current line indentation.
+     *
+     * @return int The current line indentation
+     */
+    private function getCurrentLineIndentation()
+    {
+        return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' '));
+    }
+
+    /**
+     * Returns the next embed block of YAML.
+     *
+     * @param int  $indentation The indent level at which the block is to be read, or null for default
+     * @param bool $inSequence  True if the enclosing data structure is a sequence
+     *
+     * @return string A YAML string
+     *
+     * @throws ParseException When indentation problem are detected
+     */
+    private function getNextEmbedBlock($indentation = null, $inSequence = false)
+    {
+        $oldLineIndentation = $this->getCurrentLineIndentation();
+
+        if (!$this->moveToNextLine()) {
+            return;
+        }
+
+        if (null === $indentation) {
+            $newIndent = $this->getCurrentLineIndentation();
+
+            $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem($this->currentLine);
+
+            if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) {
+                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
+            }
+        } else {
+            $newIndent = $indentation;
+        }
+
+        $data = array();
+        if ($this->getCurrentLineIndentation() >= $newIndent) {
+            $data[] = substr($this->currentLine, $newIndent);
+        } else {
+            $this->moveToPreviousLine();
+
+            return;
+        }
+
+        if ($inSequence && $oldLineIndentation === $newIndent && isset($data[0][0]) && '-' === $data[0][0]) {
+            // the previous line contained a dash but no item content, this line is a sequence item with the same indentation
+            // and therefore no nested list or mapping
+            $this->moveToPreviousLine();
+
+            return;
+        }
+
+        $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);
+
+        // Comments must not be removed inside a string block (ie. after a line ending with "|")
+        $removeCommentsPattern = '~'.self::FOLDED_SCALAR_PATTERN.'$~';
+        $removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
+
+        while ($this->moveToNextLine()) {
+            $indent = $this->getCurrentLineIndentation();
+
+            if ($indent === $newIndent) {
+                $removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
+            }
+
+            if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine) && $newIndent === $indent) {
+                $this->moveToPreviousLine();
+                break;
+            }
+
+            if ($this->isCurrentLineBlank()) {
+                $data[] = substr($this->currentLine, $newIndent);
+                continue;
+            }
+
+            if ($removeComments && $this->isCurrentLineComment()) {
+                continue;
+            }
+
+            if ($indent >= $newIndent) {
+                $data[] = substr($this->currentLine, $newIndent);
+            } elseif (0 == $indent) {
+                $this->moveToPreviousLine();
+
+                break;
+            } else {
+                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
+            }
+        }
+
+        return implode("\n", $data);
+    }
+
+    /**
+     * Moves the parser to the next line.
+     *
+     * @return bool
+     */
+    private function moveToNextLine()
+    {
+        if ($this->currentLineNb >= count($this->lines) - 1) {
+            return false;
+        }
+
+        $this->currentLine = $this->lines[++$this->currentLineNb];
+
+        return true;
+    }
+
+    /**
+     * Moves the parser to the previous line.
+     */
+    private function moveToPreviousLine()
+    {
+        $this->currentLine = $this->lines[--$this->currentLineNb];
+    }
+
+    /**
+     * Parses a YAML value.
+     *
+     * @param string $value                  A YAML value
+     * @param bool   $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise
+     * @param bool   $objectSupport          True if object support is enabled, false otherwise
+     * @param bool   $objectForMap           true if maps should return a stdClass instead of array()
+     *
+     * @return mixed A PHP value
+     *
+     * @throws ParseException When reference does not exist
+     */
+    private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap)
+    {
+        if (0 === strpos($value, '*')) {
+            if (false !== $pos = strpos($value, '#')) {
+                $value = substr($value, 1, $pos - 2);
+            } else {
+                $value = substr($value, 1);
+            }
+
+            if (!array_key_exists($value, $this->refs)) {
+                throw new ParseException(sprintf('Reference "%s" does not exist.', $value), $this->currentLine);
+            }
+
+            return $this->refs[$value];
+        }
+
+        if (preg_match('/^'.self::FOLDED_SCALAR_PATTERN.'$/', $value, $matches)) {
+            $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : '';
+
+            return $this->parseFoldedScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), (int) abs($modifiers));
+        }
+
+        try {
+            return Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
+        } catch (ParseException $e) {
+            $e->setParsedLine($this->getRealCurrentLineNb() + 1);
+            $e->setSnippet($this->currentLine);
+
+            throw $e;
+        }
+    }
+
+    /**
+     * Parses a folded scalar.
+     *
+     * @param string $separator   The separator that was used to begin this folded scalar (| or >)
+     * @param string $indicator   The indicator that was used to begin this folded scalar (+ or -)
+     * @param int    $indentation The indentation that was used to begin this folded scalar
+     *
+     * @return string The text value
+     */
+    private function parseFoldedScalar($separator, $indicator = '', $indentation = 0)
+    {
+        $notEOF = $this->moveToNextLine();
+        if (!$notEOF) {
+            return '';
+        }
+
+        $isCurrentLineBlank = $this->isCurrentLineBlank();
+        $text = '';
+
+        // leading blank lines are consumed before determining indentation
+        while ($notEOF && $isCurrentLineBlank) {
+            // newline only if not EOF
+            if ($notEOF = $this->moveToNextLine()) {
+                $text .= "\n";
+                $isCurrentLineBlank = $this->isCurrentLineBlank();
+            }
+        }
+
+        // determine indentation if not specified
+        if (0 === $indentation) {
+            if (preg_match('/^ +/', $this->currentLine, $matches)) {
+                $indentation = strlen($matches[0]);
+            }
+        }
+
+        if ($indentation > 0) {
+            $pattern = sprintf('/^ {%d}(.*)$/', $indentation);
+
+            while (
+                $notEOF && (
+                    $isCurrentLineBlank ||
+                    preg_match($pattern, $this->currentLine, $matches)
+                )
+            ) {
+                if ($isCurrentLineBlank) {
+                    $text .= substr($this->currentLine, $indentation);
+                } else {
+                    $text .= $matches[1];
+                }
+
+                // newline only if not EOF
+                if ($notEOF = $this->moveToNextLine()) {
+                    $text .= "\n";
+                    $isCurrentLineBlank = $this->isCurrentLineBlank();
+                }
+            }
+        } elseif ($notEOF) {
+            $text .= "\n";
+        }
+
+        if ($notEOF) {
+            $this->moveToPreviousLine();
+        }
+
+        // replace all non-trailing single newlines with spaces in folded blocks
+        if ('>' === $separator) {
+            preg_match('/(\n*)$/', $text, $matches);
+            $text = preg_replace('/(?<!\n)\n(?!\n)/', ' ', rtrim($text, "\n"));
+            $text .= $matches[1];
+        }
+
+        // deal with trailing newlines as indicated
+        if ('' === $indicator) {
+            $text = preg_replace('/\n+$/', "\n", $text);
+        } elseif ('-' === $indicator) {
+            $text = preg_replace('/\n+$/', '', $text);
+        }
+
+        return $text;
+    }
+
+    /**
+     * Returns true if the next line is indented.
+     *
+     * @return bool Returns true if the next line is indented, false otherwise
+     */
+    private function isNextLineIndented()
+    {
+        $currentIndentation = $this->getCurrentLineIndentation();
+        $EOF = !$this->moveToNextLine();
+
+        while (!$EOF && $this->isCurrentLineEmpty()) {
+            $EOF = !$this->moveToNextLine();
+        }
+
+        if ($EOF) {
+            return false;
+        }
+
+        $ret = false;
+        if ($this->getCurrentLineIndentation() > $currentIndentation) {
+            $ret = true;
+        }
+
+        $this->moveToPreviousLine();
+
+        return $ret;
+    }
+
+    /**
+     * Returns true if the current line is blank or if it is a comment line.
+     *
+     * @return bool Returns true if the current line is empty or if it is a comment line, false otherwise
+     */
+    private function isCurrentLineEmpty()
+    {
+        return $this->isCurrentLineBlank() || $this->isCurrentLineComment();
+    }
+
+    /**
+     * Returns true if the current line is blank.
+     *
+     * @return bool Returns true if the current line is blank, false otherwise
+     */
+    private function isCurrentLineBlank()
+    {
+        return '' == trim($this->currentLine, ' ');
+    }
+
+    /**
+     * Returns true if the current line is a comment line.
+     *
+     * @return bool Returns true if the current line is a comment line, false otherwise
+     */
+    private function isCurrentLineComment()
+    {
+        //checking explicitly the first char of the trim is faster than loops or strpos
+        $ltrimmedLine = ltrim($this->currentLine, ' ');
+
+        return $ltrimmedLine[0] === '#';
+    }
+
+    /**
+     * Cleanups a YAML string to be parsed.
+     *
+     * @param string $value The input YAML string
+     *
+     * @return string A cleaned up YAML string
+     */
+    private function cleanup($value)
+    {
+        $value = str_replace(array("\r\n", "\r"), "\n", $value);
+
+        // strip YAML header
+        $count = 0;
+        $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count);
+        $this->offset += $count;
+
+        // remove leading comments
+        $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count);
+        if ($count == 1) {
+            // items have been removed, update the offset
+            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
+            $value = $trimmedValue;
+        }
+
+        // remove start of the document marker (---)
+        $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count);
+        if ($count == 1) {
+            // items have been removed, update the offset
+            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
+            $value = $trimmedValue;
+
+            // remove end of the document marker (...)
+            $value = preg_replace('#\.\.\.\s*$#', '', $value);
+        }
+
+        return $value;
+    }
+
+    /**
+     * Returns true if the next line starts unindented collection.
+     *
+     * @return bool Returns true if the next line starts unindented collection, false otherwise
+     */
+    private function isNextLineUnIndentedCollection()
+    {
+        $currentIndentation = $this->getCurrentLineIndentation();
+        $notEOF = $this->moveToNextLine();
+
+        while ($notEOF && $this->isCurrentLineEmpty()) {
+            $notEOF = $this->moveToNextLine();
+        }
+
+        if (false === $notEOF) {
+            return false;
+        }
+
+        $ret = false;
+        if (
+            $this->getCurrentLineIndentation() == $currentIndentation
+            &&
+            $this->isStringUnIndentedCollectionItem($this->currentLine)
+        ) {
+            $ret = true;
+        }
+
+        $this->moveToPreviousLine();
+
+        return $ret;
+    }
+
+    /**
+     * Returns true if the string is un-indented collection item.
+     *
+     * @return bool Returns true if the string is un-indented collection item, false otherwise
+     */
+    private function isStringUnIndentedCollectionItem()
+    {
+        return (0 === strpos($this->currentLine, '- '));
+    }
+}
diff --git a/currency/vendor/symfony/yaml/README.md b/currency/vendor/symfony/yaml/README.md
new file mode 100644
index 0000000..85a9786
--- /dev/null
+++ b/currency/vendor/symfony/yaml/README.md
@@ -0,0 +1,21 @@
+Yaml Component
+==============
+
+YAML implements most of the YAML 1.2 specification.
+
+```php
+use Symfony\Component\Yaml\Yaml;
+
+$array = Yaml::parse(file_get_contents(filename));
+
+print Yaml::dump($array);
+```
+
+Resources
+---------
+
+You can run the unit tests with the following command:
+
+    $ cd path/to/Symfony/Component/Yaml/
+    $ composer install
+    $ phpunit
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md
deleted file mode 100644
index 096cf65..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md
+++ /dev/null
@@ -1,8 +0,0 @@
-CHANGELOG
-=========
-
-2.1.0
------
-
- * Yaml::parse() does not evaluate loaded files as PHP files by default
-   anymore (call Yaml::enablePhpParsing() to get back the old behavior)
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Dumper.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Dumper.php
deleted file mode 100644
index 1b2a251..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Dumper.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-/**
- * Dumper dumps PHP variables to YAML strings.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Dumper
-{
-    /**
-     * The amount of spaces to use for indentation of nested nodes.
-     *
-     * @var integer
-     */
-    protected $indentation = 4;
-
-    /**
-     * Sets the indentation.
-     *
-     * @param integer $num The amount of spaces to use for intendation of nested nodes.
-     */
-    public function setIndentation($num)
-    {
-        $this->indentation = (int) $num;
-    }
-
-    /**
-     * Dumps a PHP value to YAML.
-     *
-     * @param mixed   $input                  The PHP value
-     * @param integer $inline                 The level where you switch to inline YAML
-     * @param integer $indent                 The level of indentation (used internally)
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string  The YAML representation of the PHP value
-     */
-    public function dump($input, $inline = 0, $indent = 0, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        $output = '';
-        $prefix = $indent ? str_repeat(' ', $indent) : '';
-
-        if ($inline <= 0 || !is_array($input) || empty($input)) {
-            $output .= $prefix.Inline::dump($input, $exceptionOnInvalidType, $objectSupport);
-        } else {
-            $isAHash = array_keys($input) !== range(0, count($input) - 1);
-
-            foreach ($input as $key => $value) {
-                $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value);
-
-                $output .= sprintf('%s%s%s%s',
-                    $prefix,
-                    $isAHash ? Inline::dump($key, $exceptionOnInvalidType, $objectSupport).':' : '-',
-                    $willBeInlined ? ' ' : "\n",
-                    $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + $this->indentation, $exceptionOnInvalidType, $objectSupport)
-                ).($willBeInlined ? "\n" : '');
-            }
-        }
-
-        return $output;
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php
deleted file mode 100644
index f77545d..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-/**
- * Escaper encapsulates escaping rules for single and double-quoted
- * YAML strings.
- *
- * @author Matthew Lewinski <matthew@lewinski.org>
- */
-class Escaper
-{
-    // Characters that would cause a dumped string to require double quoting.
-    const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9";
-
-    // Mapping arrays for escaping a double quoted string. The backslash is
-    // first to ensure proper escaping because str_replace operates iteratively
-    // on the input arrays. This ordering of the characters avoids the use of strtr,
-    // which performs more slowly.
-    private static $escapees = array('\\\\', '\\"', '"',
-                                     "\x00",  "\x01",  "\x02",  "\x03",  "\x04",  "\x05",  "\x06",  "\x07",
-                                     "\x08",  "\x09",  "\x0a",  "\x0b",  "\x0c",  "\x0d",  "\x0e",  "\x0f",
-                                     "\x10",  "\x11",  "\x12",  "\x13",  "\x14",  "\x15",  "\x16",  "\x17",
-                                     "\x18",  "\x19",  "\x1a",  "\x1b",  "\x1c",  "\x1d",  "\x1e",  "\x1f",
-                                     "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9");
-    private static $escaped  = array('\\"', '\\\\', '\\"',
-                                     "\\0",   "\\x01", "\\x02", "\\x03", "\\x04", "\\x05", "\\x06", "\\a",
-                                     "\\b",   "\\t",   "\\n",   "\\v",   "\\f",   "\\r",   "\\x0e", "\\x0f",
-                                     "\\x10", "\\x11", "\\x12", "\\x13", "\\x14", "\\x15", "\\x16", "\\x17",
-                                     "\\x18", "\\x19", "\\x1a", "\\e",   "\\x1c", "\\x1d", "\\x1e", "\\x1f",
-                                     "\\N", "\\_", "\\L", "\\P");
-
-    /**
-     * Determines if a PHP value would require double quoting in YAML.
-     *
-     * @param string $value A PHP value
-     *
-     * @return Boolean True if the value would require double quotes.
-     */
-    public static function requiresDoubleQuoting($value)
-    {
-        return preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value);
-    }
-
-    /**
-     * Escapes and surrounds a PHP value with double quotes.
-     *
-     * @param string $value A PHP value
-     *
-     * @return string The quoted, escaped string
-     */
-    public static function escapeWithDoubleQuotes($value)
-    {
-        return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value));
-    }
-
-    /**
-     * Determines if a PHP value would require single quoting in YAML.
-     *
-     * @param string $value A PHP value
-     *
-     * @return Boolean True if the value would require single quotes.
-     */
-    public static function requiresSingleQuoting($value)
-    {
-        return preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ - ? | < > = ! % @ ` ]/x', $value);
-    }
-
-    /**
-     * Escapes and surrounds a PHP value with single quotes.
-     *
-     * @param string $value A PHP value
-     *
-     * @return string The quoted, escaped string
-     */
-    public static function escapeWithSingleQuotes($value)
-    {
-        return sprintf("'%s'", str_replace('\'', '\'\'', $value));
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/DumpException.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/DumpException.php
deleted file mode 100644
index 53952ce..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/DumpException.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Exception;
-
-/**
- * Exception class thrown when an error occurs during dumping.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
-class DumpException extends \RuntimeException implements ExceptionInterface
-{
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ExceptionInterface.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ExceptionInterface.php
deleted file mode 100644
index 92e5c2e..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Exception;
-
-/**
- * Exception interface for all exceptions thrown by the component.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
-interface ExceptionInterface
-{
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php
deleted file mode 100644
index 975fe6d..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Exception;
-
-/**
- * Exception class thrown when an error occurs during parsing.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
-class ParseException extends \RuntimeException implements ExceptionInterface
-{
-    private $parsedFile;
-    private $parsedLine;
-    private $snippet;
-    private $rawMessage;
-
-    /**
-     * Constructor.
-     *
-     * @param string    $message    The error message
-     * @param integer   $parsedLine The line where the error occurred
-     * @param integer   $snippet    The snippet of code near the problem
-     * @param string    $parsedFile The file name where the error occurred
-     * @param Exception $previous   The previous exception
-     */
-    public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, Exception $previous = null)
-    {
-        $this->parsedFile = $parsedFile;
-        $this->parsedLine = $parsedLine;
-        $this->snippet = $snippet;
-        $this->rawMessage = $message;
-
-        $this->updateRepr();
-
-        parent::__construct($this->message, 0, $previous);
-    }
-
-    /**
-     * Gets the snippet of code near the error.
-     *
-     * @return string The snippet of code
-     */
-    public function getSnippet()
-    {
-        return $this->snippet;
-    }
-
-    /**
-     * Sets the snippet of code near the error.
-     *
-     * @param string $snippet The code snippet
-     */
-    public function setSnippet($snippet)
-    {
-        $this->snippet = $snippet;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the filename where the error occurred.
-     *
-     * This method returns null if a string is parsed.
-     *
-     * @return string The filename
-     */
-    public function getParsedFile()
-    {
-        return $this->parsedFile;
-    }
-
-    /**
-     * Sets the filename where the error occurred.
-     *
-     * @param string $parsedFile The filename
-     */
-    public function setParsedFile($parsedFile)
-    {
-        $this->parsedFile = $parsedFile;
-
-        $this->updateRepr();
-    }
-
-    /**
-     * Gets the line where the error occurred.
-     *
-     * @return integer The file line
-     */
-    public function getParsedLine()
-    {
-        return $this->parsedLine;
-    }
-
-    /**
-     * Sets the line where the error occurred.
-     *
-     * @param integer $parsedLine The file line
-     */
-    public function setParsedLine($parsedLine)
-    {
-        $this->parsedLine = $parsedLine;
-
-        $this->updateRepr();
-    }
-
-    private function updateRepr()
-    {
-        $this->message = $this->rawMessage;
-
-        $dot = false;
-        if ('.' === substr($this->message, -1)) {
-            $this->message = substr($this->message, 0, -1);
-            $dot = true;
-        }
-
-        if (null !== $this->parsedFile) {
-            $this->message .= sprintf(' in %s', json_encode($this->parsedFile));
-        }
-
-        if ($this->parsedLine >= 0) {
-            $this->message .= sprintf(' at line %d', $this->parsedLine);
-        }
-
-        if ($this->snippet) {
-            $this->message .= sprintf(' (near "%s")', $this->snippet);
-        }
-
-        if ($dot) {
-            $this->message .= '.';
-        }
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Inline.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Inline.php
deleted file mode 100644
index e967b6b..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Inline.php
+++ /dev/null
@@ -1,458 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Exception\DumpException;
-
-/**
- * Inline implements a YAML parser/dumper for the YAML inline syntax.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Inline
-{
-    const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\']*(?:\'\'[^\']*)*)\')';
-
-    private static $exceptionOnInvalidType = false;
-    private static $objectSupport = false;
-
-    /**
-     * Converts a YAML string to a PHP array.
-     *
-     * @param string  $value                  A YAML string
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return array A PHP array representing the YAML string
-     */
-    public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        self::$exceptionOnInvalidType = $exceptionOnInvalidType;
-        self::$objectSupport = $objectSupport;
-
-        $value = trim($value);
-
-        if (0 == strlen($value)) {
-            return '';
-        }
-
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('ASCII');
-        }
-
-        $i = 0;
-        switch ($value[0]) {
-            case '[':
-                $result = self::parseSequence($value, $i);
-                ++$i;
-                break;
-            case '{':
-                $result = self::parseMapping($value, $i);
-                ++$i;
-                break;
-            default:
-                $result = self::parseScalar($value, null, array('"', "'"), $i);
-        }
-
-        // some comments are allowed at the end
-        if (preg_replace('/\s+#.*$/A', '', substr($value, $i))) {
-            throw new ParseException(sprintf('Unexpected characters near "%s".', substr($value, $i)));
-        }
-
-        if (isset($mbEncoding)) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return $result;
-    }
-
-    /**
-     * Dumps a given PHP variable to a YAML string.
-     *
-     * @param mixed   $value                  The PHP variable to convert
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string The YAML string representing the PHP array
-     *
-     * @throws DumpException When trying to dump PHP resource
-     */
-    public static function dump($value, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        switch (true) {
-            case is_resource($value):
-                if ($exceptionOnInvalidType) {
-                    throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value)));
-                }
-
-                return 'null';
-            case is_object($value):
-                if ($objectSupport) {
-                    return '!!php/object:'.serialize($value);
-                }
-
-                if ($exceptionOnInvalidType) {
-                    throw new DumpException('Object support when dumping a YAML file has been disabled.');
-                }
-
-                return 'null';
-            case is_array($value):
-                return self::dumpArray($value, $exceptionOnInvalidType, $objectSupport);
-            case null === $value:
-                return 'null';
-            case true === $value:
-                return 'true';
-            case false === $value:
-                return 'false';
-            case ctype_digit($value):
-                return is_string($value) ? "'$value'" : (int) $value;
-            case is_numeric($value):
-                $locale = setlocale(LC_NUMERIC, 0);
-                if (false !== $locale) {
-                    setlocale(LC_NUMERIC, 'C');
-                }
-                $repr = is_string($value) ? "'$value'" : (is_infinite($value) ? str_ireplace('INF', '.Inf', strval($value)) : strval($value));
-
-                if (false !== $locale) {
-                    setlocale(LC_NUMERIC, $locale);
-                }
-
-                return $repr;
-            case Escaper::requiresDoubleQuoting($value):
-                return Escaper::escapeWithDoubleQuotes($value);
-            case Escaper::requiresSingleQuoting($value):
-                return Escaper::escapeWithSingleQuotes($value);
-            case '' == $value:
-                return "''";
-            case preg_match(self::getTimestampRegex(), $value):
-            case in_array(strtolower($value), array('null', '~', 'true', 'false')):
-                return "'$value'";
-            default:
-                return $value;
-        }
-    }
-
-    /**
-     * Dumps a PHP array to a YAML string.
-     *
-     * @param array   $value                  The PHP array to dump
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string The YAML string representing the PHP array
-     */
-    private static function dumpArray($value, $exceptionOnInvalidType, $objectSupport)
-    {
-        // array
-        $keys = array_keys($value);
-        if ((1 == count($keys) && '0' == $keys[0])
-            || (count($keys) > 1 && array_reduce($keys, function ($v, $w) { return (integer) $v + $w; }, 0) == count($keys) * (count($keys) - 1) / 2)
-        ) {
-            $output = array();
-            foreach ($value as $val) {
-                $output[] = self::dump($val, $exceptionOnInvalidType, $objectSupport);
-            }
-
-            return sprintf('[%s]', implode(', ', $output));
-        }
-
-        // mapping
-        $output = array();
-        foreach ($value as $key => $val) {
-            $output[] = sprintf('%s: %s', self::dump($key, $exceptionOnInvalidType, $objectSupport), self::dump($val, $exceptionOnInvalidType, $objectSupport));
-        }
-
-        return sprintf('{ %s }', implode(', ', $output));
-    }
-
-    /**
-     * Parses a scalar to a YAML string.
-     *
-     * @param scalar $scalar
-     * @param string $delimiters
-     * @param array  $stringDelimiters
-     * @param integer &$i
-     * @param Boolean $evaluate
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true)
-    {
-        if (in_array($scalar[$i], $stringDelimiters)) {
-            // quoted scalar
-            $output = self::parseQuotedScalar($scalar, $i);
-
-            if (null !== $delimiters) {
-                $tmp = ltrim(substr($scalar, $i), ' ');
-                if (!in_array($tmp[0], $delimiters)) {
-                    throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i)));
-                }
-            }
-        } else {
-            // "normal" string
-            if (!$delimiters) {
-                $output = substr($scalar, $i);
-                $i += strlen($output);
-
-                // remove comments
-                if (false !== $strpos = strpos($output, ' #')) {
-                    $output = rtrim(substr($output, 0, $strpos));
-                }
-            } elseif (preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) {
-                $output = $match[1];
-                $i += strlen($output);
-            } else {
-                throw new ParseException(sprintf('Malformed inline YAML string (%s).', $scalar));
-            }
-
-            $output = $evaluate ? self::evaluateScalar($output) : $output;
-        }
-
-        return $output;
-    }
-
-    /**
-     * Parses a quoted scalar to YAML.
-     *
-     * @param string $scalar
-     * @param integer &$i
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseQuotedScalar($scalar, &$i)
-    {
-        if (!preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) {
-            throw new ParseException(sprintf('Malformed inline YAML string (%s).', substr($scalar, $i)));
-        }
-
-        $output = substr($match[0], 1, strlen($match[0]) - 2);
-
-        $unescaper = new Unescaper();
-        if ('"' == $scalar[$i]) {
-            $output = $unescaper->unescapeDoubleQuotedString($output);
-        } else {
-            $output = $unescaper->unescapeSingleQuotedString($output);
-        }
-
-        $i += strlen($match[0]);
-
-        return $output;
-    }
-
-    /**
-     * Parses a sequence to a YAML string.
-     *
-     * @param string $sequence
-     * @param integer &$i
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseSequence($sequence, &$i = 0)
-    {
-        $output = array();
-        $len = strlen($sequence);
-        $i += 1;
-
-        // [foo, bar, ...]
-        while ($i < $len) {
-            switch ($sequence[$i]) {
-                case '[':
-                    // nested sequence
-                    $output[] = self::parseSequence($sequence, $i);
-                    break;
-                case '{':
-                    // nested mapping
-                    $output[] = self::parseMapping($sequence, $i);
-                    break;
-                case ']':
-                    return $output;
-                case ',':
-                case ' ':
-                    break;
-                default:
-                    $isQuoted = in_array($sequence[$i], array('"', "'"));
-                    $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i);
-
-                    if (!$isQuoted && false !== strpos($value, ': ')) {
-                        // embedded mapping?
-                        try {
-                            $value = self::parseMapping('{'.$value.'}');
-                        } catch (\InvalidArgumentException $e) {
-                            // no, it's not
-                        }
-                    }
-
-                    $output[] = $value;
-
-                    --$i;
-            }
-
-            ++$i;
-        }
-
-        throw new ParseException(sprintf('Malformed inline YAML string %s', $sequence));
-    }
-
-    /**
-     * Parses a mapping to a YAML string.
-     *
-     * @param string $mapping
-     * @param integer &$i
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When malformed inline YAML string is parsed
-     */
-    private static function parseMapping($mapping, &$i = 0)
-    {
-        $output = array();
-        $len = strlen($mapping);
-        $i += 1;
-
-        // {foo: bar, bar:foo, ...}
-        while ($i < $len) {
-            switch ($mapping[$i]) {
-                case ' ':
-                case ',':
-                    ++$i;
-                    continue 2;
-                case '}':
-                    return $output;
-            }
-
-            // key
-            $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false);
-
-            // value
-            $done = false;
-            while ($i < $len) {
-                switch ($mapping[$i]) {
-                    case '[':
-                        // nested sequence
-                        $output[$key] = self::parseSequence($mapping, $i);
-                        $done = true;
-                        break;
-                    case '{':
-                        // nested mapping
-                        $output[$key] = self::parseMapping($mapping, $i);
-                        $done = true;
-                        break;
-                    case ':':
-                    case ' ':
-                        break;
-                    default:
-                        $output[$key] = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i);
-                        $done = true;
-                        --$i;
-                }
-
-                ++$i;
-
-                if ($done) {
-                    continue 2;
-                }
-            }
-        }
-
-        throw new ParseException(sprintf('Malformed inline YAML string %s', $mapping));
-    }
-
-    /**
-     * Evaluates scalars and replaces magic values.
-     *
-     * @param string $scalar
-     *
-     * @return string A YAML string
-     */
-    private static function evaluateScalar($scalar)
-    {
-        $scalar = trim($scalar);
-
-        switch (true) {
-            case 'null' == strtolower($scalar):
-            case '' == $scalar:
-            case '~' == $scalar:
-                return null;
-            case 0 === strpos($scalar, '!str'):
-                return (string) substr($scalar, 5);
-            case 0 === strpos($scalar, '! '):
-                return intval(self::parseScalar(substr($scalar, 2)));
-            case 0 === strpos($scalar, '!!php/object:'):
-                if (self::$objectSupport) {
-                    return unserialize(substr($scalar, 13));
-                }
-
-                if (self::$exceptionOnInvalidType) {
-                    throw new ParseException('Object support when parsing a YAML file has been disabled.');
-                }
-
-                return null;
-            case ctype_digit($scalar):
-                $raw = $scalar;
-                $cast = intval($scalar);
-
-                return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw);
-            case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)):
-                $raw = $scalar;
-                $cast = intval($scalar);
-
-                return '0' == $scalar[1] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw);
-            case 'true' === strtolower($scalar):
-                return true;
-            case 'false' === strtolower($scalar):
-                return false;
-            case is_numeric($scalar):
-                return '0x' == $scalar[0].$scalar[1] ? hexdec($scalar) : floatval($scalar);
-            case 0 == strcasecmp($scalar, '.inf'):
-            case 0 == strcasecmp($scalar, '.NaN'):
-                return -log(0);
-            case 0 == strcasecmp($scalar, '-.inf'):
-                return log(0);
-            case preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar):
-                return floatval(str_replace(',', '', $scalar));
-            case preg_match(self::getTimestampRegex(), $scalar):
-                return strtotime($scalar);
-            default:
-                return (string) $scalar;
-        }
-    }
-
-    /**
-     * Gets a regex that matches an unix timestamp
-     *
-     * @return string The regular expression
-     */
-    private static function getTimestampRegex()
-    {
-        return <<<EOF
-        ~^
-        (?P<year>[0-9][0-9][0-9][0-9])
-        -(?P<month>[0-9][0-9]?)
-        -(?P<day>[0-9][0-9]?)
-        (?:(?:[Tt]|[ \t]+)
-        (?P<hour>[0-9][0-9]?)
-        :(?P<minute>[0-9][0-9])
-        :(?P<second>[0-9][0-9])
-        (?:\.(?P<fraction>[0-9]*))?
-        (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?)
-        (?::(?P<tz_minute>[0-9][0-9]))?))?)?
-        $~x
-EOF;
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/LICENSE b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/LICENSE
deleted file mode 100644
index 88a57f8..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2004-2013 Fabien Potencier
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is furnished
-to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Parser.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Parser.php
deleted file mode 100644
index 4a82b78..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Parser.php
+++ /dev/null
@@ -1,628 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-
-/**
- * Parser parses YAML strings to convert them to PHP arrays.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- */
-class Parser
-{
-    private $offset         = 0;
-    private $lines          = array();
-    private $currentLineNb  = -1;
-    private $currentLine    = '';
-    private $refs           = array();
-
-    /**
-     * Constructor
-     *
-     * @param integer $offset The offset of YAML document (used for line numbers in error messages)
-     */
-    public function __construct($offset = 0)
-    {
-        $this->offset = $offset;
-    }
-
-    /**
-     * Parses a YAML string to a PHP value.
-     *
-     * @param string  $value                  A YAML string
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return mixed  A PHP value
-     *
-     * @throws ParseException If the YAML is not valid
-     */
-    public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        $this->currentLineNb = -1;
-        $this->currentLine = '';
-        $this->lines = explode("\n", $this->cleanup($value));
-
-        if (function_exists('mb_detect_encoding') && false === mb_detect_encoding($value, 'UTF-8', true)) {
-            throw new ParseException('The YAML value does not appear to be valid UTF-8.');
-        }
-
-        if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
-            $mbEncoding = mb_internal_encoding();
-            mb_internal_encoding('UTF-8');
-        }
-
-        $data = array();
-        $context = null;
-        while ($this->moveToNextLine()) {
-            if ($this->isCurrentLineEmpty()) {
-                continue;
-            }
-
-            // tab?
-            if ("\t" === $this->currentLine[0]) {
-                throw new ParseException('A YAML file cannot contain tabs as indentation.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-
-            $isRef = $isInPlace = $isProcessed = false;
-            if (preg_match('#^\-((?P<leadspaces>\s+)(?P<value>.+?))?\s*$#u', $this->currentLine, $values)) {
-                if ($context && 'mapping' == $context) {
-                    throw new ParseException('You cannot define a sequence item when in a mapping');
-                }
-                $context = 'sequence';
-
-                if (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
-                    $isRef = $matches['ref'];
-                    $values['value'] = $matches['value'];
-                }
-
-                // array
-                if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
-                    $c = $this->getRealCurrentLineNb() + 1;
-                    $parser = new Parser($c);
-                    $parser->refs =& $this->refs;
-                    $data[] = $parser->parse($this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport);
-                } else {
-                    if (isset($values['leadspaces'])
-                        && ' ' == $values['leadspaces']
-                        && preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\{\[].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $values['value'], $matches)
-                    ) {
-                        // this is a compact notation element, add to next block and parse
-                        $c = $this->getRealCurrentLineNb();
-                        $parser = new Parser($c);
-                        $parser->refs =& $this->refs;
-
-                        $block = $values['value'];
-                        if ($this->isNextLineIndented()) {
-                            $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + 2);
-                        }
-
-                        $data[] = $parser->parse($block, $exceptionOnInvalidType, $objectSupport);
-                    } else {
-                        $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
-                    }
-                }
-            } elseif (preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P<value>.+?))?\s*$#u', $this->currentLine, $values)) {
-                if ($context && 'sequence' == $context) {
-                    throw new ParseException('You cannot define a mapping item when in a sequence');
-                }
-                $context = 'mapping';
-
-                // force correct settings
-                Inline::parse(null, $exceptionOnInvalidType, $objectSupport);
-                try {
-                    $key = Inline::parseScalar($values['key']);
-                } catch (ParseException $e) {
-                    $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-                    $e->setSnippet($this->currentLine);
-
-                    throw $e;
-                }
-
-                if ('<<' === $key) {
-                    if (isset($values['value']) && 0 === strpos($values['value'], '*')) {
-                        $isInPlace = substr($values['value'], 1);
-                        if (!array_key_exists($isInPlace, $this->refs)) {
-                            throw new ParseException(sprintf('Reference "%s" does not exist.', $isInPlace), $this->getRealCurrentLineNb() + 1, $this->currentLine);
-                        }
-                    } else {
-                        if (isset($values['value']) && $values['value'] !== '') {
-                            $value = $values['value'];
-                        } else {
-                            $value = $this->getNextEmbedBlock();
-                        }
-                        $c = $this->getRealCurrentLineNb() + 1;
-                        $parser = new Parser($c);
-                        $parser->refs =& $this->refs;
-                        $parsed = $parser->parse($value, $exceptionOnInvalidType, $objectSupport);
-
-                        $merged = array();
-                        if (!is_array($parsed)) {
-                            throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-                        } elseif (isset($parsed[0])) {
-                            // Numeric array, merge individual elements
-                            foreach (array_reverse($parsed) as $parsedItem) {
-                                if (!is_array($parsedItem)) {
-                                    throw new ParseException('Merge items must be arrays.', $this->getRealCurrentLineNb() + 1, $parsedItem);
-                                }
-                                $merged = array_merge($parsedItem, $merged);
-                            }
-                        } else {
-                            // Associative array, merge
-                            $merged = array_merge($merged, $parsed);
-                        }
-
-                        $isProcessed = $merged;
-                    }
-                } elseif (isset($values['value']) && preg_match('#^&(?P<ref>[^ ]+) *(?P<value>.*)#u', $values['value'], $matches)) {
-                    $isRef = $matches['ref'];
-                    $values['value'] = $matches['value'];
-                }
-
-                if ($isProcessed) {
-                    // Merge keys
-                    $data = $isProcessed;
-                // hash
-                } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) {
-                    // if next line is less indented or equal, then it means that the current value is null
-                    if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) {
-                        $data[$key] = null;
-                    } else {
-                        $c = $this->getRealCurrentLineNb() + 1;
-                        $parser = new Parser($c);
-                        $parser->refs =& $this->refs;
-                        $data[$key] = $parser->parse($this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport);
-                    }
-                } else {
-                    if ($isInPlace) {
-                        $data = $this->refs[$isInPlace];
-                    } else {
-                        $data[$key] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport);
-                    }
-                }
-            } else {
-                // 1-liner optionally followed by newline
-                $lineCount = count($this->lines);
-                if (1 === $lineCount || (2 === $lineCount && empty($this->lines[1]))) {
-                    try {
-                        $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport);
-                    } catch (ParseException $e) {
-                        $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-                        $e->setSnippet($this->currentLine);
-
-                        throw $e;
-                    }
-
-                    if (is_array($value)) {
-                        $first = reset($value);
-                        if (is_string($first) && 0 === strpos($first, '*')) {
-                            $data = array();
-                            foreach ($value as $alias) {
-                                $data[] = $this->refs[substr($alias, 1)];
-                            }
-                            $value = $data;
-                        }
-                    }
-
-                    if (isset($mbEncoding)) {
-                        mb_internal_encoding($mbEncoding);
-                    }
-
-                    return $value;
-                }
-
-                switch (preg_last_error()) {
-                    case PREG_INTERNAL_ERROR:
-                        $error = 'Internal PCRE error.';
-                        break;
-                    case PREG_BACKTRACK_LIMIT_ERROR:
-                        $error = 'pcre.backtrack_limit reached.';
-                        break;
-                    case PREG_RECURSION_LIMIT_ERROR:
-                        $error = 'pcre.recursion_limit reached.';
-                        break;
-                    case PREG_BAD_UTF8_ERROR:
-                        $error = 'Malformed UTF-8 data.';
-                        break;
-                    case PREG_BAD_UTF8_OFFSET_ERROR:
-                        $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point.';
-                        break;
-                    default:
-                        $error = 'Unable to parse.';
-                }
-
-                throw new ParseException($error, $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-
-            if ($isRef) {
-                $this->refs[$isRef] = end($data);
-            }
-        }
-
-        if (isset($mbEncoding)) {
-            mb_internal_encoding($mbEncoding);
-        }
-
-        return empty($data) ? null : $data;
-    }
-
-    /**
-     * Returns the current line number (takes the offset into account).
-     *
-     * @return integer The current line number
-     */
-    private function getRealCurrentLineNb()
-    {
-        return $this->currentLineNb + $this->offset;
-    }
-
-    /**
-     * Returns the current line indentation.
-     *
-     * @return integer The current line indentation
-     */
-    private function getCurrentLineIndentation()
-    {
-        return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' '));
-    }
-
-    /**
-     * Returns the next embed block of YAML.
-     *
-     * @param integer $indentation The indent level at which the block is to be read, or null for default
-     *
-     * @return string A YAML string
-     *
-     * @throws ParseException When indentation problem are detected
-     */
-    private function getNextEmbedBlock($indentation = null)
-    {
-        $this->moveToNextLine();
-
-        if (null === $indentation) {
-            $newIndent = $this->getCurrentLineIndentation();
-
-            $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem($this->currentLine);
-
-            if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) {
-                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-        } else {
-            $newIndent = $indentation;
-        }
-
-        $data = array(substr($this->currentLine, $newIndent));
-
-        $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);
-
-        while ($this->moveToNextLine()) {
-
-            if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine)) {
-                $this->moveToPreviousLine();
-                break;
-            }
-
-            if ($this->isCurrentLineEmpty()) {
-                if ($this->isCurrentLineBlank()) {
-                    $data[] = substr($this->currentLine, $newIndent);
-                }
-
-                continue;
-            }
-
-            $indent = $this->getCurrentLineIndentation();
-
-            if (preg_match('#^(?P<text> *)$#', $this->currentLine, $match)) {
-                // empty line
-                $data[] = $match['text'];
-            } elseif ($indent >= $newIndent) {
-                $data[] = substr($this->currentLine, $newIndent);
-            } elseif (0 == $indent) {
-                $this->moveToPreviousLine();
-
-                break;
-            } else {
-                throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine);
-            }
-        }
-
-        return implode("\n", $data);
-    }
-
-    /**
-     * Moves the parser to the next line.
-     *
-     * @return Boolean
-     */
-    private function moveToNextLine()
-    {
-        if ($this->currentLineNb >= count($this->lines) - 1) {
-            return false;
-        }
-
-        $this->currentLine = $this->lines[++$this->currentLineNb];
-
-        return true;
-    }
-
-    /**
-     * Moves the parser to the previous line.
-     */
-    private function moveToPreviousLine()
-    {
-        $this->currentLine = $this->lines[--$this->currentLineNb];
-    }
-
-    /**
-     * Parses a YAML value.
-     *
-     * @param string $value A YAML value
-     *
-     * @return mixed  A PHP value
-     *
-     * @throws ParseException When reference does not exist
-     */
-    private function parseValue($value, $exceptionOnInvalidType, $objectSupport)
-    {
-        if (0 === strpos($value, '*')) {
-            if (false !== $pos = strpos($value, '#')) {
-                $value = substr($value, 1, $pos - 2);
-            } else {
-                $value = substr($value, 1);
-            }
-
-            if (!array_key_exists($value, $this->refs)) {
-                throw new ParseException(sprintf('Reference "%s" does not exist.', $value), $this->currentLine);
-            }
-
-            return $this->refs[$value];
-        }
-
-        if (preg_match('/^(?P<separator>\||>)(?P<modifiers>\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P<comments> +#.*)?$/', $value, $matches)) {
-            $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : '';
-
-            return $this->parseFoldedScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), intval(abs($modifiers)));
-        }
-
-        try {
-            return Inline::parse($value, $exceptionOnInvalidType, $objectSupport);
-        } catch (ParseException $e) {
-            $e->setParsedLine($this->getRealCurrentLineNb() + 1);
-            $e->setSnippet($this->currentLine);
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Parses a folded scalar.
-     *
-     * @param string  $separator   The separator that was used to begin this folded scalar (| or >)
-     * @param string  $indicator   The indicator that was used to begin this folded scalar (+ or -)
-     * @param integer $indentation The indentation that was used to begin this folded scalar
-     *
-     * @return string  The text value
-     */
-    private function parseFoldedScalar($separator, $indicator = '', $indentation = 0)
-    {
-        $notEOF = $this->moveToNextLine();
-        if (!$notEOF) {
-            return '';
-        }
-
-        $isCurrentLineBlank = $this->isCurrentLineBlank();
-        $text = '';
-
-        // leading blank lines are consumed before determining indentation
-        while ($notEOF && $isCurrentLineBlank) {
-            // newline only if not EOF
-            if ($notEOF = $this->moveToNextLine()) {
-                $text .= "\n";
-                $isCurrentLineBlank = $this->isCurrentLineBlank();
-            }
-        }
-
-        // determine indentation if not specified
-        if (0 === $indentation) {
-            if (preg_match('/^ +/', $this->currentLine, $matches)) {
-                $indentation = strlen($matches[0]);
-            }
-        }
-
-        if ($indentation > 0) {
-            $pattern = sprintf('/^ {%d}(.*)$/', $indentation);
-
-            while (
-                $notEOF && (
-                    $isCurrentLineBlank ||
-                    preg_match($pattern, $this->currentLine, $matches)
-                )
-            ) {
-                if ($isCurrentLineBlank) {
-                    $text .= substr($this->currentLine, $indentation);
-                } else {
-                    $text .= $matches[1];
-                }
-
-                // newline only if not EOF
-                if ($notEOF = $this->moveToNextLine()) {
-                    $text .= "\n";
-                    $isCurrentLineBlank = $this->isCurrentLineBlank();
-                }
-            }
-        } elseif ($notEOF) {
-            $text .= "\n";
-        }
-
-        if ($notEOF) {
-            $this->moveToPreviousLine();
-        }
-
-        // replace all non-trailing single newlines with spaces in folded blocks
-        if ('>' === $separator) {
-            preg_match('/(\n*)$/', $text, $matches);
-            $text = preg_replace('/(?<!\n)\n(?!\n)/', ' ', rtrim($text, "\n"));
-            $text .= $matches[1];
-        }
-
-        // deal with trailing newlines as indicated
-        if ('' === $indicator) {
-            $text = preg_replace('/\n+$/s', "\n", $text);
-        } elseif ('-' === $indicator) {
-            $text = preg_replace('/\n+$/s', '', $text);
-        }
-
-        return $text;
-    }
-
-    /**
-     * Returns true if the next line is indented.
-     *
-     * @return Boolean Returns true if the next line is indented, false otherwise
-     */
-    private function isNextLineIndented()
-    {
-        $currentIndentation = $this->getCurrentLineIndentation();
-        $EOF = !$this->moveToNextLine();
-
-        while (!$EOF && $this->isCurrentLineEmpty()) {
-            $EOF = !$this->moveToNextLine();
-        }
-
-        if ($EOF) {
-            return false;
-        }
-
-        $ret = false;
-        if ($this->getCurrentLineIndentation() > $currentIndentation) {
-            $ret = true;
-        }
-
-        $this->moveToPreviousLine();
-
-        return $ret;
-    }
-
-    /**
-     * Returns true if the current line is blank or if it is a comment line.
-     *
-     * @return Boolean Returns true if the current line is empty or if it is a comment line, false otherwise
-     */
-    private function isCurrentLineEmpty()
-    {
-        return $this->isCurrentLineBlank() || $this->isCurrentLineComment();
-    }
-
-    /**
-     * Returns true if the current line is blank.
-     *
-     * @return Boolean Returns true if the current line is blank, false otherwise
-     */
-    private function isCurrentLineBlank()
-    {
-        return '' == trim($this->currentLine, ' ');
-    }
-
-    /**
-     * Returns true if the current line is a comment line.
-     *
-     * @return Boolean Returns true if the current line is a comment line, false otherwise
-     */
-    private function isCurrentLineComment()
-    {
-        //checking explicitly the first char of the trim is faster than loops or strpos
-        $ltrimmedLine = ltrim($this->currentLine, ' ');
-
-        return $ltrimmedLine[0] === '#';
-    }
-
-    /**
-     * Cleanups a YAML string to be parsed.
-     *
-     * @param string $value The input YAML string
-     *
-     * @return string A cleaned up YAML string
-     */
-    private function cleanup($value)
-    {
-        $value = str_replace(array("\r\n", "\r"), "\n", $value);
-
-        // strip YAML header
-        $count = 0;
-        $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#su', '', $value, -1, $count);
-        $this->offset += $count;
-
-        // remove leading comments
-        $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count);
-        if ($count == 1) {
-            // items have been removed, update the offset
-            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
-            $value = $trimmedValue;
-        }
-
-        // remove start of the document marker (---)
-        $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count);
-        if ($count == 1) {
-            // items have been removed, update the offset
-            $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n");
-            $value = $trimmedValue;
-
-            // remove end of the document marker (...)
-            $value = preg_replace('#\.\.\.\s*$#s', '', $value);
-        }
-
-        return $value;
-    }
-
-    /**
-     * Returns true if the next line starts unindented collection
-     *
-     * @return Boolean Returns true if the next line starts unindented collection, false otherwise
-     */
-    private function isNextLineUnIndentedCollection()
-    {
-        $currentIndentation = $this->getCurrentLineIndentation();
-        $notEOF = $this->moveToNextLine();
-
-        while ($notEOF && $this->isCurrentLineEmpty()) {
-            $notEOF = $this->moveToNextLine();
-        }
-
-        if (false === $notEOF) {
-            return false;
-        }
-
-        $ret = false;
-        if (
-            $this->getCurrentLineIndentation() == $currentIndentation
-            &&
-            $this->isStringUnIndentedCollectionItem($this->currentLine)
-        ) {
-            $ret = true;
-        }
-
-        $this->moveToPreviousLine();
-
-        return $ret;
-    }
-
-    /**
-     * Returns true if the string is un-indented collection item
-     *
-     * @return Boolean Returns true if the string is un-indented collection item, false otherwise
-     */
-    private function isStringUnIndentedCollectionItem()
-    {
-        return (0 === strpos($this->currentLine, '- '));
-    }
-
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/README.md b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/README.md
deleted file mode 100644
index 3441316..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-Yaml Component
-==============
-
-YAML implements most of the YAML 1.2 specification.
-
-    use Symfony\Component\Yaml\Yaml;
-
-    $array = Yaml::parse($file);
-
-    print Yaml::dump($array);
-
-Resources
----------
-
-You can run the unit tests with the following command:
-
-    phpunit
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/DumperTest.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/DumperTest.php
deleted file mode 100644
index c51a257..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/DumperTest.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Tests;
-
-use Symfony\Component\Yaml\Yaml;
-use Symfony\Component\Yaml\Parser;
-use Symfony\Component\Yaml\Dumper;
-
-class DumperTest extends \PHPUnit_Framework_TestCase
-{
-    protected $parser;
-    protected $dumper;
-    protected $path;
-
-    protected $array = array(
-        '' => 'bar',
-        'foo' => '#bar',
-        'foo\'bar' => array(),
-        'bar' => array(1, 'foo'),
-        'foobar' => array(
-            'foo' => 'bar',
-            'bar' => array(1, 'foo'),
-            'foobar' => array(
-                'foo' => 'bar',
-                'bar' => array(1, 'foo'),
-            ),
-        ),
-    );
-
-    protected function setUp()
-    {
-        $this->parser = new Parser();
-        $this->dumper = new Dumper();
-        $this->path = __DIR__.'/Fixtures';
-    }
-
-    protected function tearDown()
-    {
-        $this->parser = null;
-        $this->dumper = null;
-        $this->path = null;
-        $this->array = null;
-    }
-
-    public function testSetIndentation()
-    {
-        $this->dumper->setIndentation(7);
-
-$expected = <<<EOF
-'': bar
-foo: '#bar'
-'foo''bar': {  }
-bar:
-       - 1
-       - foo
-foobar:
-       foo: bar
-       bar:
-              - 1
-              - foo
-       foobar:
-              foo: bar
-              bar:
-                     - 1
-                     - foo
-
-EOF;
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 4, 0));
-    }
-
-    public function testSpecifications()
-    {
-        $files = $this->parser->parse(file_get_contents($this->path.'/index.yml'));
-        foreach ($files as $file) {
-            $yamls = file_get_contents($this->path.'/'.$file.'.yml');
-
-            // split YAMLs documents
-            foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) {
-                if (!$yaml) {
-                    continue;
-                }
-
-                $test = $this->parser->parse($yaml);
-                if (isset($test['dump_skip']) && $test['dump_skip']) {
-                    continue;
-                } elseif (isset($test['todo']) && $test['todo']) {
-                    // TODO
-                } else {
-                    $expected = eval('return '.trim($test['php']).';');
-
-                    $this->assertEquals($expected, $this->parser->parse($this->dumper->dump($expected, 10)), $test['test']);
-                }
-            }
-        }
-    }
-
-    public function testInlineLevel()
-    {
-        $expected = <<<EOF
-{ '': bar, foo: '#bar', 'foo''bar': {  }, bar: [1, foo], foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } }
-EOF;
-$this->assertEquals($expected, $this->dumper->dump($this->array, -10), '->dump() takes an inline level argument');
-$this->assertEquals($expected, $this->dumper->dump($this->array, 0), '->dump() takes an inline level argument');
-
-$expected = <<<EOF
-'': bar
-foo: '#bar'
-'foo''bar': {  }
-bar: [1, foo]
-foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } }
-
-EOF;
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 1), '->dump() takes an inline level argument');
-
-        $expected = <<<EOF
-'': bar
-foo: '#bar'
-'foo''bar': {  }
-bar:
-    - 1
-    - foo
-foobar:
-    foo: bar
-    bar: [1, foo]
-    foobar: { foo: bar, bar: [1, foo] }
-
-EOF;
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 2), '->dump() takes an inline level argument');
-
-        $expected = <<<EOF
-'': bar
-foo: '#bar'
-'foo''bar': {  }
-bar:
-    - 1
-    - foo
-foobar:
-    foo: bar
-    bar:
-        - 1
-        - foo
-    foobar:
-        foo: bar
-        bar: [1, foo]
-
-EOF;
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 3), '->dump() takes an inline level argument');
-
-        $expected = <<<EOF
-'': bar
-foo: '#bar'
-'foo''bar': {  }
-bar:
-    - 1
-    - foo
-foobar:
-    foo: bar
-    bar:
-        - 1
-        - foo
-    foobar:
-        foo: bar
-        bar:
-            - 1
-            - foo
-
-EOF;
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 4), '->dump() takes an inline level argument');
-        $this->assertEquals($expected, $this->dumper->dump($this->array, 10), '->dump() takes an inline level argument');
-    }
-
-    public function testObjectSupportEnabled()
-    {
-        $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
-
-        $this->assertEquals('{ foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects');
-    }
-
-    public function testObjectSupportDisabledButNoExceptions()
-    {
-        $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1));
-
-        $this->assertEquals('{ foo: null, bar: 1 }', $dump, '->dump() does not dump objects when disabled');
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\DumpException
-     */
-    public function testObjectSupportDisabledWithExceptions()
-    {
-        $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true, false);
-    }
-}
-
-class A
-{
-    public $a = 'foo';
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsAnchorAlias.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsAnchorAlias.yml
deleted file mode 100644
index 5f9c942..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsAnchorAlias.yml
+++ /dev/null
@@ -1,31 +0,0 @@
---- %YAML:1.0
-test: Simple Alias Example
-brief: >
-    If you need to refer to the same item of data twice,
-    you can give that item an alias.  The alias is a plain
-    string, starting with an ampersand.  The item may then
-    be referred to by the alias throughout your document
-    by using an asterisk before the name of the alias.
-    This is called an anchor.
-yaml: |
-    - &showell Steve
-    - Clark
-    - Brian
-    - Oren
-    - *showell
-php: |
-    array('Steve', 'Clark', 'Brian', 'Oren', 'Steve')
-
----
-test: Alias of a Mapping
-brief: >
-    An alias can be used on any item of data, including
-    sequences, mappings, and other complex data types.
-yaml: |
-    - &hello
-        Meat: pork
-        Starch: potato
-    - banana
-    - *hello
-php: |
-    array(array('Meat'=>'pork', 'Starch'=>'potato'), 'banana', array('Meat'=>'pork', 'Starch'=>'potato'))
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBasicTests.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBasicTests.yml
deleted file mode 100644
index 5542b0d..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBasicTests.yml
+++ /dev/null
@@ -1,178 +0,0 @@
---- %YAML:1.0
-test: Simple Sequence
-brief: |
-    You can specify a list in YAML by placing each
-    member of the list on a new line with an opening
-    dash. These lists are called sequences.
-yaml: |
-    - apple
-    - banana
-    - carrot
-php: |
-    array('apple', 'banana', 'carrot')
----
-test: Nested Sequences
-brief: |
-    You can include a sequence within another
-    sequence by giving the sequence an empty
-    dash, followed by an indented list.
-yaml: |
-    -
-     - foo
-     - bar
-     - baz
-php: |
-    array(array('foo', 'bar', 'baz'))
----
-test: Mixed Sequences
-brief: |
-    Sequences can contain any YAML data,
-    including strings and other sequences.
-yaml: |
-    - apple
-    -
-     - foo
-     - bar
-     - x123
-    - banana
-    - carrot
-php: |
-    array('apple', array('foo', 'bar', 'x123'), 'banana', 'carrot')
----
-test: Deeply Nested Sequences
-brief: |
-    Sequences can be nested even deeper, with each
-    level of indentation representing a level of
-    depth.
-yaml: |
-    -
-     -
-      - uno
-      - dos
-php: |
-    array(array(array('uno', 'dos')))
----
-test: Simple Mapping
-brief: |
-    You can add a keyed list (also known as a dictionary or
-    hash) to your document by placing each member of the
-    list on a new line, with a colon seperating the key
-    from its value.  In YAML, this type of list is called
-    a mapping.
-yaml: |
-    foo: whatever
-    bar: stuff
-php: |
-    array('foo' => 'whatever', 'bar' => 'stuff')
----
-test: Sequence in a Mapping
-brief: |
-    A value in a mapping can be a sequence.
-yaml: |
-    foo: whatever
-    bar:
-     - uno
-     - dos
-php: |
-    array('foo' => 'whatever', 'bar' => array('uno', 'dos'))
----
-test: Nested Mappings
-brief: |
-    A value in a mapping can be another mapping.
-yaml: |
-    foo: whatever
-    bar:
-     fruit: apple
-     name: steve
-     sport: baseball
-php: |
-    array(
-      'foo' => 'whatever',
-      'bar' => array(
-         'fruit' => 'apple',
-         'name' => 'steve',
-         'sport' => 'baseball'
-       )
-    )
----
-test: Mixed Mapping
-brief: |
-    A mapping can contain any assortment
-    of mappings and sequences as values.
-yaml: |
-    foo: whatever
-    bar:
-     -
-       fruit: apple
-       name: steve
-       sport: baseball
-     - more
-     -
-       python: rocks
-       perl: papers
-       ruby: scissorses
-php: |
-    array(
-      'foo' => 'whatever',
-      'bar' => array(
-        array(
-            'fruit' => 'apple',
-            'name' => 'steve',
-            'sport' => 'baseball'
-        ),
-        'more',
-        array(
-            'python' => 'rocks',
-            'perl' => 'papers',
-            'ruby' => 'scissorses'
-        )
-      )
-    )
----
-test: Mapping-in-Sequence Shortcut
-todo: true
-brief: |
-     If you are adding a mapping to a sequence, you
-     can place the mapping on the same line as the
-     dash as a shortcut.
-yaml: |
-     - work on YAML.py:
-        - work on Store
-php: |
-    array(array('work on YAML.py' => array('work on Store')))
----
-test: Sequence-in-Mapping Shortcut
-todo: true
-brief: |
-     The dash in a sequence counts as indentation, so
-     you can add a sequence inside of a mapping without
-     needing spaces as indentation.
-yaml: |
-     allow:
-     - 'localhost'
-     - '%.sourceforge.net'
-     - '%.freepan.org'
-php: |
-     array('allow' => array('localhost', '%.sourceforge.net', '%.freepan.org'))
----
-todo: true
-test: Merge key
-brief: |
-     A merge key ('<<') can be used in a mapping to insert other mappings.  If
-     the value associated with the merge key is a mapping, each of its key/value
-     pairs is inserted into the current mapping.
-yaml: |
-     mapping:
-       name: Joe
-       job: Accountant
-       <<:
-         age: 38
-php: |
-     array(
-       'mapping' =>
-       array(
-         'name' => 'Joe',
-         'job' => 'Accountant',
-         'age' => 38
-       )
-     )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBlockMapping.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBlockMapping.yml
deleted file mode 100644
index f7ca469..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBlockMapping.yml
+++ /dev/null
@@ -1,51 +0,0 @@
----
-test: One Element Mapping
-brief: |
-    A mapping with one key/value pair
-yaml: |
-    foo: bar
-php: |
-    array('foo' => 'bar')
----
-test: Multi Element Mapping
-brief: |
-    More than one key/value pair
-yaml: |
-    red: baron
-    white: walls
-    blue: berries
-php: |
-    array(
-     'red' => 'baron',
-     'white' => 'walls',
-     'blue' => 'berries',
-    )
----
-test: Values aligned
-brief: |
-    Often times human editors of documents will align the values even
-    though YAML emitters generally don't.
-yaml: |
-    red:   baron
-    white: walls
-    blue:  berries
-php: |
-    array(
-     'red' => 'baron',
-     'white' => 'walls',
-     'blue' => 'berries',
-    )
----
-test: Colons aligned
-brief: |
-    Spaces can come before the ': ' key/value separator.
-yaml: |
-    red   : baron
-    white : walls
-    blue  : berries
-php: |
-    array(
-     'red' => 'baron',
-     'white' => 'walls',
-     'blue' => 'berries',
-    )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsDocumentSeparator.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsDocumentSeparator.yml
deleted file mode 100644
index f8501dd..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsDocumentSeparator.yml
+++ /dev/null
@@ -1,85 +0,0 @@
---- %YAML:1.0
-test: Trailing Document Separator
-todo: true
-brief: >
-    You can separate YAML documents
-    with a string of three dashes.
-yaml: |
-    - foo: 1
-      bar: 2
-    ---
-    more: stuff
-python: |
-    [
-        [ { 'foo': 1, 'bar': 2 } ],
-        { 'more': 'stuff' }
-    ]
-ruby: |
-    [ { 'foo' => 1, 'bar' => 2 } ]
-
----
-test: Leading Document Separator
-todo: true
-brief: >
-    You can explicity give an opening
-    document separator to your YAML stream.
-yaml: |
-    ---
-    - foo: 1
-      bar: 2
-    ---
-    more: stuff
-python: |
-    [
-        [ {'foo': 1, 'bar': 2}],
-        {'more': 'stuff'}
-    ]
-ruby: |
-    [ { 'foo' => 1, 'bar' => 2 } ]
-
----
-test: YAML Header
-todo: true
-brief: >
-    The opening separator can contain directives
-    to the YAML parser, such as the version
-    number.
-yaml: |
-    --- %YAML:1.0
-    foo: 1
-    bar: 2
-php: |
-    array('foo' => 1, 'bar' => 2)
-documents: 1
-
----
-test: Red Herring Document Separator
-brief: >
-    Separators included in blocks or strings
-    are treated as blocks or strings, as the
-    document separator should have no indentation
-    preceding it.
-yaml: |
-    foo: |
-        ---
-php: |
-    array('foo' => "---\n")
-
----
-test: Multiple Document Separators in Block
-brief: >
-    This technique allows you to embed other YAML
-    documents within literal blocks.
-yaml: |
-    foo: |
-        ---
-        foo: bar
-        ---
-        yo: baz
-    bar: |
-        fooness
-php: |
-    array(
-       'foo' => "---\nfoo: bar\n---\nyo: baz\n",
-       'bar' => "fooness\n"
-    )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsErrorTests.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsErrorTests.yml
deleted file mode 100644
index e8506fc..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsErrorTests.yml
+++ /dev/null
@@ -1,25 +0,0 @@
----
-test: Missing value for hash item
-todo: true
-brief: |
-    Third item in this hash doesn't have a value
-yaml: |
-    okay: value
-    also okay: ~
-    causes error because no value specified
-    last key: value okay here too
-python-error: causes error because no value specified
-
----
-test: Not indenting enough
-brief: |
-    There was a bug in PyYaml where it was off by one
-    in the indentation check.  It was allowing the YAML
-    below.
-# This is actually valid YAML now. Someone should tell showell.
-yaml: |
-    foo:
-    firstline: 1
-    secondline: 2
-php: |
-  array('foo' => null, 'firstline' => 1, 'secondline' => 2)
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFlowCollections.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFlowCollections.yml
deleted file mode 100644
index 03090e4..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFlowCollections.yml
+++ /dev/null
@@ -1,60 +0,0 @@
----
-test: Simple Inline Array
-brief: >
-    Sequences can be contained on a
-    single line, using the inline syntax.
-    Separate each entry with commas and
-    enclose in square brackets.
-yaml: |
-    seq: [ a, b, c ]
-php: |
-    array('seq' => array('a', 'b', 'c'))
----
-test: Simple Inline Hash
-brief: >
-    Mapping can also be contained on
-    a single line, using the inline
-    syntax.  Each key-value pair is
-    separated by a colon, with a comma
-    between each entry in the mapping.
-    Enclose with curly braces.
-yaml: |
-    hash: { name: Steve, foo: bar }
-php: |
-    array('hash' => array('name' => 'Steve', 'foo' => 'bar'))
----
-test: Multi-line Inline Collections
-todo: true
-brief: >
-    Both inline sequences and inline mappings
-    can span multiple lines, provided that you
-    indent the additional lines.
-yaml: |
-    languages: [ Ruby,
-                 Perl,
-                 Python ]
-    websites: { YAML: yaml.org,
-                Ruby: ruby-lang.org,
-                Python: python.org,
-                Perl: use.perl.org }
-php: |
-    array(
-      'languages' => array('Ruby', 'Perl', 'Python'),
-      'websites' => array(
-        'YAML' => 'yaml.org',
-        'Ruby' => 'ruby-lang.org',
-        'Python' => 'python.org',
-        'Perl' => 'use.perl.org'
-      )
-    )
----
-test: Commas in Values (not in the spec!)
-todo: true
-brief: >
-    List items in collections are delimited by commas, but
-    there must be a space after each comma.  This allows you
-    to add numbers without quoting.
-yaml: |
-    attendances: [ 45,123, 70,000, 17,222 ]
-php: |
-    array('attendances' => array(45123, 70000, 17222))
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFoldedScalars.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFoldedScalars.yml
deleted file mode 100644
index a14735a..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFoldedScalars.yml
+++ /dev/null
@@ -1,176 +0,0 @@
---- %YAML:1.0
-test: Single ending newline
-brief: >
-    A pipe character, followed by an indented
-    block of text is treated as a literal
-    block, in which newlines are preserved
-    throughout the block, including the final
-    newline.
-yaml: |
-    ---
-    this: |
-        Foo
-        Bar
-php: |
-    array('this' => "Foo\nBar\n")
----
-test: The '+' indicator
-brief: >
-    The '+' indicator says to keep newlines at the end of text
-    blocks.
-yaml: |
-    normal: |
-      extra new lines not kept
-
-    preserving: |+
-      extra new lines are kept
-
-
-    dummy: value
-php: |
-    array(
-        'normal' => "extra new lines not kept\n",
-        'preserving' => "extra new lines are kept\n\n\n",
-        'dummy' => 'value'
-    )
----
-test: Three trailing newlines in literals
-brief: >
-    To give you more control over how space
-    is preserved in text blocks, YAML has
-    the keep '+' and chomp '-' indicators.
-    The keep indicator will preserve all
-    ending newlines, while the chomp indicator
-    will strip all ending newlines.
-yaml: |
-    clipped: |
-        This has one newline.
-
-
-
-    same as "clipped" above: "This has one newline.\n"
-
-    stripped: |-
-        This has no newline.
-
-
-
-    same as "stripped" above: "This has no newline."
-
-    kept: |+
-        This has four newlines.
-
-
-
-    same as "kept" above: "This has four newlines.\n\n\n\n"
-php: |
-    array(
-      'clipped' => "This has one newline.\n",
-      'same as "clipped" above' => "This has one newline.\n",
-      'stripped' => 'This has no newline.',
-      'same as "stripped" above' => 'This has no newline.',
-      'kept' => "This has four newlines.\n\n\n\n",
-      'same as "kept" above' => "This has four newlines.\n\n\n\n"
-    )
----
-test: Extra trailing newlines with spaces
-todo: true
-brief: >
-    Normally, only a single newline is kept
-    from the end of a literal block, unless the
-    keep '+' character is used in combination
-    with the pipe.  The following example
-    will preserve all ending whitespace
-    since the last line of both literal blocks
-    contains spaces which extend past the indentation
-    level.
-yaml: |
-    ---
-    this: |
-        Foo
-
-
-    kept: |+
-        Foo
-
-
-php: |
-    array('this' => "Foo\n\n  \n",
-      'kept' => "Foo\n\n  \n" )
-
----
-test: Folded Block in a Sequence
-brief: >
-    A greater-then character, followed by an indented
-    block of text is treated as a folded block, in
-    which lines of text separated by a single newline
-    are concatenated as a single line.
-yaml: |
-    ---
-    - apple
-    - banana
-    - >
-        can't you see
-        the beauty of yaml?
-        hmm
-    - dog
-php: |
-    array(
-        'apple',
-        'banana',
-        "can't you see the beauty of yaml? hmm\n",
-        'dog'
-    )
----
-test: Folded Block as a Mapping Value
-brief: >
-    Both literal and folded blocks can be
-    used in collections, as values in a
-    sequence or a mapping.
-yaml: |
-    ---
-    quote: >
-        Mark McGwire's
-        year was crippled
-        by a knee injury.
-    source: espn
-php: |
-    array(
-        'quote' => "Mark McGwire's year was crippled by a knee injury.\n",
-        'source' => 'espn'
-    )
----
-test: Three trailing newlines in folded blocks
-brief: >
-    The keep and chomp indicators can also
-    be applied to folded blocks.
-yaml: |
-    clipped: >
-        This has one newline.
-
-
-
-    same as "clipped" above: "This has one newline.\n"
-
-    stripped: >-
-        This has no newline.
-
-
-
-    same as "stripped" above: "This has no newline."
-
-    kept: >+
-        This has four newlines.
-
-
-
-    same as "kept" above: "This has four newlines.\n\n\n\n"
-php: |
-    array(
-      'clipped' => "This has one newline.\n",
-      'same as "clipped" above' => "This has one newline.\n",
-      'stripped' => 'This has no newline.',
-      'same as "stripped" above' => 'This has no newline.',
-      'kept' => "This has four newlines.\n\n\n\n",
-      'same as "kept" above' => "This has four newlines.\n\n\n\n"
-    )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsNullsAndEmpties.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsNullsAndEmpties.yml
deleted file mode 100644
index 9a5300f..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsNullsAndEmpties.yml
+++ /dev/null
@@ -1,45 +0,0 @@
---- %YAML:1.0
-test: Empty Sequence
-brief: >
-    You can represent the empty sequence
-    with an empty inline sequence.
-yaml: |
-    empty: []
-php: |
-    array('empty' => array())
----
-test: Empty Mapping
-brief: >
-    You can represent the empty mapping
-    with an empty inline mapping.
-yaml: |
-    empty: {}
-php: |
-    array('empty' => array())
----
-test: Empty Sequence as Entire Document
-yaml: |
-    []
-php: |
-    array()
----
-test: Empty Mapping as Entire Document
-yaml: |
-    {}
-php: |
-    array()
----
-test: Null as Document
-yaml: |
-    ~
-php: |
-    null
----
-test: Empty String
-brief: >
-    You can represent an empty string
-    with a pair of quotes.
-yaml: |
-    ''
-php: |
-    ''
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsSpecificationExamples.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsSpecificationExamples.yml
deleted file mode 100644
index 6f99f75..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsSpecificationExamples.yml
+++ /dev/null
@@ -1,1695 +0,0 @@
---- %YAML:1.0
-test: Sequence of scalars
-spec: 2.1
-yaml: |
-  - Mark McGwire
-  - Sammy Sosa
-  - Ken Griffey
-php: |
-  array('Mark McGwire', 'Sammy Sosa', 'Ken Griffey')
----
-test: Mapping of scalars to scalars
-spec: 2.2
-yaml: |
-  hr:  65
-  avg: 0.278
-  rbi: 147
-php: |
-  array('hr' => 65, 'avg' => 0.278, 'rbi' => 147)
----
-test: Mapping of scalars to sequences
-spec: 2.3
-yaml: |
-    american:
-       - Boston Red Sox
-       - Detroit Tigers
-       - New York Yankees
-    national:
-       - New York Mets
-       - Chicago Cubs
-       - Atlanta Braves
-php: |
-    array('american' =>
-        array( 'Boston Red Sox', 'Detroit Tigers',
-          'New York Yankees' ),
-      'national' =>
-        array( 'New York Mets', 'Chicago Cubs',
-          'Atlanta Braves' )
-    )
----
-test: Sequence of mappings
-spec: 2.4
-yaml: |
-    -
-      name: Mark McGwire
-      hr:   65
-      avg:  0.278
-    -
-      name: Sammy Sosa
-      hr:   63
-      avg:  0.288
-php: |
-    array(
-      array('name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278),
-      array('name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288)
-    )
----
-test: Legacy A5
-todo: true
-spec: legacy_A5
-yaml: |
-    ?
-        - New York Yankees
-        - Atlanta Braves
-    :
-      - 2001-07-02
-      - 2001-08-12
-      - 2001-08-14
-    ?
-        - Detroit Tigers
-        - Chicago Cubs
-    :
-      - 2001-07-23
-perl-busted: >
-    YAML.pm will be able to emulate this behavior soon. In this regard
-    it may be somewhat more correct than Python's native behaviour which
-    can only use tuples as mapping keys. PyYAML will also need to figure
-    out some clever way to roundtrip structured keys.
-python: |
-    [
-    {
-        ('New York Yankees', 'Atlanta Braves'):
-            [yaml.timestamp('2001-07-02'),
-             yaml.timestamp('2001-08-12'),
-             yaml.timestamp('2001-08-14')],
-        ('Detroit Tigers', 'Chicago Cubs'):
-        [yaml.timestamp('2001-07-23')]
-    }
-    ]
-ruby: |
-    {
-      [ 'New York Yankees', 'Atlanta Braves' ] =>
-        [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ],
-      [ 'Detroit Tigers', 'Chicago Cubs' ] =>
-        [ Date.new( 2001, 7, 23 ) ]
-    }
-syck: |
-  struct test_node seq1[] = {
-      { T_STR, 0, "New York Yankees" },
-      { T_STR, 0, "Atlanta Braves" },
-      end_node
-  };
-  struct test_node seq2[] = {
-      { T_STR, 0, "2001-07-02" },
-      { T_STR, 0, "2001-08-12" },
-      { T_STR, 0, "2001-08-14" },
-      end_node
-  };
-  struct test_node seq3[] = {
-      { T_STR, 0, "Detroit Tigers" },
-      { T_STR, 0, "Chicago Cubs" },
-      end_node
-  };
-  struct test_node seq4[] = {
-      { T_STR, 0, "2001-07-23" },
-      end_node
-  };
-  struct test_node map[] = {
-      { T_SEQ, 0, 0, seq1 },
-      { T_SEQ, 0, 0, seq2 },
-      { T_SEQ, 0, 0, seq3 },
-      { T_SEQ, 0, 0, seq4 },
-      end_node
-  };
-  struct test_node stream[] = {
-      { T_MAP, 0, 0, map },
-      end_node
-  };
-
----
-test: Sequence of sequences
-spec: 2.5
-yaml: |
-  - [ name         , hr , avg   ]
-  - [ Mark McGwire , 65 , 0.278 ]
-  - [ Sammy Sosa   , 63 , 0.288 ]
-php: |
-  array(
-    array( 'name', 'hr', 'avg' ),
-    array( 'Mark McGwire', 65, 0.278 ),
-    array( 'Sammy Sosa', 63, 0.288 )
-  )
----
-test: Mapping of mappings
-todo: true
-spec: 2.6
-yaml: |
-  Mark McGwire: {hr: 65, avg: 0.278}
-  Sammy Sosa: {
-      hr: 63,
-      avg: 0.288
-    }
-php: |
-  array(
-    'Mark McGwire' =>
-      array( 'hr' => 65, 'avg' => 0.278 ),
-    'Sammy Sosa' =>
-      array( 'hr' => 63, 'avg' => 0.288 )
-  )
----
-test: Two documents in a stream each with a leading comment
-todo: true
-spec: 2.7
-yaml: |
-  # Ranking of 1998 home runs
-  ---
-  - Mark McGwire
-  - Sammy Sosa
-  - Ken Griffey
-
-  # Team ranking
-  ---
-  - Chicago Cubs
-  - St Louis Cardinals
-ruby: |
-  y = YAML::Stream.new
-  y.add( [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] )
-  y.add( [ 'Chicago Cubs', 'St Louis Cardinals' ] )
-documents: 2
-
----
-test: Play by play feed from a game
-todo: true
-spec: 2.8
-yaml: |
-  ---
-  time: 20:03:20
-  player: Sammy Sosa
-  action: strike (miss)
-  ...
-  ---
-  time: 20:03:47
-  player: Sammy Sosa
-  action: grand slam
-  ...
-perl: |
-  [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ]
-documents: 2
-
----
-test: Single document with two comments
-spec: 2.9
-yaml: |
-  hr: # 1998 hr ranking
-    - Mark McGwire
-    - Sammy Sosa
-  rbi:
-    # 1998 rbi ranking
-    - Sammy Sosa
-    - Ken Griffey
-php: |
-  array(
-    'hr' => array( 'Mark McGwire', 'Sammy Sosa' ),
-    'rbi' => array( 'Sammy Sosa', 'Ken Griffey' )
-  )
----
-test: Node for Sammy Sosa appears twice in this document
-spec: 2.10
-yaml: |
-   ---
-   hr:
-      - Mark McGwire
-      # Following node labeled SS
-      - &SS Sammy Sosa
-   rbi:
-      - *SS # Subsequent occurance
-      - Ken Griffey
-php: |
-   array(
-      'hr' =>
-         array('Mark McGwire', 'Sammy Sosa'),
-      'rbi' =>
-         array('Sammy Sosa', 'Ken Griffey')
-   )
----
-test: Mapping between sequences
-todo: true
-spec: 2.11
-yaml: |
-   ? # PLAY SCHEDULE
-     - Detroit Tigers
-     - Chicago Cubs
-   :
-     - 2001-07-23
-
-   ? [ New York Yankees,
-       Atlanta Braves ]
-   : [ 2001-07-02, 2001-08-12,
-       2001-08-14 ]
-ruby: |
-   {
-      [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ],
-      [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ]
-   }
-syck: |
-  struct test_node seq1[] = {
-      { T_STR, 0, "New York Yankees" },
-      { T_STR, 0, "Atlanta Braves" },
-      end_node
-  };
-  struct test_node seq2[] = {
-      { T_STR, 0, "2001-07-02" },
-      { T_STR, 0, "2001-08-12" },
-      { T_STR, 0, "2001-08-14" },
-      end_node
-  };
-  struct test_node seq3[] = {
-      { T_STR, 0, "Detroit Tigers" },
-      { T_STR, 0, "Chicago Cubs" },
-      end_node
-  };
-  struct test_node seq4[] = {
-      { T_STR, 0, "2001-07-23" },
-      end_node
-  };
-  struct test_node map[] = {
-      { T_SEQ, 0, 0, seq3 },
-      { T_SEQ, 0, 0, seq4 },
-      { T_SEQ, 0, 0, seq1 },
-      { T_SEQ, 0, 0, seq2 },
-      end_node
-  };
-  struct test_node stream[] = {
-      { T_MAP, 0, 0, map },
-      end_node
-  };
-
----
-test: Sequence key shortcut
-spec: 2.12
-yaml: |
-  ---
-  # products purchased
-  - item    : Super Hoop
-    quantity: 1
-  - item    : Basketball
-    quantity: 4
-  - item    : Big Shoes
-    quantity: 1
-php: |
-  array (
-    array (
-      'item' => 'Super Hoop',
-      'quantity' => 1,
-    ),
-    array (
-      'item' => 'Basketball',
-      'quantity' => 4,
-    ),
-    array (
-      'item' => 'Big Shoes',
-      'quantity' => 1,
-    )
-  )
-perl: |
-  [
-     { item => 'Super Hoop', quantity => 1 },
-     { item => 'Basketball', quantity => 4 },
-     { item => 'Big Shoes',  quantity => 1 }
-  ]
-
-ruby: |
-  [
-     { 'item' => 'Super Hoop', 'quantity' => 1 },
-     { 'item' => 'Basketball', 'quantity' => 4 },
-     { 'item' => 'Big Shoes', 'quantity' => 1 }
-  ]
-python: |
-  [
-       { 'item': 'Super Hoop', 'quantity': 1 },
-       { 'item': 'Basketball', 'quantity': 4 },
-       { 'item': 'Big Shoes',  'quantity': 1 }
-  ]
-syck: |
-  struct test_node map1[] = {
-      { T_STR, 0, "item" },
-          { T_STR, 0, "Super Hoop" },
-      { T_STR, 0, "quantity" },
-          { T_STR, 0, "1" },
-      end_node
-  };
-  struct test_node map2[] = {
-      { T_STR, 0, "item" },
-          { T_STR, 0, "Basketball" },
-      { T_STR, 0, "quantity" },
-          { T_STR, 0, "4" },
-      end_node
-  };
-  struct test_node map3[] = {
-      { T_STR, 0, "item" },
-          { T_STR, 0, "Big Shoes" },
-      { T_STR, 0, "quantity" },
-          { T_STR, 0, "1" },
-      end_node
-  };
-  struct test_node seq[] = {
-      { T_MAP, 0, 0, map1 },
-      { T_MAP, 0, 0, map2 },
-      { T_MAP, 0, 0, map3 },
-      end_node
-  };
-  struct test_node stream[] = {
-      { T_SEQ, 0, 0, seq },
-      end_node
-  };
-
-
----
-test: Literal perserves newlines
-todo: true
-spec: 2.13
-yaml: |
-  # ASCII Art
-  --- |
-    \//||\/||
-    // ||  ||_
-perl: |
-  "\\//||\\/||\n// ||  ||_\n"
-ruby: |
-  "\\//||\\/||\n// ||  ||_\n"
-python: |
-    [
-        flushLeft(
-        """
-        \//||\/||
-        // ||  ||_
-        """
-        )
-    ]
-syck: |
-  struct test_node stream[] = {
-      { T_STR, 0, "\\//||\\/||\n// ||  ||_\n" },
-      end_node
-  };
-
----
-test: Folded treats newlines as a space
-todo: true
-spec: 2.14
-yaml: |
-  ---
-    Mark McGwire's
-    year was crippled
-    by a knee injury.
-perl: |
-  "Mark McGwire's year was crippled by a knee injury."
-ruby: |
-  "Mark McGwire's year was crippled by a knee injury."
-python: |
-    [ "Mark McGwire's year was crippled by a knee injury." ]
-syck: |
-  struct test_node stream[] = {
-      { T_STR, 0, "Mark McGwire's year was crippled by a knee injury." },
-      end_node
-  };
-
----
-test: Newlines preserved for indented and blank lines
-todo: true
-spec: 2.15
-yaml: |
-  --- >
-   Sammy Sosa completed another
-   fine season with great stats.
-
-     63 Home Runs
-     0.288 Batting Average
-
-   What a year!
-perl: |
-  "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n"
-ruby: |
-  "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n"
-python: |
-    [
-        flushLeft(
-        """
-        Sammy Sosa completed another fine season with great stats.
-
-          63 Home Runs
-          0.288 Batting Average
-
-        What a year!
-        """
-        )
-    ]
-syck: |
-  struct test_node stream[] = {
-      { T_STR, 0, "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n" },
-      end_node
-  };
-
-
----
-test: Indentation determines scope
-spec: 2.16
-yaml: |
-  name: Mark McGwire
-  accomplishment: >
-     Mark set a major league
-     home run record in 1998.
-  stats: |
-     65 Home Runs
-     0.278 Batting Average
-php: |
-  array(
-    'name'           => 'Mark McGwire',
-    'accomplishment' => "Mark set a major league home run record in 1998.\n",
-    'stats'          => "65 Home Runs\n0.278 Batting Average\n"
-  )
----
-test: Quoted scalars
-todo: true
-spec: 2.17
-yaml: |
-  unicode: "Sosa did fine.\u263A"
-  control: "\b1998\t1999\t2000\n"
-  hexesc:  "\x0D\x0A is \r\n"
-
-  single: '"Howdy!" he cried.'
-  quoted: ' # not a ''comment''.'
-  tie-fighter: '|\-*-/|'
-ruby: |
-  {
-    "tie-fighter" => "|\\-*-/|",
-    "control"=>"\0101998\t1999\t2000\n",
-    "unicode"=>"Sosa did fine." + ["263A".hex ].pack('U*'),
-    "quoted"=>" # not a 'comment'.",
-    "single"=>"\"Howdy!\" he cried.",
-    "hexesc"=>"\r\n is \r\n"
-  }
----
-test: Multiline flow scalars
-todo: true
-spec: 2.18
-yaml: |
-  plain:
-    This unquoted scalar
-    spans many lines.
-
-  quoted: "So does this
-    quoted scalar.\n"
-ruby: |
-  {
-    'plain' => 'This unquoted scalar spans many lines.',
-    'quoted' => "So does this quoted scalar.\n"
-  }
----
-test: Integers
-spec: 2.19
-yaml: |
-  canonical: 12345
-  decimal: +12,345
-  octal: 014
-  hexadecimal: 0xC
-php: |
-  array(
-    'canonical' => 12345,
-    'decimal' => 12345,
-    'octal' => 014,
-    'hexadecimal' => 0xC
-  )
----
-# FIX: spec shows parens around -inf and NaN
-test: Floating point
-spec: 2.20
-yaml: |
-  canonical: 1.23015e+3
-  exponential: 12.3015e+02
-  fixed: 1,230.15
-  negative infinity: -.inf
-  not a number: .NaN
-php: |
-  array(
-    'canonical' => 1230.15,
-    'exponential' => 1230.15,
-    'fixed' => 1230.15,
-    'negative infinity' => log(0),
-    'not a number' => -log(0),
-  )
----
-test: Miscellaneous
-spec: 2.21
-yaml: |
-  null: ~
-  true: true
-  false: false
-  string: '12345'
-php: |
-  array(
-    '' => null,
-    1 => true,
-    0 => false,
-    'string' => '12345'
-  )
----
-test: Timestamps
-todo: true
-spec: 2.22
-yaml: |
-  canonical: 2001-12-15T02:59:43.1Z
-  iso8601:  2001-12-14t21:59:43.10-05:00
-  spaced:  2001-12-14 21:59:43.10 -05:00
-  date:   2002-12-14 # Time is noon UTC
-php: |
-  array(
-    'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
-    'iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
-    'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
-    'date' => Date.new( 2002, 12, 14 )
-  )
----
-test: legacy Timestamps test
-todo: true
-spec: legacy D4
-yaml: |
-    canonical: 2001-12-15T02:59:43.00Z
-    iso8601:  2001-02-28t21:59:43.00-05:00
-    spaced:  2001-12-14 21:59:43.00 -05:00
-    date:   2002-12-14
-php: |
-   array(
-     'canonical' => Time::utc( 2001, 12, 15, 2, 59, 43, 0 ),
-     'iso8601' => YAML::mktime( 2001, 2, 28, 21, 59, 43, 0, "-05:00" ),
-     'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0, "-05:00" ),
-     'date' => Date.new( 2002, 12, 14 )
-   )
----
-test: Various explicit families
-todo: true
-spec: 2.23
-yaml: |
-  not-date: !str 2002-04-28
-  picture: !binary |
-   R0lGODlhDAAMAIQAAP//9/X
-   17unp5WZmZgAAAOfn515eXv
-   Pz7Y6OjuDg4J+fn5OTk6enp
-   56enmleECcgggoBADs=
-
-  application specific tag: !!something |
-   The semantics of the tag
-   above may be different for
-   different documents.
-
-ruby-setup: |
-  YAML.add_private_type( "something" ) do |type, val|
-    "SOMETHING: #{val}"
-  end
-ruby: |
-  {
-    'not-date' => '2002-04-28',
-    'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;",
-    'application specific tag' => "SOMETHING: The semantics of the tag\nabove may be different for\ndifferent documents.\n"
-  }
----
-test: Application specific family
-todo: true
-spec: 2.24
-yaml: |
-  # Establish a tag prefix
-  --- !clarkevans.com,2002/graph/^shape
-    # Use the prefix: shorthand for
-    # !clarkevans.com,2002/graph/circle
-  - !^circle
-    center: &ORIGIN {x: 73, 'y': 129}
-    radius: 7
-  - !^line # !clarkevans.com,2002/graph/line
-    start: *ORIGIN
-    finish: { x: 89, 'y': 102 }
-  - !^label
-    start: *ORIGIN
-    color: 0xFFEEBB
-    value: Pretty vector drawing.
-ruby-setup: |
-  YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val|
-    if Array === val
-      val << "Shape Container"
-      val
-    else
-      raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
-    end
-  }
-  one_shape_proc = Proc.new { |type, val|
-    scheme, domain, type = type.split( /:/, 3 )
-    if val.is_a? ::Hash
-      val['TYPE'] = "Shape: #{type}"
-      val
-    else
-      raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
-    end
-  }
-  YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc )
-  YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc )
-  YAML.add_domain_type( "clarkevans.com,2002", 'graph/label', &one_shape_proc )
-ruby: |
-  [
-    {
-      "radius" => 7,
-      "center"=>
-      {
-        "x" => 73,
-        "y" => 129
-      },
-      "TYPE" => "Shape: graph/circle"
-    }, {
-      "finish" =>
-      {
-        "x" => 89,
-        "y" => 102
-      },
-      "TYPE" => "Shape: graph/line",
-      "start" =>
-      {
-        "x" => 73,
-        "y" => 129
-      }
-    }, {
-      "TYPE" => "Shape: graph/label",
-      "value" => "Pretty vector drawing.",
-      "start" =>
-      {
-        "x" => 73,
-        "y" => 129
-      },
-      "color" => 16772795
-    },
-    "Shape Container"
-  ]
-# ---
-# test: Unordered set
-# spec: 2.25
-# yaml: |
-#   # sets are represented as a
-#   # mapping where each key is
-#   # associated with the empty string
-#   --- !set
-#   ? Mark McGwire
-#   ? Sammy Sosa
-#   ? Ken Griff
----
-test: Ordered mappings
-todo: true
-spec: 2.26
-yaml: |
-  # ordered maps are represented as
-  # a sequence of mappings, with
-  # each mapping having one key
-  --- !omap
-  - Mark McGwire: 65
-  - Sammy Sosa: 63
-  - Ken Griffy: 58
-ruby: |
-  YAML::Omap[
-    'Mark McGwire', 65,
-    'Sammy Sosa', 63,
-    'Ken Griffy', 58
-  ]
----
-test: Invoice
-dump_skip: true
-spec: 2.27
-yaml: |
-  --- !clarkevans.com,2002/^invoice
-  invoice: 34843
-  date   : 2001-01-23
-  bill-to: &id001
-      given  : Chris
-      family : Dumars
-      address:
-          lines: |
-              458 Walkman Dr.
-              Suite #292
-          city    : Royal Oak
-          state   : MI
-          postal  : 48046
-  ship-to: *id001
-  product:
-      -
-        sku         : BL394D
-        quantity    : 4
-        description : Basketball
-        price       : 450.00
-      -
-        sku         : BL4438H
-        quantity    : 1
-        description : Super Hoop
-        price       : 2392.00
-  tax  : 251.42
-  total: 4443.52
-  comments: >
-    Late afternoon is best.
-    Backup contact is Nancy
-    Billsmer @ 338-4338.
-php: |
-  array(
-     'invoice' => 34843, 'date' => mktime(0, 0, 0, 1, 23, 2001),
-     'bill-to' =>
-      array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
-     , 'ship-to' =>
-      array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
-     , 'product' =>
-       array(
-        array( 'sku' => 'BL394D', 'quantity' => 4, 'description' => 'Basketball', 'price' => 450.00 ),
-        array( 'sku' => 'BL4438H', 'quantity' => 1, 'description' => 'Super Hoop', 'price' => 2392.00 )
-      ),
-     'tax' => 251.42, 'total' => 4443.52,
-     'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n"
-  )
----
-test: Log file
-todo: true
-spec: 2.28
-yaml: |
-  ---
-  Time: 2001-11-23 15:01:42 -05:00
-  User: ed
-  Warning: >
-    This is an error message
-    for the log file
-  ---
-  Time: 2001-11-23 15:02:31 -05:00
-  User: ed
-  Warning: >
-    A slightly different error
-    message.
-  ---
-  Date: 2001-11-23 15:03:17 -05:00
-  User: ed
-  Fatal: >
-    Unknown variable "bar"
-  Stack:
-    - file: TopClass.py
-      line: 23
-      code: |
-        x = MoreObject("345\n")
-    - file: MoreClass.py
-      line: 58
-      code: |-
-        foo = bar
-ruby: |
-  y = YAML::Stream.new
-  y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ),
-           'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } )
-  y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ),
-           'User' => 'ed', 'Warning' => "A slightly different error message.\n" } )
-  y.add( { 'Date' => YAML::mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ),
-           'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n",
-           'Stack' => [
-           { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" },
-           { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } )
-documents: 3
-
----
-test: Throwaway comments
-yaml: |
-   ### These are four throwaway comment  ###
-
-   ### lines (the second line is empty). ###
-   this: |   # Comments may trail lines.
-      contains three lines of text.
-      The third one starts with a
-      # character. This isn't a comment.
-
-   # These are three throwaway comment
-   # lines (the first line is empty).
-php: |
-   array(
-     'this' => "contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n"
-   )
----
-test: Document with a single value
-todo: true
-yaml: |
-   --- >
-   This YAML stream contains a single text value.
-   The next stream is a log file - a sequence of
-   log entries. Adding an entry to the log is a
-   simple matter of appending it at the end.
-ruby: |
-   "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n"
----
-test: Document stream
-todo: true
-yaml: |
-   ---
-   at: 2001-08-12 09:25:00.00 Z
-   type: GET
-   HTTP: '1.0'
-   url: '/index.html'
-   ---
-   at: 2001-08-12 09:25:10.00 Z
-   type: GET
-   HTTP: '1.0'
-   url: '/toc.html'
-ruby: |
-   y = YAML::Stream.new
-   y.add( {
-      'at' => Time::utc( 2001, 8, 12, 9, 25, 00 ),
-      'type' => 'GET',
-      'HTTP' => '1.0',
-      'url' => '/index.html'
-   } )
-   y.add( {
-      'at' => Time::utc( 2001, 8, 12, 9, 25, 10 ),
-      'type' => 'GET',
-      'HTTP' => '1.0',
-      'url' => '/toc.html'
-   } )
-documents: 2
-
----
-test: Top level mapping
-yaml: |
-   # This stream is an example of a top-level mapping.
-   invoice : 34843
-   date    : 2001-01-23
-   total   : 4443.52
-php: |
-   array(
-      'invoice' => 34843,
-      'date' => mktime(0, 0, 0, 1, 23, 2001),
-      'total' => 4443.52
-   )
----
-test: Single-line documents
-todo: true
-yaml: |
-  # The following is a sequence of three documents.
-  # The first contains an empty mapping, the second
-  # an empty sequence, and the last an empty string.
-  --- {}
-  --- [ ]
-  --- ''
-ruby: |
-  y = YAML::Stream.new
-  y.add( {} )
-  y.add( [] )
-  y.add( '' )
-documents: 3
-
----
-test: Document with pause
-todo: true
-yaml: |
-  # A communication channel based on a YAML stream.
-  ---
-  sent at: 2002-06-06 11:46:25.10 Z
-  payload: Whatever
-  # Receiver can process this as soon as the following is sent:
-  ...
-  # Even if the next message is sent long after:
-  ---
-  sent at: 2002-06-06 12:05:53.47 Z
-  payload: Whatever
-  ...
-ruby: |
-  y = YAML::Stream.new
-  y.add(
-    { 'sent at' => YAML::mktime( 2002, 6, 6, 11, 46, 25, 0.10 ),
-      'payload' => 'Whatever' }
-  )
-  y.add(
-    { "payload" => "Whatever", "sent at" => YAML::mktime( 2002, 6, 6, 12, 5, 53, 0.47 ) }
-  )
-documents: 2
-
----
-test: Explicit typing
-yaml: |
-   integer: 12
-   also int: ! "12"
-   string: !str 12
-php: |
-   array( 'integer' => 12, 'also int' => 12, 'string' => '12' )
----
-test: Private types
-todo: true
-yaml: |
-  # Both examples below make use of the 'x-private:ball'
-  # type family URI, but with different semantics.
-  ---
-  pool: !!ball
-    number: 8
-    color: black
-  ---
-  bearing: !!ball
-    material: steel
-ruby: |
-  y = YAML::Stream.new
-  y.add( { 'pool' =>
-    YAML::PrivateType.new( 'ball',
-      { 'number' => 8, 'color' => 'black' } ) }
-  )
-  y.add( { 'bearing' =>
-    YAML::PrivateType.new( 'ball',
-      { 'material' => 'steel' } ) }
-  )
-documents: 2
-
----
-test: Type family under yaml.org
-yaml: |
-  # The URI is 'tag:yaml.org,2002:str'
-  - !str a Unicode string
-php: |
-  array( 'a Unicode string' )
----
-test: Type family under perl.yaml.org
-todo: true
-yaml: |
-  # The URI is 'tag:perl.yaml.org,2002:Text::Tabs'
-  - !perl/Text::Tabs {}
-ruby: |
-  [ YAML::DomainType.new( 'perl.yaml.org,2002', 'Text::Tabs', {} ) ]
----
-test: Type family under clarkevans.com
-todo: true
-yaml: |
-  # The URI is 'tag:clarkevans.com,2003-02:timesheet'
-  - !clarkevans.com,2003-02/timesheet {}
-ruby: |
-  [ YAML::DomainType.new( 'clarkevans.com,2003-02', 'timesheet', {} ) ]
----
-test: URI Escaping
-todo: true
-yaml: |
-  same:
-    - !domain.tld,2002/type\x30 value
-    - !domain.tld,2002/type0 value
-  different: # As far as the YAML parser is concerned
-    - !domain.tld,2002/type%30 value
-    - !domain.tld,2002/type0 value
-ruby-setup: |
-  YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val|
-    "ONE: #{val}"
-  }
-  YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val|
-    "TWO: #{val}"
-  }
-ruby: |
-  { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value', 'ONE: value' ] }
----
-test: URI Prefixing
-todo: true
-yaml: |
-  # 'tag:domain.tld,2002:invoice' is some type family.
-  invoice: !domain.tld,2002/^invoice
-    # 'seq' is shorthand for 'tag:yaml.org,2002:seq'.
-    # This does not effect '^customer' below
-    # because it is does not specify a prefix.
-    customers: !seq
-      # '^customer' is shorthand for the full
-      # notation 'tag:domain.tld,2002:customer'.
-      - !^customer
-        given : Chris
-        family : Dumars
-ruby-setup: |
-  YAML.add_domain_type( "domain.tld,2002", /(invoice|customer)/ ) { |type, val|
-    if val.is_a? ::Hash
-      scheme, domain, type = type.split( /:/, 3 )
-      val['type'] = "domain #{type}"
-      val
-    else
-      raise YAML::Error, "Not a Hash in domain.tld/invoice: " + val.inspect
-    end
-  }
-ruby: |
-  { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }
-
----
-test: Overriding anchors
-yaml: |
-  anchor : &A001 This scalar has an anchor.
-  override : &A001 >
-   The alias node below is a
-   repeated use of this value.
-  alias : *A001
-php: |
-  array( 'anchor' => 'This scalar has an anchor.',
-    'override' => "The alias node below is a repeated use of this value.\n",
-    'alias' => "The alias node below is a repeated use of this value.\n" )
----
-test: Flow and block formatting
-todo: true
-yaml: |
-  empty: []
-  flow: [ one, two, three # May span lines,
-           , four,           # indentation is
-             five ]          # mostly ignored.
-  block:
-   - First item in top sequence
-   -
-    - Subordinate sequence entry
-   - >
-     A folded sequence entry
-   - Sixth item in top sequence
-ruby: |
-  { 'empty' => [], 'flow' => [ 'one', 'two', 'three', 'four', 'five' ],
-    'block' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ],
-    "A folded sequence entry\n", 'Sixth item in top sequence' ] }
----
-test: Complete mapping test
-todo: true
-yaml: |
- empty: {}
- flow: { one: 1, two: 2 }
- spanning: { one: 1,
-    two: 2 }
- block:
-  first : First entry
-  second:
-   key: Subordinate mapping
-  third:
-   - Subordinate sequence
-   - { }
-   - Previous mapping is empty.
-   - A key: value pair in a sequence.
-     A second: key:value pair.
-   - The previous entry is equal to the following one.
-   -
-     A key: value pair in a sequence.
-     A second: key:value pair.
-  !float 12 : This key is a float.
-  ? >
-   ?
-  : This key had to be protected.
-  "\a" : This key had to be escaped.
-  ? >
-   This is a
-   multi-line
-   folded key
-  : Whose value is
-    also multi-line.
-  ? this also works as a key
-  : with a value at the next line.
-  ?
-   - This key
-   - is a sequence
-  :
-   - With a sequence value.
-  ?
-   This: key
-   is a: mapping
-  :
-   with a: mapping value.
-ruby: |
-  { 'empty' => {}, 'flow' => { 'one' => 1, 'two' => 2 },
-    'spanning' => { 'one' => 1, 'two' => 2 },
-    'block' => { 'first' => 'First entry', 'second' =>
-    { 'key' => 'Subordinate mapping' }, 'third' =>
-      [ 'Subordinate sequence', {}, 'Previous mapping is empty.',
-        { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' },
-        'The previous entry is equal to the following one.',
-        { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ],
-    12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.',
-    "\a" => 'This key had to be escaped.',
-    "This is a multi-line folded key\n" => "Whose value is also multi-line.",
-    'this also works as a key' => 'with a value at the next line.',
-    [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } }
-  # Couldn't recreate map exactly, so we'll do a detailed check to be sure it's entact
-  obj_y['block'].keys.each { |k|
-    if Hash === k
-      v = obj_y['block'][k]
-      if k['This'] == 'key' and k['is a'] == 'mapping' and v['with a'] == 'mapping value.'
-         obj_r['block'][k] = v
-      end
-    end
-  }
----
-test: Literal explicit indentation
-yaml: |
-   # Explicit indentation must
-   # be given in all the three
-   # following cases.
-   leading spaces: |2
-         This value starts with four spaces.
-
-   leading line break: |2
-
-     This value starts with a line break.
-
-   leading comment indicator: |2
-     # first line starts with a
-     # character.
-
-   # Explicit indentation may
-   # also be given when it is
-   # not required.
-   redundant: |2
-     This value is indented 2 spaces.
-php: |
-   array(
-      'leading spaces' => "    This value starts with four spaces.\n",
-      'leading line break' => "\nThis value starts with a line break.\n",
-      'leading comment indicator' => "# first line starts with a\n# character.\n",
-      'redundant' => "This value is indented 2 spaces.\n"
-   )
----
-test: Chomping and keep modifiers
-yaml: |
-    clipped: |
-        This has one newline.
-
-    same as "clipped" above: "This has one newline.\n"
-
-    stripped: |-
-        This has no newline.
-
-    same as "stripped" above: "This has no newline."
-
-    kept: |+
-        This has two newlines.
-
-    same as "kept" above: "This has two newlines.\n\n"
-php: |
-    array(
-      'clipped' => "This has one newline.\n",
-      'same as "clipped" above' => "This has one newline.\n",
-      'stripped' => 'This has no newline.',
-      'same as "stripped" above' => 'This has no newline.',
-      'kept' => "This has two newlines.\n\n",
-      'same as "kept" above' => "This has two newlines.\n\n"
-    )
----
-test: Literal combinations
-todo: true
-yaml: |
-   empty: |
-
-   literal: |
-    The \ ' " characters may be
-    freely used. Leading white
-       space is significant.
-
-    Line breaks are significant.
-    Thus this value contains one
-    empty line and ends with a
-    single line break, but does
-    not start with one.
-
-   is equal to: "The \\ ' \" characters may \
-    be\nfreely used. Leading white\n   space \
-    is significant.\n\nLine breaks are \
-    significant.\nThus this value contains \
-    one\nempty line and ends with a\nsingle \
-    line break, but does\nnot start with one.\n"
-
-   # Comments may follow a block
-   # scalar value. They must be
-   # less indented.
-
-   # Modifiers may be combined in any order.
-   indented and chomped: |2-
-       This has no newline.
-
-   also written as: |-2
-       This has no newline.
-
-   both are equal to: "  This has no newline."
-php: |
-   array(
-     'empty' => '',
-     'literal' => "The \\ ' \" characters may be\nfreely used. Leading white\n   space " +
-       "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
-       "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
-     'is equal to' => "The \\ ' \" characters may be\nfreely used. Leading white\n   space " +
-       "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
-       "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
-     'indented and chomped' => '  This has no newline.',
-     'also written as' => '  This has no newline.',
-     'both are equal to' => '  This has no newline.'
-   )
----
-test: Folded combinations
-todo: true
-yaml: |
-   empty: >
-
-   one paragraph: >
-    Line feeds are converted
-    to spaces, so this value
-    contains no line breaks
-    except for the final one.
-
-   multiple paragraphs: >2
-
-     An empty line, either
-     at the start or in
-     the value:
-
-     Is interpreted as a
-     line break. Thus this
-     value contains three
-     line breaks.
-
-   indented text: >
-       This is a folded
-       paragraph followed
-       by a list:
-        * first entry
-        * second entry
-       Followed by another
-       folded paragraph,
-       another list:
-
-        * first entry
-
-        * second entry
-
-       And a final folded
-       paragraph.
-
-   above is equal to: |
-       This is a folded paragraph followed by a list:
-        * first entry
-        * second entry
-       Followed by another folded paragraph, another list:
-
-        * first entry
-
-        * second entry
-
-       And a final folded paragraph.
-
-   # Explicit comments may follow
-   # but must be less indented.
-php: |
-   array(
-     'empty' => '',
-     'one paragraph' => 'Line feeds are converted to spaces, so this value'.
-       " contains no line breaks except for the final one.\n",
-     'multiple paragraphs' => "\nAn empty line, either at the start or in the value:\n".
-       "Is interpreted as a line break. Thus this value contains three line breaks.\n",
-     'indented text' => "This is a folded paragraph followed by a list:\n".
-       " * first entry\n * second entry\nFollowed by another folded paragraph, ".
-       "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n",
-     'above is equal to' => "This is a folded paragraph followed by a list:\n".
-       " * first entry\n * second entry\nFollowed by another folded paragraph, ".
-       "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n"
-   )
----
-test: Single quotes
-todo: true
-yaml: |
-   empty: ''
-   second: '! : \ etc. can be used freely.'
-   third: 'a single quote '' must be escaped.'
-   span: 'this contains
-         six spaces
-
-         and one
-         line break'
-   is same as: "this contains six spaces\nand one line break"
-php: |
-   array(
-     'empty' => '',
-     'second' => '! : \\ etc. can be used freely.',
-     'third' => "a single quote ' must be escaped.",
-     'span' => "this contains six spaces\nand one line break",
-     'is same as' => "this contains six spaces\nand one line break"
-   )
----
-test: Double quotes
-todo: true
-yaml: |
-   empty: ""
-   second: "! : etc. can be used freely."
-   third: "a \" or a \\ must be escaped."
-   fourth: "this value ends with an LF.\n"
-   span: "this contains
-     four  \
-         spaces"
-   is equal to: "this contains four  spaces"
-php: |
-   array(
-     'empty' => '',
-     'second' => '! : etc. can be used freely.',
-     'third' => 'a " or a \\ must be escaped.',
-     'fourth' => "this value ends with an LF.\n",
-     'span' => "this contains four  spaces",
-     'is equal to' => "this contains four  spaces"
-   )
----
-test: Unquoted strings
-todo: true
-yaml: |
-   first: There is no unquoted empty string.
-
-   second: 12          ## This is an integer.
-
-   third: !str 12      ## This is a string.
-
-   span: this contains
-         six spaces
-
-         and one
-         line break
-
-   indicators: this has no comments.
-               #:foo and bar# are
-               both text.
-
-   flow: [ can span
-              lines, # comment
-              like
-              this ]
-
-   note: { one-line keys: but multi-line values }
-
-php: |
-   array(
-     'first' => 'There is no unquoted empty string.',
-     'second' => 12,
-     'third' => '12',
-     'span' => "this contains six spaces\nand one line break",
-     'indicators' => "this has no comments. #:foo and bar# are both text.",
-     'flow' => [ 'can span lines', 'like this' ],
-     'note' => { 'one-line keys' => 'but multi-line values' }
-   )
----
-test: Spanning sequences
-todo: true
-yaml: |
-   # The following are equal seqs
-   # with different identities.
-   flow: [ one, two ]
-   spanning: [ one,
-        two ]
-   block:
-     - one
-     - two
-php: |
-   array(
-     'flow' => [ 'one', 'two' ],
-     'spanning' => [ 'one', 'two' ],
-     'block' => [ 'one', 'two' ]
-   )
----
-test: Flow mappings
-yaml: |
-   # The following are equal maps
-   # with different identities.
-   flow: { one: 1, two: 2 }
-   block:
-       one: 1
-       two: 2
-php: |
-   array(
-     'flow' => array( 'one' => 1, 'two' => 2 ),
-     'block' => array( 'one' => 1, 'two' => 2 )
-   )
----
-test: Representations of 12
-todo: true
-yaml: |
-   - 12 # An integer
-   # The following scalars
-   # are loaded to the
-   # string value '1' '2'.
-   - !str 12
-   - '12'
-   - "12"
-   - "\
-     1\
-     2\
-     "
-   # Strings containing paths and regexps can be unquoted:
-   - /foo/bar
-   - d:/foo/bar
-   - foo/bar
-   - /a.*b/
-php: |
-   array( 12, '12', '12', '12', '12', '/foo/bar', 'd:/foo/bar', 'foo/bar', '/a.*b/' )
----
-test: "Null"
-todo: true
-yaml: |
-   canonical: ~
-
-   english: null
-
-   # This sequence has five
-   # entries, two with values.
-   sparse:
-     - ~
-     - 2nd entry
-     - Null
-     - 4th entry
-     -
-
-   four: This mapping has five keys,
-         only two with values.
-
-php: |
-   array (
-     'canonical' => null,
-     'english' => null,
-     'sparse' => array( null, '2nd entry', null, '4th entry', null ]),
-     'four' => 'This mapping has five keys, only two with values.'
-   )
----
-test: Omap
-todo: true
-yaml: |
-   # Explicitly typed dictionary.
-   Bestiary: !omap
-     - aardvark: African pig-like ant eater. Ugly.
-     - anteater: South-American ant eater. Two species.
-     - anaconda: South-American constrictor snake. Scary.
-     # Etc.
-ruby: |
-   {
-     'Bestiary' => YAML::Omap[
-       'aardvark', 'African pig-like ant eater. Ugly.',
-       'anteater', 'South-American ant eater. Two species.',
-       'anaconda', 'South-American constrictor snake. Scary.'
-     ]
-   }
-
----
-test: Pairs
-todo: true
-yaml: |
-  # Explicitly typed pairs.
-  tasks: !pairs
-    - meeting: with team.
-    - meeting: with boss.
-    - break: lunch.
-    - meeting: with client.
-ruby: |
-  {
-    'tasks' => YAML::Pairs[
-      'meeting', 'with team.',
-      'meeting', 'with boss.',
-      'break', 'lunch.',
-      'meeting', 'with client.'
-    ]
-  }
-
----
-test: Set
-todo: true
-yaml: |
-  # Explicitly typed set.
-  baseball players: !set
-    Mark McGwire:
-    Sammy Sosa:
-    Ken Griffey:
-ruby: |
-  {
-    'baseball players' => YAML::Set[
-      'Mark McGwire', nil,
-      'Sammy Sosa', nil,
-      'Ken Griffey', nil
-    ]
-  }
-
----
-test: Boolean
-yaml: |
-   false: used as key
-   logical:  true
-   answer: false
-php: |
-   array(
-     false => 'used as key',
-     'logical' => true,
-     'answer' => false
-   )
----
-test: Integer
-yaml: |
-   canonical: 12345
-   decimal: +12,345
-   octal: 014
-   hexadecimal: 0xC
-php: |
-   array(
-     'canonical' => 12345,
-     'decimal' => 12345,
-     'octal' => 12,
-     'hexadecimal' => 12
-   )
----
-test: Float
-yaml: |
-   canonical: 1.23015e+3
-   exponential: 12.3015e+02
-   fixed: 1,230.15
-   negative infinity: -.inf
-   not a number: .NaN
-php: |
-  array(
-    'canonical' => 1230.15,
-    'exponential' => 1230.15,
-    'fixed' => 1230.15,
-    'negative infinity' => log(0),
-    'not a number' => -log(0)
-  )
----
-test: Timestamp
-todo: true
-yaml: |
-   canonical:       2001-12-15T02:59:43.1Z
-   valid iso8601:   2001-12-14t21:59:43.10-05:00
-   space separated: 2001-12-14 21:59:43.10 -05:00
-   date (noon UTC): 2002-12-14
-ruby: |
-   array(
-     'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
-     'valid iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
-     'space separated' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
-     'date (noon UTC)' => Date.new( 2002, 12, 14 )
-   )
----
-test: Binary
-todo: true
-yaml: |
-   canonical: !binary "\
-    R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\
-    OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\
-    +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\
-    AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="
-   base64: !binary |
-    R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
-    OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
-    +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
-    AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
-   description: >
-    The binary value above is a tiny arrow
-    encoded as a gif image.
-ruby-setup: |
-   arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005,  \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;"
-ruby: |
-   {
-     'canonical' => arrow_gif,
-     'base64' => arrow_gif,
-     'description' => "The binary value above is a tiny arrow encoded as a gif image.\n"
-   }
-
----
-test: Merge key
-todo: true
-yaml: |
-  ---
-  - &CENTER { x: 1, y: 2 }
-  - &LEFT { x: 0, y: 2 }
-  - &BIG { r: 10 }
-  - &SMALL { r: 1 }
-
-  # All the following maps are equal:
-
-  - # Explicit keys
-    x: 1
-    y: 2
-    r: 10
-    label: center/big
-
-  - # Merge one map
-    << : *CENTER
-    r: 10
-    label: center/big
-
-  - # Merge multiple maps
-    << : [ *CENTER, *BIG ]
-    label: center/big
-
-  - # Override
-    << : [ *BIG, *LEFT, *SMALL ]
-    x: 1
-    label: center/big
-
-ruby-setup: |
-  center = { 'x' => 1, 'y' => 2 }
-  left = { 'x' => 0, 'y' => 2 }
-  big = { 'r' => 10 }
-  small = { 'r' => 1 }
-  node1 = { 'x' => 1, 'y' => 2, 'r' => 10, 'label' => 'center/big' }
-  node2 = center.dup
-  node2.update( { 'r' => 10, 'label' => 'center/big' } )
-  node3 = big.dup
-  node3.update( center )
-  node3.update( { 'label' => 'center/big' } )
-  node4 = small.dup
-  node4.update( left )
-  node4.update( big )
-  node4.update( { 'x' => 1, 'label' => 'center/big' } )
-
-ruby: |
-  [
-    center, left, big, small, node1, node2, node3, node4
-  ]
-
----
-test: Default key
-todo: true
-yaml: |
-   ---     # Old schema
-   link with:
-     - library1.dll
-     - library2.dll
-   ---     # New schema
-   link with:
-     - = : library1.dll
-       version: 1.2
-     - = : library2.dll
-       version: 2.3
-ruby: |
-   y = YAML::Stream.new
-   y.add( { 'link with' => [ 'library1.dll', 'library2.dll' ] } )
-   obj_h = Hash[ 'version' => 1.2 ]
-   obj_h.default = 'library1.dll'
-   obj_h2 = Hash[ 'version' => 2.3 ]
-   obj_h2.default = 'library2.dll'
-   y.add( { 'link with' => [ obj_h, obj_h2 ] } )
-documents: 2
-
----
-test: Special keys
-todo: true
-yaml: |
-   "!": These three keys
-   "&": had to be quoted
-   "=": and are normal strings.
-   # NOTE: the following node should NOT be serialized this way.
-   encoded node :
-    !special '!' : '!type'
-    !special|canonical '&' : 12
-    = : value
-   # The proper way to serialize the above node is as follows:
-   node : !!type &12 value
-ruby: |
-   { '!' => 'These three keys', '&' => 'had to be quoted',
-     '=' => 'and are normal strings.',
-     'encoded node' => YAML::PrivateType.new( 'type', 'value' ),
-     'node' => YAML::PrivateType.new( 'type', 'value' ) }
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsTypeTransfers.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsTypeTransfers.yml
deleted file mode 100644
index 9972c1f..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsTypeTransfers.yml
+++ /dev/null
@@ -1,244 +0,0 @@
---- %YAML:1.0
-test: Strings
-brief: >
-    Any group of characters beginning with an
-    alphabetic or numeric character is a string,
-    unless it belongs to one of the groups below
-    (such as an Integer or Time).
-yaml: |
-    String
-php: |
-    'String'
----
-test: String characters
-brief: >
-    A string can contain any alphabetic or
-    numeric character, along with many
-    punctuation characters, including the
-    period, dash, space, quotes, exclamation, and
-    question mark.
-yaml: |
-    - What's Yaml?
-    - It's for writing data structures in plain text.
-    - And?
-    - And what? That's not good enough for you?
-    - No, I mean, "And what about Yaml?"
-    - Oh, oh yeah. Uh.. Yaml for Ruby.
-php: |
-    array(
-      "What's Yaml?",
-      "It's for writing data structures in plain text.",
-      "And?",
-      "And what? That's not good enough for you?",
-      "No, I mean, \"And what about Yaml?\"",
-      "Oh, oh yeah. Uh.. Yaml for Ruby."
-    )
----
-test: Indicators in Strings
-brief: >
-    Be careful using indicators in strings.  In particular,
-    the comma, colon, and pound sign must be used carefully.
-yaml: |
-    the colon followed by space is an indicator: but is a string:right here
-    same for the pound sign: here we have it#in a string
-    the comma can, honestly, be used in most cases: [ but not in, inline collections ]
-php: |
-    array(
-      'the colon followed by space is an indicator' => 'but is a string:right here',
-      'same for the pound sign' => 'here we have it#in a string',
-      'the comma can, honestly, be used in most cases' => array('but not in', 'inline collections')
-    )
----
-test: Forcing Strings
-brief: >
-    Any YAML type can be forced into a string using the
-    explicit !str method.
-yaml: |
-    date string: !str 2001-08-01
-    number string: !str 192
-php: |
-    array(
-      'date string' => '2001-08-01',
-      'number string' => '192'
-    )
----
-test: Single-quoted Strings
-brief: >
-    You can also enclose your strings within single quotes,
-    which allows use of slashes, colons, and other indicators
-    freely.  Inside single quotes, you can represent a single
-    quote in your string by using two single quotes next to
-    each other.
-yaml: |
-    all my favorite symbols: '#:!/%.)'
-    a few i hate: '&(*'
-    why do i hate them?: 'it''s very hard to explain'
-    entities: '&pound; me'
-php: |
-    array(
-      'all my favorite symbols' => '#:!/%.)',
-      'a few i hate' => '&(*',
-      'why do i hate them?' => 'it\'s very hard to explain',
-      'entities' => '&pound; me'
-    )
----
-test: Double-quoted Strings
-brief: >
-    Enclosing strings in double quotes allows you
-    to use escapings to represent ASCII and
-    Unicode characters.
-yaml: |
-    i know where i want my line breaks: "one here\nand another here\n"
-php: |
-    array(
-      'i know where i want my line breaks' => "one here\nand another here\n"
-    )
----
-test: Multi-line Quoted Strings
-todo: true
-brief: >
-    Both single- and double-quoted strings may be
-    carried on to new lines in your YAML document.
-    They must be indented a step and indentation
-    is interpreted as a single space.
-yaml: |
-    i want a long string: "so i'm going to
-      let it go on and on to other lines
-      until i end it with a quote."
-php: |
-    array('i want a long string' => "so i'm going to ".
-         "let it go on and on to other lines ".
-         "until i end it with a quote."
-    )
-
----
-test: Plain scalars
-todo: true
-brief: >
-    Unquoted strings may also span multiple lines, if they
-    are free of YAML space indicators and indented.
-yaml: |
-    - My little toe is broken in two places;
-    - I'm crazy to have skied this way;
-    - I'm not the craziest he's seen, since there was always the German guy
-      who skied for 3 hours on a broken shin bone (just below the kneecap);
-    - Nevertheless, second place is respectable, and he doesn't
-      recommend going for the record;
-    - He's going to put my foot in plaster for a month;
-    - This would impair my skiing ability somewhat for the
-      duration, as can be imagined.
-php: |
-    array(
-      "My little toe is broken in two places;",
-      "I'm crazy to have skied this way;",
-      "I'm not the craziest he's seen, since there was always ".
-         "the German guy who skied for 3 hours on a broken shin ".
-         "bone (just below the kneecap);",
-      "Nevertheless, second place is respectable, and he doesn't ".
-         "recommend going for the record;",
-      "He's going to put my foot in plaster for a month;",
-      "This would impair my skiing ability somewhat for the duration, ".
-         "as can be imagined."
-    )
----
-test: 'Null'
-brief: >
-    You can use the tilde '~' character for a null value.
-yaml: |
-    name: Mr. Show
-    hosted by: Bob and David
-    date of next season: ~
-php: |
-    array(
-      'name' => 'Mr. Show',
-      'hosted by' => 'Bob and David',
-      'date of next season' => null
-    )
----
-test: Boolean
-brief: >
-    You can use 'true' and 'false' for Boolean values.
-yaml: |
-    Is Gus a Liar?: true
-    Do I rely on Gus for Sustenance?: false
-php: |
-    array(
-      'Is Gus a Liar?' => true,
-      'Do I rely on Gus for Sustenance?' => false
-    )
----
-test: Integers
-dump_skip: true
-brief: >
-    An integer is a series of numbers, optionally
-    starting with a positive or negative sign.  Integers
-    may also contain commas for readability.
-yaml: |
-    zero: 0
-    simple: 12
-    one-thousand: 1,000
-    negative one-thousand: -1,000
-php: |
-    array(
-      'zero' => 0,
-      'simple' => 12,
-      'one-thousand' => 1000,
-      'negative one-thousand' => -1000
-    )
----
-test: Integers as Map Keys
-brief: >
-    An integer can be used a dictionary key.
-yaml: |
-    1: one
-    2: two
-    3: three
-php: |
-    array(
-        1 => 'one',
-        2 => 'two',
-        3 => 'three'
-    )
----
-test: Floats
-dump_skip: true
-brief: >
-     Floats are represented by numbers with decimals,
-     allowing for scientific notation, as well as
-     positive and negative infinity and "not a number."
-yaml: |
-     a simple float: 2.00
-     larger float: 1,000.09
-     scientific notation: 1.00009e+3
-php: |
-     array(
-       'a simple float' => 2.0,
-       'larger float' => 1000.09,
-       'scientific notation' => 1000.09
-     )
----
-test: Time
-todo: true
-brief: >
-    You can represent timestamps by using
-    ISO8601 format, or a variation which
-    allows spaces between the date, time and
-    time zone.
-yaml: |
-    iso8601: 2001-12-14t21:59:43.10-05:00
-    space seperated: 2001-12-14 21:59:43.10 -05:00
-php: |
-    array(
-      'iso8601' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
-      'space seperated' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" )
-    )
----
-test: Date
-todo: true
-brief: >
-    A date can be represented by its year,
-    month and day in ISO8601 order.
-yaml: |
-    1976-07-31
-php: |
-    date( 1976, 7, 31 )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/embededPhp.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/embededPhp.yml
deleted file mode 100644
index ec456ed..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/embededPhp.yml
+++ /dev/null
@@ -1 +0,0 @@
-value: <?php echo 1 + 2 + 3 ?>
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/escapedCharacters.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/escapedCharacters.yml
deleted file mode 100644
index 09bf86e..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/escapedCharacters.yml
+++ /dev/null
@@ -1,147 +0,0 @@
-test: outside double quotes
-yaml: |
-    \0 \ \a \b \n
-php: |
-    "\\0 \\ \\a \\b \\n"
----
-test: null
-yaml: |
-    "\0"
-php: |
-    "\x00"
----
-test: bell
-yaml: |
-    "\a"
-php: |
-    "\x07"
----
-test: backspace
-yaml: |
-    "\b"
-php: |
-    "\x08"
----
-test: horizontal tab (1)
-yaml: |
-    "\t"
-php: |
-    "\x09"
----
-test: horizontal tab (2)
-yaml: |
-    "\	"
-php: |
-    "\x09"
----
-test: line feed
-yaml: |
-    "\n"
-php: |
-    "\x0a"
----
-test: vertical tab
-yaml: |
-    "\v"
-php: |
-    "\x0b"
----
-test: form feed
-yaml: |
-    "\f"
-php: |
-    "\x0c"
----
-test: carriage return
-yaml: |
-    "\r"
-php: |
-    "\x0d"
----
-test: escape
-yaml: |
-    "\e"
-php: |
-   "\x1b"
----
-test: space
-yaml: |
-    "\ "
-php: |
-    "\x20"
----
-test: slash
-yaml: |
-    "\/"
-php: |
-    "\x2f"
----
-test: backslash
-yaml: |
-    "\\"
-php: |
-    "\\"
----
-test: Unicode next line
-yaml: |
-    "\N"
-php: |
-    "\xc2\x85"
----
-test: Unicode non-breaking space
-yaml: |
-    "\_"
-php: |
-    "\xc2\xa0"
----
-test: Unicode line separator
-yaml: |
-    "\L"
-php: |
-    "\xe2\x80\xa8"
----
-test: Unicode paragraph separator
-yaml: |
-    "\P"
-php: |
-    "\xe2\x80\xa9"
----
-test: Escaped 8-bit Unicode
-yaml: |
-    "\x42"
-php: |
-    "B"
----
-test: Escaped 16-bit Unicode
-yaml: |
-    "\u20ac"
-php: |
-    "\xe2\x82\xac"
----
-test: Escaped 32-bit Unicode
-yaml: |
-    "\U00000043"
-php: |
-    "C"
----
-test: Example 5.13 Escaped Characters
-note: |
-    Currently throws an error parsing first line. Maybe Symfony Yaml doesn't support
-    continuation of string across multiple lines? Keeping test here but disabled.
-todo: true
-yaml: |
-    "Fun with \\
-    \" \a \b \e \f \
-    \n \r \t \v \0 \
-    \  \_ \N \L \P \
-    \x41 \u0041 \U00000041"
-php: |
-    "Fun with \x5C\n\x22 \x07 \x08 \x1B \x0C\n\x0A \x0D \x09 \x0B \x00\n\x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9\nA A A"
----
-test: Double quotes with a line feed
-yaml: |
-   { double: "some value\n \"some quoted string\" and 'some single quotes one'" }
-php: |
-    array(
-        'double' => "some value\n \"some quoted string\" and 'some single quotes one'"
-    )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/index.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/index.yml
deleted file mode 100644
index 3216a89..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/index.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-- escapedCharacters
-- sfComments
-- sfCompact
-- sfTests
-- sfObjects
-- sfMergeKey
-- sfQuotes
-- YtsAnchorAlias
-- YtsBasicTests
-- YtsBlockMapping
-- YtsDocumentSeparator
-- YtsErrorTests
-- YtsFlowCollections
-- YtsFoldedScalars
-- YtsNullsAndEmpties
-- YtsSpecificationExamples
-- YtsTypeTransfers
-- unindentedCollections
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfComments.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfComments.yml
deleted file mode 100644
index 34225e1..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfComments.yml
+++ /dev/null
@@ -1,51 +0,0 @@
---- %YAML:1.0
-test: Comments at the end of a line
-brief: >
-    Comments at the end of a line
-yaml: |
-    ex1: "foo # bar"
-    ex2: "foo # bar" # comment
-    ex3: 'foo # bar' # comment
-    ex4: foo # comment
-php: |
-    array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo')
----
-test: Comments in the middle
-brief: >
-  Comments in the middle
-yaml: |
-    foo:
-    # some comment
-    # some comment
-      bar: foo
-    # some comment
-    # some comment
-php: |
-    array('foo' => array('bar' => 'foo'))
----
-test: Comments on a hash line
-brief: >
-  Comments on a hash line
-yaml: |
-    foo:   # a comment
-      foo: bar # a comment
-php: |
-    array('foo' => array('foo' => 'bar'))
----
-test: 'Value starting with a #'
-brief: >
-  'Value starting with a #'
-yaml: |
-    foo:   '#bar'
-php: |
-    array('foo' => '#bar')
----
-test: Document starting with a comment and a separator
-brief: >
-  Commenting before document start is allowed
-yaml: |
-    # document comment
-    ---
-    foo: bar # a comment
-php: |
-    array('foo' => 'bar')
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfCompact.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfCompact.yml
deleted file mode 100644
index 1339d23..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfCompact.yml
+++ /dev/null
@@ -1,159 +0,0 @@
---- %YAML:1.0
-test: Compact notation
-brief: |
-    Compact notation for sets of mappings with single element
-yaml: |
-  ---
-  # products purchased
-  - item    : Super Hoop
-  - item    : Basketball
-    quantity: 1
-  - item:
-      name: Big Shoes
-      nick: Biggies
-    quantity: 1
-php: |
-  array (
-    array (
-      'item' => 'Super Hoop',
-    ),
-    array (
-      'item' => 'Basketball',
-      'quantity' => 1,
-    ),
-    array (
-      'item' => array(
-        'name' => 'Big Shoes',
-        'nick' => 'Biggies'
-      ),
-      'quantity' => 1
-    )
-  )
----
-test: Compact notation combined with inline notation
-brief: |
-    Combinations of compact and inline notation are allowed
-yaml: |
-  ---
-  items:
-    - { item: Super Hoop, quantity: 1 }
-    - [ Basketball, Big Shoes ]
-php: |
-  array (
-    'items' => array (
-      array (
-        'item' => 'Super Hoop',
-        'quantity' => 1,
-      ),
-      array (
-        'Basketball',
-        'Big Shoes'
-      )
-    )
-  )
---- %YAML:1.0
-test: Compact notation
-brief: |
-    Compact notation for sets of mappings with single element
-yaml: |
-  ---
-  # products purchased
-  - item    : Super Hoop
-  - item    : Basketball
-    quantity: 1
-  - item:
-      name: Big Shoes
-      nick: Biggies
-    quantity: 1
-php: |
-  array (
-    array (
-      'item' => 'Super Hoop',
-    ),
-    array (
-      'item' => 'Basketball',
-      'quantity' => 1,
-    ),
-    array (
-      'item' => array(
-        'name' => 'Big Shoes',
-        'nick' => 'Biggies'
-      ),
-      'quantity' => 1
-    )
-  )
----
-test: Compact notation combined with inline notation
-brief: |
-    Combinations of compact and inline notation are allowed
-yaml: |
-  ---
-  items:
-    - { item: Super Hoop, quantity: 1 }
-    - [ Basketball, Big Shoes ]
-php: |
-  array (
-    'items' => array (
-      array (
-        'item' => 'Super Hoop',
-        'quantity' => 1,
-      ),
-      array (
-        'Basketball',
-        'Big Shoes'
-      )
-    )
-  )
---- %YAML:1.0
-test: Compact notation
-brief: |
-    Compact notation for sets of mappings with single element
-yaml: |
-  ---
-  # products purchased
-  - item    : Super Hoop
-  - item    : Basketball
-    quantity: 1
-  - item:
-      name: Big Shoes
-      nick: Biggies
-    quantity: 1
-php: |
-  array (
-    array (
-      'item' => 'Super Hoop',
-    ),
-    array (
-      'item' => 'Basketball',
-      'quantity' => 1,
-    ),
-    array (
-      'item' => array(
-        'name' => 'Big Shoes',
-        'nick' => 'Biggies'
-      ),
-      'quantity' => 1
-    )
-  )
----
-test: Compact notation combined with inline notation
-brief: |
-    Combinations of compact and inline notation are allowed
-yaml: |
-  ---
-  items:
-    - { item: Super Hoop, quantity: 1 }
-    - [ Basketball, Big Shoes ]
-php: |
-  array (
-    'items' => array (
-      array (
-        'item' => 'Super Hoop',
-        'quantity' => 1,
-      ),
-      array (
-        'Basketball',
-        'Big Shoes'
-      )
-    )
-  )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfMergeKey.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfMergeKey.yml
deleted file mode 100644
index 3eec4f8..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfMergeKey.yml
+++ /dev/null
@@ -1,27 +0,0 @@
---- %YAML:1.0
-test: Simple In Place Substitution
-brief: >
-    If you want to reuse an entire alias, only overwriting what is different
-    you can use a << in place substitution. This is not part of the official
-    YAML spec, but a widely implemented extension. See the following URL for
-    details: http://yaml.org/type/merge.html
-yaml: |
-    foo: &foo
-        a: Steve
-        b: Clark
-        c: Brian
-    bar: &bar
-        <<: *foo
-        x: Oren
-    foo2: &foo2
-        a: Ballmer
-    ding: &dong [ fi, fei, fo, fam]
-    check:
-        <<:
-            - *foo
-            - *dong
-        isit: tested
-    head:
-        <<: [ *foo , *dong , *foo2 ]
-php: |
-    array('foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian'), 'bar' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'x' => 'Oren'), 'foo2' => array('a' => 'Ballmer'), 'ding' => array('fi', 'fei', 'fo', 'fam'), 'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'), 'head' => array('a' => 'Ballmer', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam'))
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfObjects.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfObjects.yml
deleted file mode 100644
index ee124b2..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfObjects.yml
+++ /dev/null
@@ -1,11 +0,0 @@
---- %YAML:1.0
-test: Objects
-brief: >
-    Comments at the end of a line
-yaml: |
-    ex1: "foo # bar"
-    ex2: "foo # bar" # comment
-    ex3: 'foo # bar' # comment
-    ex4: foo # comment
-php: |
-    array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo')
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfQuotes.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfQuotes.yml
deleted file mode 100644
index 741f1be..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfQuotes.yml
+++ /dev/null
@@ -1,33 +0,0 @@
---- %YAML:1.0
-test: Some characters at the beginning of a string must be escaped
-brief: >
-    Some characters at the beginning of a string must be escaped
-yaml: |
-    foo: | bar
-php: |
-    array('foo' => '| bar')
----
-test: A key can be a quoted string
-brief: >
-  A key can be a quoted string
-yaml: |
-    "foo1": bar
-    'foo2': bar
-    "foo \" bar": bar
-    'foo '' bar': bar
-    'foo3: ': bar
-    "foo4: ": bar
-    foo5: { "foo \" bar: ": bar, 'foo '' bar: ': bar }
-php: |
-    array(
-      'foo1' => 'bar',
-      'foo2' => 'bar',
-      'foo " bar' => 'bar',
-      'foo \' bar' => 'bar',
-      'foo3: ' => 'bar',
-      'foo4: ' => 'bar',
-      'foo5' => array(
-        'foo " bar: ' => 'bar',
-        'foo \' bar: ' => 'bar',
-      ),
-    )
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfTests.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfTests.yml
deleted file mode 100644
index 7a54f16..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfTests.yml
+++ /dev/null
@@ -1,135 +0,0 @@
---- %YAML:1.0
-test: Multiple quoted string on one line
-brief: >
-    Multiple quoted string on one line
-yaml: |
-    stripped_title: { name: "foo bar", help: "bar foo" }
-php: |
-    array('stripped_title' => array('name' => 'foo bar', 'help' => 'bar foo'))
----
-test: Empty sequence
-yaml: |
-    foo: [ ]
-php: |
-    array('foo' => array())
----
-test: Empty value
-yaml: |
-    foo:
-php: |
-    array('foo' => null)
----
-test: Inline string parsing
-brief: >
-    Inline string parsing
-yaml: |
-    test: ['complex: string', 'another [string]']
-php: |
-    array('test' => array('complex: string', 'another [string]'))
----
-test: Boolean
-brief: >
-    Boolean
-yaml: |
-    - false
-    - true
-    - null
-    - ~
-    - 'false'
-    - 'true'
-    - 'null'
-    - '~'
-php: |
-    array(
-      false,
-      true,
-      null,
-      null,
-      'false',
-      'true',
-      'null',
-      '~',
-    )
----
-test: Empty lines in folded blocks
-brief: >
-  Empty lines in folded blocks
-yaml: |
-  foo:
-    bar: |
-      foo
-
-
-        
-      bar
-php: |
-  array('foo' => array('bar' => "foo\n\n\n  \nbar\n"))
----
-test: IP addresses
-brief: >
-  IP addresses
-yaml: |
-  foo: 10.0.0.2
-php: |
-  array('foo' => '10.0.0.2')
----
-test: A sequence with an embedded mapping
-brief: >
-  A sequence with an embedded mapping
-yaml: |
-  - foo
-  - bar: { bar: foo }
-php: |
-  array('foo', array('bar' => array('bar' => 'foo')))
----
-test: A sequence with an unordered array
-brief: >
-  A sequence with an unordered array
-yaml: |
-  1: foo
-  0: bar
-php: |
-  array(1 => 'foo', 0 => 'bar')
----
-test: Octal
-brief: as in spec example 2.19, octal value is converted
-yaml: |
-  foo: 0123
-php: |
-  array('foo' => 83)
----
-test: Octal strings
-brief: Octal notation in a string must remain a string
-yaml: |
-  foo: "0123"
-php: |
-  array('foo' => '0123')
----
-test: Octal strings
-brief: Octal notation in a string must remain a string
-yaml: |
-  foo: '0123'
-php: |
-  array('foo' => '0123')
----
-test: Octal strings
-brief: Octal notation in a string must remain a string
-yaml: |
-  foo: |
-    0123
-php: |
-  array('foo' => "0123\n")
----
-test: Document as a simple hash
-brief: Document as a simple hash
-yaml: |
-  { foo: bar }
-php: |
-  array('foo' => 'bar')
----
-test: Document as a simple array
-brief: Document as a simple array
-yaml: |
-  [ foo, bar ]
-php: |
-  array('foo', 'bar')
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/unindentedCollections.yml b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/unindentedCollections.yml
deleted file mode 100644
index fd8ad7e..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/unindentedCollections.yml
+++ /dev/null
@@ -1,62 +0,0 @@
---- %YAML:1.0
-test: Unindented collection
-brief: >
-    Unindented collection
-yaml: |
-    collection:
-    - item1
-    - item2
-    - item3
-php: |
-    array('collection' => array('item1', 'item2', 'item3'))
----
-test: Nested unindented collection (two levels)
-brief: >
-    Nested unindented collection
-yaml: |
-    collection:
-        key:
-        - a
-        - b
-        - c
-php: |
-    array('collection' => array('key' => array('a', 'b', 'c')))
----
-test: Nested unindented collection (three levels)
-brief: >
-    Nested unindented collection
-yaml: |
-    collection:
-        key:
-            subkey:
-            - one
-            - two
-            - three
-php: |
-    array('collection' => array('key' => array('subkey' => array('one', 'two', 'three'))))
----
-test: Key/value after unindented collection (1)
-brief: >
-    Key/value after unindented collection (1)
-yaml: |
-    collection:
-        key:
-        - a
-        - b
-        - c
-    foo: bar
-php: |
-    array('collection' => array('key' => array('a', 'b', 'c')), 'foo' => 'bar')
----
-test: Key/value after unindented collection (at the same level)
-brief: >
-    Key/value after unindented collection
-yaml: |
-    collection:
-        key:
-        - a
-        - b
-        - c
-        foo: bar
-php: |
-    array('collection' => array('key' => array('a', 'b', 'c'), 'foo' => 'bar'))
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/InlineTest.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/InlineTest.php
deleted file mode 100644
index 9350b2e..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/InlineTest.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Tests;
-
-use Symfony\Component\Yaml\Yaml;
-use Symfony\Component\Yaml\Inline;
-
-class InlineTest extends \PHPUnit_Framework_TestCase
-{
-    public function testParse()
-    {
-        foreach ($this->getTestsForParse() as $yaml => $value) {
-            $this->assertSame($value, Inline::parse($yaml), sprintf('::parse() converts an inline YAML to a PHP structure (%s)', $yaml));
-        }
-    }
-
-    public function testDump()
-    {
-        $testsForDump = $this->getTestsForDump();
-
-        foreach ($testsForDump as $yaml => $value) {
-            $this->assertEquals($yaml, Inline::dump($value), sprintf('::dump() converts a PHP structure to an inline YAML (%s)', $yaml));
-        }
-
-        foreach ($this->getTestsForParse() as $yaml => $value) {
-            $this->assertEquals($value, Inline::parse(Inline::dump($value)), 'check consistency');
-        }
-
-        foreach ($testsForDump as $yaml => $value) {
-            $this->assertEquals($value, Inline::parse(Inline::dump($value)), 'check consistency');
-        }
-    }
-
-    public function testDumpNumericValueWithLocale()
-    {
-        $locale = setlocale(LC_NUMERIC, 0);
-        if (false === $locale) {
-            $this->markTestSkipped('Your platform does not support locales.');
-        }
-
-        $required_locales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252');
-        if (false === setlocale(LC_ALL, $required_locales)) {
-            $this->markTestSkipped('Could not set any of required locales: ' . implode(", ", $required_locales));
-        }
-
-        $this->assertEquals('1.2', Inline::dump(1.2));
-        $this->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0)));
-
-        setlocale(LC_ALL, $locale);
-    }
-
-    public function testHashStringsResemblingExponentialNumericsShouldNotBeChangedToINF()
-    {
-        $value = '686e444';
-
-        $this->assertSame($value, Inline::parse(Inline::dump($value)));
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testParseScalarWithIncorrectlyQuotedStringShouldThrowException()
-    {
-        $value = "'don't do somthin' like that'";
-        Inline::parse($value);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testParseScalarWithIncorrectlyDoubleQuotedStringShouldThrowException()
-    {
-        $value = '"don"t do somthin" like that"';
-        Inline::parse($value);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testParseInvalidMappingKeyShouldThrowException()
-    {
-        $value = '{ "foo " bar": "bar" }';
-        Inline::parse($value);
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testParseInvalidMappingShouldThrowException()
-    {
-        Inline::parse('[foo] bar');
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testParseInvalidSequenceShouldThrowException()
-    {
-        Inline::parse('{ foo: bar } bar');
-    }
-
-    public function testParseScalarWithCorrectlyQuotedStringShouldReturnString()
-    {
-        $value = "'don''t do somthin'' like that'";
-        $expect = "don't do somthin' like that";
-
-        $this->assertSame($expect, Inline::parseScalar($value));
-    }
-
-    protected function getTestsForParse()
-    {
-        return array(
-            '' => '',
-            'null' => null,
-            'false' => false,
-            'true' => true,
-            '12' => 12,
-            '-12' => -12,
-            '"quoted string"' => 'quoted string',
-            "'quoted string'" => 'quoted string',
-            '12.30e+02' => 12.30e+02,
-            '0x4D2' => 0x4D2,
-            '02333' => 02333,
-            '.Inf' => -log(0),
-            '-.Inf' => log(0),
-            "'686e444'" => '686e444',
-            '686e444' => 646e444,
-            '123456789123456789123456789123456789' => '123456789123456789123456789123456789',
-            '"foo\r\nbar"' => "foo\r\nbar",
-            "'foo#bar'" => 'foo#bar',
-            "'foo # bar'" => 'foo # bar',
-            "'#cfcfcf'" => '#cfcfcf',
-            '::form_base.html.twig' => '::form_base.html.twig',
-
-            '2007-10-30' => mktime(0, 0, 0, 10, 30, 2007),
-            '2007-10-30T02:59:43Z' => gmmktime(2, 59, 43, 10, 30, 2007),
-            '2007-10-30 02:59:43 Z' => gmmktime(2, 59, 43, 10, 30, 2007),
-
-            '"a \\"string\\" with \'quoted strings inside\'"' => 'a "string" with \'quoted strings inside\'',
-            "'a \"string\" with ''quoted strings inside'''" => 'a "string" with \'quoted strings inside\'',
-
-            // sequences
-            // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon
-            '[foo, http://urls.are/no/mappings, false, null, 12]' => array('foo', 'http://urls.are/no/mappings', false, null, 12),
-            '[  foo  ,   bar , false  ,  null     ,  12  ]' => array('foo', 'bar', false, null, 12),
-            '[\'foo,bar\', \'foo bar\']' => array('foo,bar', 'foo bar'),
-
-            // mappings
-            '{foo:bar,bar:foo,false:false,null:null,integer:12}' => array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12),
-            '{ foo  : bar, bar : foo,  false  :   false,  null  :   null,  integer :  12  }' => array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12),
-            '{foo: \'bar\', bar: \'foo: bar\'}' => array('foo' => 'bar', 'bar' => 'foo: bar'),
-            '{\'foo\': \'bar\', "bar": \'foo: bar\'}' => array('foo' => 'bar', 'bar' => 'foo: bar'),
-            '{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}' => array('foo\'' => 'bar', "bar\"" => 'foo: bar'),
-            '{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}' => array('foo: ' => 'bar', "bar: " => 'foo: bar'),
-
-            // nested sequences and mappings
-            '[foo, [bar, foo]]' => array('foo', array('bar', 'foo')),
-            '[foo, {bar: foo}]' => array('foo', array('bar' => 'foo')),
-            '{ foo: {bar: foo} }' => array('foo' => array('bar' => 'foo')),
-            '{ foo: [bar, foo] }' => array('foo' => array('bar', 'foo')),
-
-            '[  foo, [  bar, foo  ]  ]' => array('foo', array('bar', 'foo')),
-
-            '[{ foo: {bar: foo} }]' => array(array('foo' => array('bar' => 'foo'))),
-
-            '[foo, [bar, [foo, [bar, foo]], foo]]' => array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo')),
-
-            '[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]' => array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo'))),
-
-            '[foo, bar: { foo: bar }]' => array('foo', '1' => array('bar' => array('foo' => 'bar'))),
-            '[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']' => array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%',), true, '@service_container',),
-        );
-    }
-
-    protected function getTestsForDump()
-    {
-        return array(
-            'null' => null,
-            'false' => false,
-            'true' => true,
-            '12' => 12,
-            "'quoted string'" => 'quoted string',
-            '12.30e+02' => 12.30e+02,
-            '1234' => 0x4D2,
-            '1243' => 02333,
-            '.Inf' => -log(0),
-            '-.Inf' => log(0),
-            "'686e444'" => '686e444',
-            '.Inf' => 646e444,
-            '"foo\r\nbar"' => "foo\r\nbar",
-            "'foo#bar'" => 'foo#bar',
-            "'foo # bar'" => 'foo # bar',
-            "'#cfcfcf'" => '#cfcfcf',
-
-            "'a \"string\" with ''quoted strings inside'''" => 'a "string" with \'quoted strings inside\'',
-
-            // sequences
-            '[foo, bar, false, null, 12]' => array('foo', 'bar', false, null, 12),
-            '[\'foo,bar\', \'foo bar\']' => array('foo,bar', 'foo bar'),
-
-            // mappings
-            '{ foo: bar, bar: foo, \'false\': false, \'null\': null, integer: 12 }' => array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12),
-            '{ foo: bar, bar: \'foo: bar\' }' => array('foo' => 'bar', 'bar' => 'foo: bar'),
-
-            // nested sequences and mappings
-            '[foo, [bar, foo]]' => array('foo', array('bar', 'foo')),
-
-            '[foo, [bar, [foo, [bar, foo]], foo]]' => array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo')),
-
-            '{ foo: { bar: foo } }' => array('foo' => array('bar' => 'foo')),
-
-            '[foo, { bar: foo }]' => array('foo', array('bar' => 'foo')),
-
-            '[foo, { bar: foo, foo: [foo, { bar: foo }] }, [foo, { bar: foo }]]' => array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo'))),
-
-            '[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']' => array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%',), true, '@service_container',),
-        );
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/ParserTest.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/ParserTest.php
deleted file mode 100644
index 5e0e763..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/ParserTest.php
+++ /dev/null
@@ -1,530 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Tests;
-
-use Symfony\Component\Yaml\Yaml;
-use Symfony\Component\Yaml\Parser;
-
-class ParserTest extends \PHPUnit_Framework_TestCase
-{
-    protected $parser;
-
-    protected function setUp()
-    {
-        $this->parser = new Parser();
-    }
-
-    protected function tearDown()
-    {
-        $this->parser = null;
-    }
-
-    /**
-     * @dataProvider getDataFormSpecifications
-     */
-    public function testSpecifications($file, $expected, $yaml, $comment)
-    {
-        if ('escapedCharacters' == $file) {
-            if (!function_exists('iconv') && !function_exists('mb_convert_encoding')) {
-                $this->markTestSkipped('The iconv and mbstring extensions are not available.');
-            }
-        }
-
-        $this->assertEquals($expected, var_export($this->parser->parse($yaml), true), $comment);
-    }
-
-    public function getDataFormSpecifications()
-    {
-        $parser = new Parser();
-        $path = __DIR__.'/Fixtures';
-
-        $tests = array();
-        $files = $parser->parse(file_get_contents($path.'/index.yml'));
-        foreach ($files as $file) {
-            $yamls = file_get_contents($path.'/'.$file.'.yml');
-
-            // split YAMLs documents
-            foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) {
-                if (!$yaml) {
-                    continue;
-                }
-
-                $test = $parser->parse($yaml);
-                if (isset($test['todo']) && $test['todo']) {
-                    // TODO
-                } else {
-                    $expected = var_export(eval('return '.trim($test['php']).';'), true);
-
-                    $tests[] = array($file, $expected, $test['yaml'], $test['test']);
-                }
-            }
-        }
-
-        return $tests;
-    }
-
-    public function testTabsInYaml()
-    {
-        // test tabs in YAML
-        $yamls = array(
-            "foo:\n	bar",
-            "foo:\n 	bar",
-            "foo:\n	 bar",
-            "foo:\n 	 bar",
-        );
-
-        foreach ($yamls as $yaml) {
-            try {
-                $content = $this->parser->parse($yaml);
-
-                $this->fail('YAML files must not contain tabs');
-            } catch (\Exception $e) {
-                $this->assertInstanceOf('\Exception', $e, 'YAML files must not contain tabs');
-                $this->assertEquals('A YAML file cannot contain tabs as indentation at line 2 (near "'.strpbrk($yaml, "\t").'").', $e->getMessage(), 'YAML files must not contain tabs');
-            }
-        }
-    }
-
-    public function testEndOfTheDocumentMarker()
-    {
-        $yaml = <<<EOF
---- %YAML:1.0
-foo
-...
-EOF;
-
-        $this->assertEquals('foo', $this->parser->parse($yaml));
-    }
-
-    public function getBlockChompingTests()
-    {
-        $tests = array();
-
-        $yaml = <<<'EOF'
-foo: |-
-    one
-    two
-bar: |-
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo",
-            'bar' => "one\ntwo",
-        );
-        $tests['Literal block chomping strip with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |-
-    one
-    two
-
-bar: |-
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo",
-            'bar' => "one\ntwo",
-        );
-        $tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |-
-    one
-    two
-bar: |-
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo",
-            'bar' => "one\ntwo",
-        );
-        $tests['Literal block chomping strip without trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |
-    one
-    two
-bar: |
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n",
-            'bar' => "one\ntwo\n",
-        );
-        $tests['Literal block chomping clip with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |
-    one
-    two
-
-bar: |
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n",
-            'bar' => "one\ntwo\n",
-        );
-        $tests['Literal block chomping clip with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |
-    one
-    two
-bar: |
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n",
-            'bar' => "one\ntwo",
-        );
-        $tests['Literal block chomping clip without trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |+
-    one
-    two
-bar: |+
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n",
-            'bar' => "one\ntwo\n",
-        );
-        $tests['Literal block chomping keep with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |+
-    one
-    two
-
-bar: |+
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n\n",
-            'bar' => "one\ntwo\n\n",
-        );
-        $tests['Literal block chomping keep with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: |+
-    one
-    two
-bar: |+
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one\ntwo\n",
-            'bar' => "one\ntwo",
-        );
-        $tests['Literal block chomping keep without trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >-
-    one
-    two
-bar: >-
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one two",
-            'bar' => "one two",
-        );
-        $tests['Folded block chomping strip with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >-
-    one
-    two
-
-bar: >-
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one two",
-            'bar' => "one two",
-        );
-        $tests['Folded block chomping strip with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >-
-    one
-    two
-bar: >-
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one two",
-            'bar' => "one two",
-        );
-        $tests['Folded block chomping strip without trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >
-    one
-    two
-bar: >
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one two\n",
-            'bar' => "one two\n",
-        );
-        $tests['Folded block chomping clip with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >
-    one
-    two
-
-bar: >
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one two\n",
-            'bar' => "one two\n",
-        );
-        $tests['Folded block chomping clip with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >
-    one
-    two
-bar: >
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one two\n",
-            'bar' => "one two",
-        );
-        $tests['Folded block chomping clip without trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >+
-    one
-    two
-bar: >+
-    one
-    two
-
-EOF;
-        $expected = array(
-            'foo' => "one two\n",
-            'bar' => "one two\n",
-        );
-        $tests['Folded block chomping keep with single trailing newline'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >+
-    one
-    two
-
-bar: >+
-    one
-    two
-
-
-EOF;
-        $expected = array(
-            'foo' => "one two\n\n",
-            'bar' => "one two\n\n",
-        );
-        $tests['Folded block chomping keep with multiple trailing newlines'] = array($expected, $yaml);
-
-        $yaml = <<<'EOF'
-foo: >+
-    one
-    two
-bar: >+
-    one
-    two
-EOF;
-        $expected = array(
-            'foo' => "one two\n",
-            'bar' => "one two",
-        );
-        $tests['Folded block chomping keep without trailing newline'] = array($expected, $yaml);
-
-        return $tests;
-    }
-
-    /**
-     * @dataProvider getBlockChompingTests
-     */
-    public function testBlockChomping($expected, $yaml)
-    {
-        $this->assertSame($expected, $this->parser->parse($yaml));
-    }
-
-    /**
-     * Regression test for issue #7989.
-     *
-     * @see https://github.com/symfony/symfony/issues/7989
-     */
-    public function testBlockLiteralWithLeadingNewlines()
-    {
-        $yaml = <<<'EOF'
-foo: |-
-
-
-    bar
-
-EOF;
-        $expected = array(
-            'foo' => "\n\nbar"
-        );
-
-        $this->assertSame($expected, $this->parser->parse($yaml));
-    }
-
-    public function testObjectSupportEnabled()
-    {
-        $input = <<<EOF
-foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
-bar: 1
-EOF;
-        $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
-    }
-
-    public function testObjectSupportDisabledButNoExceptions()
-    {
-        $input = <<<EOF
-foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
-bar: 1
-EOF;
-
-        $this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects');
-    }
-
-    /**
-     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testObjectsSupportDisabledWithExceptions()
-    {
-        $this->parser->parse('foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}', true, false);
-    }
-
-    public function testNonUtf8Exception()
-    {
-        if (!function_exists('mb_detect_encoding') || !function_exists('iconv')) {
-            $this->markTestSkipped('Exceptions for non-utf8 charsets require the mb_detect_encoding() and iconv() functions.');
-
-            return;
-        }
-
-        $yamls = array(
-            iconv("UTF-8", "ISO-8859-1", "foo: 'äöüß'"),
-            iconv("UTF-8", "ISO-8859-15", "euro: '€'"),
-            iconv("UTF-8", "CP1252", "cp1252: '©ÉÇáñ'")
-        );
-
-        foreach ($yamls as $yaml) {
-            try {
-                $this->parser->parse($yaml);
-
-                $this->fail('charsets other than UTF-8 are rejected.');
-            } catch (\Exception $e) {
-                 $this->assertInstanceOf('Symfony\Component\Yaml\Exception\ParseException', $e, 'charsets other than UTF-8 are rejected.');
-            }
-        }
-    }
-
-    /**
-     *
-     * @expectedException Symfony\Component\Yaml\Exception\ParseException
-     *
-     */
-    public function testUnindentedCollectionException()
-    {
-        $yaml = <<<EOF
-
-collection:
--item1
--item2
--item3
-
-EOF;
-
-        $this->parser->parse($yaml);
-    }
-
-    /**
-     * @expectedException Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testSequenceInAMapping()
-    {
-        Yaml::parse(<<<EOF
-yaml:
-  hash: me
-  - array stuff
-EOF
-        );
-    }
-
-    /**
-     * @expectedException Symfony\Component\Yaml\Exception\ParseException
-     */
-    public function testMappingInASequence()
-    {
-        Yaml::parse(<<<EOF
-yaml:
-  - array stuff
-  hash: me
-EOF
-        );
-    }
-
-    public function testEmptyValue()
-    {
-        $input = <<<EOF
-hash:
-EOF;
-
-        $this->assertEquals(array('hash' => null), Yaml::parse($input));
-    }
-}
-
-class B
-{
-    public $b = 'foo';
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/YamlTest.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/YamlTest.php
deleted file mode 100644
index b1a9ba0..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/YamlTest.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml\Tests;
-
-use Symfony\Component\Yaml\Yaml;
-
-class YamlTest extends \PHPUnit_Framework_TestCase
-{
-
-    public function testParseAndDump()
-    {
-        $data = array('lorem' => 'ipsum', 'dolor' => 'sit');
-        $yml = Yaml::dump($data);
-        $parsed = Yaml::parse($yml);
-        $this->assertEquals($data, $parsed);
-
-        $filename = __DIR__.'/Fixtures/index.yml';
-        $contents = file_get_contents($filename);
-        $parsedByFilename = Yaml::parse($filename);
-        $parsedByContents = Yaml::parse($contents);
-        $this->assertEquals($parsedByFilename, $parsedByContents);
-    }
-
-    public function testEmbededPhp()
-    {
-        $filename = __DIR__.'/Fixtures/embededPhp.yml';
-        Yaml::enablePhpParsing();
-        $parsed = Yaml::parse($filename);
-        $this->assertEquals(array('value' => 6), $parsed);
-    }
-
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/bootstrap.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/bootstrap.php
deleted file mode 100644
index 985f1f2..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/bootstrap.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-spl_autoload_register(function ($class) {
-    if (0 === strpos(ltrim($class, '/'), 'Symfony\Component\Yaml')) {
-        if (file_exists($file = __DIR__.'/../'.substr(str_replace('\\', '/', $class), strlen('Symfony\Component\Yaml')).'.php')) {
-            require_once $file;
-        }
-    }
-});
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Unescaper.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Unescaper.php
deleted file mode 100644
index ac3a576..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Unescaper.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-/**
- * Unescaper encapsulates unescaping rules for single and double-quoted
- * YAML strings.
- *
- * @author Matthew Lewinski <matthew@lewinski.org>
- */
-class Unescaper
-{
-    // Parser and Inline assume UTF-8 encoding, so escaped Unicode characters
-    // must be converted to that encoding.
-    const ENCODING = 'UTF-8';
-
-    // Regex fragment that matches an escaped character in a double quoted
-    // string.
-    const REGEX_ESCAPED_CHARACTER = "\\\\([0abt\tnvfre \\\"\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})";
-
-    /**
-     * Unescapes a single quoted string.
-     *
-     * @param string $value A single quoted string.
-     *
-     * @return string The unescaped string.
-     */
-    public function unescapeSingleQuotedString($value)
-    {
-        return str_replace('\'\'', '\'', $value);
-    }
-
-    /**
-     * Unescapes a double quoted string.
-     *
-     * @param string $value A double quoted string.
-     *
-     * @return string The unescaped string.
-     */
-    public function unescapeDoubleQuotedString($value)
-    {
-        $self = $this;
-        $callback = function($match) use ($self) {
-            return $self->unescapeCharacter($match[0]);
-        };
-
-        // evaluate the string
-        return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value);
-    }
-
-    /**
-     * Unescapes a character that was found in a double-quoted string
-     *
-     * @param string $value An escaped character
-     *
-     * @return string The unescaped character
-     */
-    public function unescapeCharacter($value)
-    {
-        switch ($value{1}) {
-            case '0':
-                return "\x0";
-            case 'a':
-                return "\x7";
-            case 'b':
-                return "\x8";
-            case 't':
-                return "\t";
-            case "\t":
-                return "\t";
-            case 'n':
-                return "\n";
-            case 'v':
-                return "\xb";
-            case 'f':
-                return "\xc";
-            case 'r':
-                return "\xd";
-            case 'e':
-                return "\x1b";
-            case ' ':
-                return ' ';
-            case '"':
-                return '"';
-            case '/':
-                return '/';
-            case '\\':
-                return '\\';
-            case 'N':
-                // U+0085 NEXT LINE
-                return $this->convertEncoding("\x00\x85", self::ENCODING, 'UCS-2BE');
-            case '_':
-                // U+00A0 NO-BREAK SPACE
-                return $this->convertEncoding("\x00\xA0", self::ENCODING, 'UCS-2BE');
-            case 'L':
-                // U+2028 LINE SEPARATOR
-                return $this->convertEncoding("\x20\x28", self::ENCODING, 'UCS-2BE');
-            case 'P':
-                // U+2029 PARAGRAPH SEPARATOR
-                return $this->convertEncoding("\x20\x29", self::ENCODING, 'UCS-2BE');
-            case 'x':
-                $char = pack('n', hexdec(substr($value, 2, 2)));
-
-                return $this->convertEncoding($char, self::ENCODING, 'UCS-2BE');
-            case 'u':
-                $char = pack('n', hexdec(substr($value, 2, 4)));
-
-                return $this->convertEncoding($char, self::ENCODING, 'UCS-2BE');
-            case 'U':
-                $char = pack('N', hexdec(substr($value, 2, 8)));
-
-                return $this->convertEncoding($char, self::ENCODING, 'UCS-4BE');
-        }
-    }
-
-    /**
-     * Convert a string from one encoding to another.
-     *
-     * @param string $value The string to convert
-     * @param string $to    The input encoding
-     * @param string $from  The output encoding
-     *
-     * @return string The string with the new encoding
-     *
-     * @throws \RuntimeException if no suitable encoding function is found (iconv or mbstring)
-     */
-    private function convertEncoding($value, $to, $from)
-    {
-        if (function_exists('mb_convert_encoding')) {
-            return mb_convert_encoding($value, $to, $from);
-        } elseif (function_exists('iconv')) {
-            return iconv($from, $to, $value);
-        }
-
-        throw new \RuntimeException('No suitable convert encoding function (install the iconv or mbstring extension).');
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php
deleted file mode 100644
index e7366b1..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php
+++ /dev/null
@@ -1,155 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Yaml;
-
-use Symfony\Component\Yaml\Exception\ParseException;
-
-/**
- * Yaml offers convenience methods to load and dump YAML.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @api
- */
-class Yaml
-{
-    /**
-     * Be warned that PHP support will be removed in Symfony 2.3.
-     *
-     * @deprecated Deprecated since version 2.0, to be removed in 2.3.
-     */
-    public static $enablePhpParsing = false;
-
-    /**
-     * Enables PHP support when parsing YAML files.
-     *
-     * Be warned that PHP support will be removed in Symfony 2.3.
-     *
-     * @deprecated Deprecated since version 2.0, to be removed in 2.3.
-     */
-    public static function enablePhpParsing()
-    {
-        self::$enablePhpParsing = true;
-    }
-
-    /**
-     * Sets the PHP support flag when parsing YAML files.
-     *
-     * Be warned that PHP support will be removed in Symfony 2.3.
-     *
-     * @param Boolean $boolean true if PHP parsing support is enabled, false otherwise
-     *
-     * @deprecated Deprecated since version 2.0, to be removed in 2.3.
-     */
-    public static function setPhpParsing($boolean)
-    {
-        self::$enablePhpParsing = (Boolean) $boolean;
-    }
-
-    /**
-     * Checks if PHP support is enabled when parsing YAML files.
-     *
-     * Be warned that PHP support will be removed in Symfony 2.3.
-     *
-     * @return Boolean true if PHP parsing support is enabled, false otherwise
-     *
-     * @deprecated Deprecated since version 2.0, to be removed in 2.3.
-     */
-    public static function supportsPhpParsing()
-    {
-        return self::$enablePhpParsing;
-    }
-
-    /**
-     * Parses YAML into a PHP array.
-     *
-     * The parse method, when supplied with a YAML stream (string or file),
-     * will do its best to convert YAML in a file into a PHP array.
-     *
-     *  Usage:
-     *  <code>
-     *   $array = Yaml::parse('config.yml');
-     *   print_r($array);
-     *  </code>
-     *
-     * @param string $input Path to a YAML file or a string containing YAML
-     *
-     * @return array The YAML converted to a PHP array
-     *
-     * @throws ParseException If the YAML is not valid
-     *
-     * @api
-     */
-    public static function parse($input, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        // if input is a file, process it
-        $file = '';
-        if (strpos($input, "\n") === false && is_file($input)) {
-            if (false === is_readable($input)) {
-                throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input));
-            }
-
-            $file = $input;
-            if (self::$enablePhpParsing) {
-                ob_start();
-                $retval = include($file);
-                $content = ob_get_clean();
-
-                // if an array is returned by the config file assume it's in plain php form else in YAML
-                $input = is_array($retval) ? $retval : $content;
-
-                // if an array is returned by the config file assume it's in plain php form else in YAML
-                if (is_array($input)) {
-                    return $input;
-                }
-            } else {
-                $input = file_get_contents($file);
-            }
-        }
-
-        $yaml = new Parser();
-
-        try {
-            return $yaml->parse($input, $exceptionOnInvalidType, $objectSupport);
-        } catch (ParseException $e) {
-            if ($file) {
-                $e->setParsedFile($file);
-            }
-
-            throw $e;
-        }
-    }
-
-    /**
-     * Dumps a PHP array to a YAML string.
-     *
-     * The dump method, when supplied with an array, will do its best
-     * to convert the array into friendly YAML.
-     *
-     * @param array   $array                  PHP array
-     * @param integer $inline                 The level where you switch to inline YAML
-     * @param integer $indent                 The amount of spaces to use for indentation of nested nodes.
-     * @param Boolean $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
-     * @param Boolean $objectSupport          true if object support is enabled, false otherwise
-     *
-     * @return string A YAML string representing the original PHP array
-     *
-     * @api
-     */
-    public static function dump($array, $inline = 2, $indent = 4, $exceptionOnInvalidType = false, $objectSupport = false)
-    {
-        $yaml = new Dumper();
-        $yaml->setIndentation($indent);
-
-        return $yaml->dump($array, $inline, 0, $exceptionOnInvalidType, $objectSupport);
-    }
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/composer.json b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/composer.json
deleted file mode 100644
index dfabb51..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/composer.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-    "name": "symfony/yaml",
-    "type": "library",
-    "description": "Symfony Yaml Component",
-    "keywords": [],
-    "homepage": "http://symfony.com",
-    "license": "MIT",
-    "authors": [
-        {
-            "name": "Fabien Potencier",
-            "email": "fabien@symfony.com"
-        },
-        {
-            "name": "Symfony Community",
-            "homepage": "http://symfony.com/contributors"
-        }
-    ],
-    "require": {
-        "php": ">=5.3.3"
-    },
-    "autoload": {
-        "psr-0": { "Symfony\\Component\\Yaml": "" }
-    },
-    "target-dir": "Symfony/Component/Yaml",
-    "minimum-stability": "dev"
-}
diff --git a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist b/currency/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist
deleted file mode 100644
index d025f9e..0000000
--- a/currency/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<phpunit backupGlobals="false"
-         backupStaticAttributes="false"
-         colors="true"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         processIsolation="false"
-         stopOnFailure="false"
-         syntaxCheck="false"
-         bootstrap="Tests/bootstrap.php"
->
-    <testsuites>
-        <testsuite name="Symfony Yaml Component Test Suite">
-            <directory>./Tests/</directory>
-        </testsuite>
-    </testsuites>
-
-    <filter>
-        <whitelist>
-            <directory>./</directory>
-            <exclude>
-                <directory>./vendor</directory>
-                <directory>./Tests</directory>
-            </exclude>
-        </whitelist>
-    </filter>
-</phpunit>
diff --git a/currency/vendor/symfony/yaml/Tests/DumperTest.php b/currency/vendor/symfony/yaml/Tests/DumperTest.php
new file mode 100644
index 0000000..b103b9a
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/DumperTest.php
@@ -0,0 +1,236 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Tests;
+
+use Symfony\Component\Yaml\Parser;
+use Symfony\Component\Yaml\Dumper;
+
+class DumperTest extends \PHPUnit_Framework_TestCase
+{
+    protected $parser;
+    protected $dumper;
+    protected $path;
+
+    protected $array = array(
+        '' => 'bar',
+        'foo' => '#bar',
+        'foo\'bar' => array(),
+        'bar' => array(1, 'foo'),
+        'foobar' => array(
+            'foo' => 'bar',
+            'bar' => array(1, 'foo'),
+            'foobar' => array(
+                'foo' => 'bar',
+                'bar' => array(1, 'foo'),
+            ),
+        ),
+    );
+
+    protected function setUp()
+    {
+        $this->parser = new Parser();
+        $this->dumper = new Dumper();
+        $this->path = __DIR__.'/Fixtures';
+    }
+
+    protected function tearDown()
+    {
+        $this->parser = null;
+        $this->dumper = null;
+        $this->path = null;
+        $this->array = null;
+    }
+
+    public function testSetIndentation()
+    {
+        $this->dumper->setIndentation(7);
+
+        $expected = <<<EOF
+'': bar
+foo: '#bar'
+'foo''bar': {  }
+bar:
+       - 1
+       - foo
+foobar:
+       foo: bar
+       bar:
+              - 1
+              - foo
+       foobar:
+              foo: bar
+              bar:
+                     - 1
+                     - foo
+
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 4, 0));
+    }
+
+    public function testSpecifications()
+    {
+        $files = $this->parser->parse(file_get_contents($this->path.'/index.yml'));
+        foreach ($files as $file) {
+            $yamls = file_get_contents($this->path.'/'.$file.'.yml');
+
+            // split YAMLs documents
+            foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) {
+                if (!$yaml) {
+                    continue;
+                }
+
+                $test = $this->parser->parse($yaml);
+                if (isset($test['dump_skip']) && $test['dump_skip']) {
+                    continue;
+                } elseif (isset($test['todo']) && $test['todo']) {
+                    // TODO
+                } else {
+                    eval('$expected = '.trim($test['php']).';');
+                    $this->assertSame($expected, $this->parser->parse($this->dumper->dump($expected, 10)), $test['test']);
+                }
+            }
+        }
+    }
+
+    public function testInlineLevel()
+    {
+        $expected = <<<EOF
+{ '': bar, foo: '#bar', 'foo''bar': {  }, bar: [1, foo], foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } }
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, -10), '->dump() takes an inline level argument');
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 0), '->dump() takes an inline level argument');
+
+        $expected = <<<EOF
+'': bar
+foo: '#bar'
+'foo''bar': {  }
+bar: [1, foo]
+foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } }
+
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 1), '->dump() takes an inline level argument');
+
+        $expected = <<<EOF
+'': bar
+foo: '#bar'
+'foo''bar': {  }
+bar:
+    - 1
+    - foo
+foobar:
+    foo: bar
+    bar: [1, foo]
+    foobar: { foo: bar, bar: [1, foo] }
+
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 2), '->dump() takes an inline level argument');
+
+        $expected = <<<EOF
+'': bar
+foo: '#bar'
+'foo''bar': {  }
+bar:
+    - 1
+    - foo
+foobar:
+    foo: bar
+    bar:
+        - 1
+        - foo
+    foobar:
+        foo: bar
+        bar: [1, foo]
+
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 3), '->dump() takes an inline level argument');
+
+        $expected = <<<EOF
+'': bar
+foo: '#bar'
+'foo''bar': {  }
+bar:
+    - 1
+    - foo
+foobar:
+    foo: bar
+    bar:
+        - 1
+        - foo
+    foobar:
+        foo: bar
+        bar:
+            - 1
+            - foo
+
+EOF;
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 4), '->dump() takes an inline level argument');
+        $this->assertEquals($expected, $this->dumper->dump($this->array, 10), '->dump() takes an inline level argument');
+    }
+
+    public function testObjectSupportEnabled()
+    {
+        $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
+
+        $this->assertEquals('{ foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects');
+    }
+
+    public function testObjectSupportDisabledButNoExceptions()
+    {
+        $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1));
+
+        $this->assertEquals('{ foo: null, bar: 1 }', $dump, '->dump() does not dump objects when disabled');
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\DumpException
+     */
+    public function testObjectSupportDisabledWithExceptions()
+    {
+        $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true, false);
+    }
+
+    /**
+     * @dataProvider getEscapeSequences
+     */
+    public function testEscapedEscapeSequencesInQuotedScalar($input, $expected)
+    {
+        $this->assertEquals($expected, $this->dumper->dump($input));
+    }
+
+    public function getEscapeSequences()
+    {
+        return array(
+            'null' => array("\t\\0", '"\t\\\\0"'),
+            'bell' => array("\t\\a", '"\t\\\\a"'),
+            'backspace' => array("\t\\b", '"\t\\\\b"'),
+            'horizontal-tab' => array("\t\\t", '"\t\\\\t"'),
+            'line-feed' => array("\t\\n", '"\t\\\\n"'),
+            'vertical-tab' => array("\t\\v", '"\t\\\\v"'),
+            'form-feed' => array("\t\\f", '"\t\\\\f"'),
+            'carriage-return' => array("\t\\r", '"\t\\\\r"'),
+            'escape' => array("\t\\e", '"\t\\\\e"'),
+            'space' => array("\t\\ ", '"\t\\\\ "'),
+            'double-quote' => array("\t\\\"", '"\t\\\\\\""'),
+            'slash' => array("\t\\/", '"\t\\\\/"'),
+            'backslash' => array("\t\\\\", '"\t\\\\\\\\"'),
+            'next-line' => array("\t\\N", '"\t\\\\N"'),
+            'non-breaking-space' => array("\t\\�", '"\t\\\\�"'),
+            'line-separator' => array("\t\\L", '"\t\\\\L"'),
+            'paragraph-separator' => array("\t\\P", '"\t\\\\P"'),
+        );
+    }
+}
+
+class A
+{
+    public $a = 'foo';
+}
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml
new file mode 100644
index 0000000..5f9c942
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml
@@ -0,0 +1,31 @@
+--- %YAML:1.0
+test: Simple Alias Example
+brief: >
+    If you need to refer to the same item of data twice,
+    you can give that item an alias.  The alias is a plain
+    string, starting with an ampersand.  The item may then
+    be referred to by the alias throughout your document
+    by using an asterisk before the name of the alias.
+    This is called an anchor.
+yaml: |
+    - &showell Steve
+    - Clark
+    - Brian
+    - Oren
+    - *showell
+php: |
+    array('Steve', 'Clark', 'Brian', 'Oren', 'Steve')
+
+---
+test: Alias of a Mapping
+brief: >
+    An alias can be used on any item of data, including
+    sequences, mappings, and other complex data types.
+yaml: |
+    - &hello
+        Meat: pork
+        Starch: potato
+    - banana
+    - *hello
+php: |
+    array(array('Meat'=>'pork', 'Starch'=>'potato'), 'banana', array('Meat'=>'pork', 'Starch'=>'potato'))
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml
new file mode 100644
index 0000000..dfd9302
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml
@@ -0,0 +1,202 @@
+--- %YAML:1.0
+test: Simple Sequence
+brief: |
+    You can specify a list in YAML by placing each
+    member of the list on a new line with an opening
+    dash. These lists are called sequences.
+yaml: |
+    - apple
+    - banana
+    - carrot
+php: |
+    array('apple', 'banana', 'carrot')
+---
+test: Sequence With Item Being Null In The Middle
+brief: |
+    You can specify a list in YAML by placing each
+    member of the list on a new line with an opening
+    dash. These lists are called sequences.
+yaml: |
+    - apple
+    -
+    - carrot
+php: |
+    array('apple', null, 'carrot')
+---
+test: Sequence With Last Item Being Null
+brief: |
+    You can specify a list in YAML by placing each
+    member of the list on a new line with an opening
+    dash. These lists are called sequences.
+yaml: |
+    - apple
+    - banana
+    -
+php: |
+    array('apple', 'banana', null)
+---
+test: Nested Sequences
+brief: |
+    You can include a sequence within another
+    sequence by giving the sequence an empty
+    dash, followed by an indented list.
+yaml: |
+    -
+     - foo
+     - bar
+     - baz
+php: |
+    array(array('foo', 'bar', 'baz'))
+---
+test: Mixed Sequences
+brief: |
+    Sequences can contain any YAML data,
+    including strings and other sequences.
+yaml: |
+    - apple
+    -
+     - foo
+     - bar
+     - x123
+    - banana
+    - carrot
+php: |
+    array('apple', array('foo', 'bar', 'x123'), 'banana', 'carrot')
+---
+test: Deeply Nested Sequences
+brief: |
+    Sequences can be nested even deeper, with each
+    level of indentation representing a level of
+    depth.
+yaml: |
+    -
+     -
+      - uno
+      - dos
+php: |
+    array(array(array('uno', 'dos')))
+---
+test: Simple Mapping
+brief: |
+    You can add a keyed list (also known as a dictionary or
+    hash) to your document by placing each member of the
+    list on a new line, with a colon separating the key
+    from its value.  In YAML, this type of list is called
+    a mapping.
+yaml: |
+    foo: whatever
+    bar: stuff
+php: |
+    array('foo' => 'whatever', 'bar' => 'stuff')
+---
+test: Sequence in a Mapping
+brief: |
+    A value in a mapping can be a sequence.
+yaml: |
+    foo: whatever
+    bar:
+     - uno
+     - dos
+php: |
+    array('foo' => 'whatever', 'bar' => array('uno', 'dos'))
+---
+test: Nested Mappings
+brief: |
+    A value in a mapping can be another mapping.
+yaml: |
+    foo: whatever
+    bar:
+     fruit: apple
+     name: steve
+     sport: baseball
+php: |
+    array(
+      'foo' => 'whatever',
+      'bar' => array(
+         'fruit' => 'apple',
+         'name' => 'steve',
+         'sport' => 'baseball'
+       )
+    )
+---
+test: Mixed Mapping
+brief: |
+    A mapping can contain any assortment
+    of mappings and sequences as values.
+yaml: |
+    foo: whatever
+    bar:
+     -
+       fruit: apple
+       name: steve
+       sport: baseball
+     - more
+     -
+       python: rocks
+       perl: papers
+       ruby: scissorses
+php: |
+    array(
+      'foo' => 'whatever',
+      'bar' => array(
+        array(
+            'fruit' => 'apple',
+            'name' => 'steve',
+            'sport' => 'baseball'
+        ),
+        'more',
+        array(
+            'python' => 'rocks',
+            'perl' => 'papers',
+            'ruby' => 'scissorses'
+        )
+      )
+    )
+---
+test: Mapping-in-Sequence Shortcut
+todo: true
+brief: |
+     If you are adding a mapping to a sequence, you
+     can place the mapping on the same line as the
+     dash as a shortcut.
+yaml: |
+     - work on YAML.py:
+        - work on Store
+php: |
+    array(array('work on YAML.py' => array('work on Store')))
+---
+test: Sequence-in-Mapping Shortcut
+todo: true
+brief: |
+     The dash in a sequence counts as indentation, so
+     you can add a sequence inside of a mapping without
+     needing spaces as indentation.
+yaml: |
+     allow:
+     - 'localhost'
+     - '%.sourceforge.net'
+     - '%.freepan.org'
+php: |
+     array('allow' => array('localhost', '%.sourceforge.net', '%.freepan.org'))
+---
+todo: true
+test: Merge key
+brief: |
+     A merge key ('<<') can be used in a mapping to insert other mappings.  If
+     the value associated with the merge key is a mapping, each of its key/value
+     pairs is inserted into the current mapping.
+yaml: |
+     mapping:
+       name: Joe
+       job: Accountant
+       <<:
+         age: 38
+php: |
+     array(
+       'mapping' =>
+       array(
+         'name' => 'Joe',
+         'job' => 'Accountant',
+         'age' => 38
+       )
+     )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml
new file mode 100644
index 0000000..f7ca469
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml
@@ -0,0 +1,51 @@
+---
+test: One Element Mapping
+brief: |
+    A mapping with one key/value pair
+yaml: |
+    foo: bar
+php: |
+    array('foo' => 'bar')
+---
+test: Multi Element Mapping
+brief: |
+    More than one key/value pair
+yaml: |
+    red: baron
+    white: walls
+    blue: berries
+php: |
+    array(
+     'red' => 'baron',
+     'white' => 'walls',
+     'blue' => 'berries',
+    )
+---
+test: Values aligned
+brief: |
+    Often times human editors of documents will align the values even
+    though YAML emitters generally don't.
+yaml: |
+    red:   baron
+    white: walls
+    blue:  berries
+php: |
+    array(
+     'red' => 'baron',
+     'white' => 'walls',
+     'blue' => 'berries',
+    )
+---
+test: Colons aligned
+brief: |
+    Spaces can come before the ': ' key/value separator.
+yaml: |
+    red   : baron
+    white : walls
+    blue  : berries
+php: |
+    array(
+     'red' => 'baron',
+     'white' => 'walls',
+     'blue' => 'berries',
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml
new file mode 100644
index 0000000..f8501dd
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml
@@ -0,0 +1,85 @@
+--- %YAML:1.0
+test: Trailing Document Separator
+todo: true
+brief: >
+    You can separate YAML documents
+    with a string of three dashes.
+yaml: |
+    - foo: 1
+      bar: 2
+    ---
+    more: stuff
+python: |
+    [
+        [ { 'foo': 1, 'bar': 2 } ],
+        { 'more': 'stuff' }
+    ]
+ruby: |
+    [ { 'foo' => 1, 'bar' => 2 } ]
+
+---
+test: Leading Document Separator
+todo: true
+brief: >
+    You can explicity give an opening
+    document separator to your YAML stream.
+yaml: |
+    ---
+    - foo: 1
+      bar: 2
+    ---
+    more: stuff
+python: |
+    [
+        [ {'foo': 1, 'bar': 2}],
+        {'more': 'stuff'}
+    ]
+ruby: |
+    [ { 'foo' => 1, 'bar' => 2 } ]
+
+---
+test: YAML Header
+todo: true
+brief: >
+    The opening separator can contain directives
+    to the YAML parser, such as the version
+    number.
+yaml: |
+    --- %YAML:1.0
+    foo: 1
+    bar: 2
+php: |
+    array('foo' => 1, 'bar' => 2)
+documents: 1
+
+---
+test: Red Herring Document Separator
+brief: >
+    Separators included in blocks or strings
+    are treated as blocks or strings, as the
+    document separator should have no indentation
+    preceding it.
+yaml: |
+    foo: |
+        ---
+php: |
+    array('foo' => "---\n")
+
+---
+test: Multiple Document Separators in Block
+brief: >
+    This technique allows you to embed other YAML
+    documents within literal blocks.
+yaml: |
+    foo: |
+        ---
+        foo: bar
+        ---
+        yo: baz
+    bar: |
+        fooness
+php: |
+    array(
+       'foo' => "---\nfoo: bar\n---\nyo: baz\n",
+       'bar' => "fooness\n"
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml
new file mode 100644
index 0000000..e8506fc
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml
@@ -0,0 +1,25 @@
+---
+test: Missing value for hash item
+todo: true
+brief: |
+    Third item in this hash doesn't have a value
+yaml: |
+    okay: value
+    also okay: ~
+    causes error because no value specified
+    last key: value okay here too
+python-error: causes error because no value specified
+
+---
+test: Not indenting enough
+brief: |
+    There was a bug in PyYaml where it was off by one
+    in the indentation check.  It was allowing the YAML
+    below.
+# This is actually valid YAML now. Someone should tell showell.
+yaml: |
+    foo:
+    firstline: 1
+    secondline: 2
+php: |
+  array('foo' => null, 'firstline' => 1, 'secondline' => 2)
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml
new file mode 100644
index 0000000..03090e4
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml
@@ -0,0 +1,60 @@
+---
+test: Simple Inline Array
+brief: >
+    Sequences can be contained on a
+    single line, using the inline syntax.
+    Separate each entry with commas and
+    enclose in square brackets.
+yaml: |
+    seq: [ a, b, c ]
+php: |
+    array('seq' => array('a', 'b', 'c'))
+---
+test: Simple Inline Hash
+brief: >
+    Mapping can also be contained on
+    a single line, using the inline
+    syntax.  Each key-value pair is
+    separated by a colon, with a comma
+    between each entry in the mapping.
+    Enclose with curly braces.
+yaml: |
+    hash: { name: Steve, foo: bar }
+php: |
+    array('hash' => array('name' => 'Steve', 'foo' => 'bar'))
+---
+test: Multi-line Inline Collections
+todo: true
+brief: >
+    Both inline sequences and inline mappings
+    can span multiple lines, provided that you
+    indent the additional lines.
+yaml: |
+    languages: [ Ruby,
+                 Perl,
+                 Python ]
+    websites: { YAML: yaml.org,
+                Ruby: ruby-lang.org,
+                Python: python.org,
+                Perl: use.perl.org }
+php: |
+    array(
+      'languages' => array('Ruby', 'Perl', 'Python'),
+      'websites' => array(
+        'YAML' => 'yaml.org',
+        'Ruby' => 'ruby-lang.org',
+        'Python' => 'python.org',
+        'Perl' => 'use.perl.org'
+      )
+    )
+---
+test: Commas in Values (not in the spec!)
+todo: true
+brief: >
+    List items in collections are delimited by commas, but
+    there must be a space after each comma.  This allows you
+    to add numbers without quoting.
+yaml: |
+    attendances: [ 45,123, 70,000, 17,222 ]
+php: |
+    array('attendances' => array(45123, 70000, 17222))
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml
new file mode 100644
index 0000000..a14735a
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml
@@ -0,0 +1,176 @@
+--- %YAML:1.0
+test: Single ending newline
+brief: >
+    A pipe character, followed by an indented
+    block of text is treated as a literal
+    block, in which newlines are preserved
+    throughout the block, including the final
+    newline.
+yaml: |
+    ---
+    this: |
+        Foo
+        Bar
+php: |
+    array('this' => "Foo\nBar\n")
+---
+test: The '+' indicator
+brief: >
+    The '+' indicator says to keep newlines at the end of text
+    blocks.
+yaml: |
+    normal: |
+      extra new lines not kept
+
+    preserving: |+
+      extra new lines are kept
+
+
+    dummy: value
+php: |
+    array(
+        'normal' => "extra new lines not kept\n",
+        'preserving' => "extra new lines are kept\n\n\n",
+        'dummy' => 'value'
+    )
+---
+test: Three trailing newlines in literals
+brief: >
+    To give you more control over how space
+    is preserved in text blocks, YAML has
+    the keep '+' and chomp '-' indicators.
+    The keep indicator will preserve all
+    ending newlines, while the chomp indicator
+    will strip all ending newlines.
+yaml: |
+    clipped: |
+        This has one newline.
+
+
+
+    same as "clipped" above: "This has one newline.\n"
+
+    stripped: |-
+        This has no newline.
+
+
+
+    same as "stripped" above: "This has no newline."
+
+    kept: |+
+        This has four newlines.
+
+
+
+    same as "kept" above: "This has four newlines.\n\n\n\n"
+php: |
+    array(
+      'clipped' => "This has one newline.\n",
+      'same as "clipped" above' => "This has one newline.\n",
+      'stripped' => 'This has no newline.',
+      'same as "stripped" above' => 'This has no newline.',
+      'kept' => "This has four newlines.\n\n\n\n",
+      'same as "kept" above' => "This has four newlines.\n\n\n\n"
+    )
+---
+test: Extra trailing newlines with spaces
+todo: true
+brief: >
+    Normally, only a single newline is kept
+    from the end of a literal block, unless the
+    keep '+' character is used in combination
+    with the pipe.  The following example
+    will preserve all ending whitespace
+    since the last line of both literal blocks
+    contains spaces which extend past the indentation
+    level.
+yaml: |
+    ---
+    this: |
+        Foo
+
+
+    kept: |+
+        Foo
+
+
+php: |
+    array('this' => "Foo\n\n  \n",
+      'kept' => "Foo\n\n  \n" )
+
+---
+test: Folded Block in a Sequence
+brief: >
+    A greater-then character, followed by an indented
+    block of text is treated as a folded block, in
+    which lines of text separated by a single newline
+    are concatenated as a single line.
+yaml: |
+    ---
+    - apple
+    - banana
+    - >
+        can't you see
+        the beauty of yaml?
+        hmm
+    - dog
+php: |
+    array(
+        'apple',
+        'banana',
+        "can't you see the beauty of yaml? hmm\n",
+        'dog'
+    )
+---
+test: Folded Block as a Mapping Value
+brief: >
+    Both literal and folded blocks can be
+    used in collections, as values in a
+    sequence or a mapping.
+yaml: |
+    ---
+    quote: >
+        Mark McGwire's
+        year was crippled
+        by a knee injury.
+    source: espn
+php: |
+    array(
+        'quote' => "Mark McGwire's year was crippled by a knee injury.\n",
+        'source' => 'espn'
+    )
+---
+test: Three trailing newlines in folded blocks
+brief: >
+    The keep and chomp indicators can also
+    be applied to folded blocks.
+yaml: |
+    clipped: >
+        This has one newline.
+
+
+
+    same as "clipped" above: "This has one newline.\n"
+
+    stripped: >-
+        This has no newline.
+
+
+
+    same as "stripped" above: "This has no newline."
+
+    kept: >+
+        This has four newlines.
+
+
+
+    same as "kept" above: "This has four newlines.\n\n\n\n"
+php: |
+    array(
+      'clipped' => "This has one newline.\n",
+      'same as "clipped" above' => "This has one newline.\n",
+      'stripped' => 'This has no newline.',
+      'same as "stripped" above' => 'This has no newline.',
+      'kept' => "This has four newlines.\n\n\n\n",
+      'same as "kept" above' => "This has four newlines.\n\n\n\n"
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml
new file mode 100644
index 0000000..9a5300f
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml
@@ -0,0 +1,45 @@
+--- %YAML:1.0
+test: Empty Sequence
+brief: >
+    You can represent the empty sequence
+    with an empty inline sequence.
+yaml: |
+    empty: []
+php: |
+    array('empty' => array())
+---
+test: Empty Mapping
+brief: >
+    You can represent the empty mapping
+    with an empty inline mapping.
+yaml: |
+    empty: {}
+php: |
+    array('empty' => array())
+---
+test: Empty Sequence as Entire Document
+yaml: |
+    []
+php: |
+    array()
+---
+test: Empty Mapping as Entire Document
+yaml: |
+    {}
+php: |
+    array()
+---
+test: Null as Document
+yaml: |
+    ~
+php: |
+    null
+---
+test: Empty String
+brief: >
+    You can represent an empty string
+    with a pair of quotes.
+yaml: |
+    ''
+php: |
+    ''
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml
new file mode 100644
index 0000000..0a8b5de
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml
@@ -0,0 +1,1697 @@
+--- %YAML:1.0
+test: Sequence of scalars
+spec: 2.1
+yaml: |
+  - Mark McGwire
+  - Sammy Sosa
+  - Ken Griffey
+php: |
+  array('Mark McGwire', 'Sammy Sosa', 'Ken Griffey')
+---
+test: Mapping of scalars to scalars
+spec: 2.2
+yaml: |
+  hr:  65
+  avg: 0.278
+  rbi: 147
+php: |
+  array('hr' => 65, 'avg' => 0.278, 'rbi' => 147)
+---
+test: Mapping of scalars to sequences
+spec: 2.3
+yaml: |
+    american:
+       - Boston Red Sox
+       - Detroit Tigers
+       - New York Yankees
+    national:
+       - New York Mets
+       - Chicago Cubs
+       - Atlanta Braves
+php: |
+    array('american' =>
+        array( 'Boston Red Sox', 'Detroit Tigers',
+          'New York Yankees' ),
+      'national' =>
+        array( 'New York Mets', 'Chicago Cubs',
+          'Atlanta Braves' )
+    )
+---
+test: Sequence of mappings
+spec: 2.4
+yaml: |
+    -
+      name: Mark McGwire
+      hr:   65
+      avg:  0.278
+    -
+      name: Sammy Sosa
+      hr:   63
+      avg:  0.288
+php: |
+    array(
+      array('name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278),
+      array('name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288)
+    )
+---
+test: Legacy A5
+todo: true
+spec: legacy_A5
+yaml: |
+    ?
+        - New York Yankees
+        - Atlanta Braves
+    :
+      - 2001-07-02
+      - 2001-08-12
+      - 2001-08-14
+    ?
+        - Detroit Tigers
+        - Chicago Cubs
+    :
+      - 2001-07-23
+perl-busted: >
+    YAML.pm will be able to emulate this behavior soon. In this regard
+    it may be somewhat more correct than Python's native behaviour which
+    can only use tuples as mapping keys. PyYAML will also need to figure
+    out some clever way to roundtrip structured keys.
+python: |
+    [
+    {
+        ('New York Yankees', 'Atlanta Braves'):
+            [yaml.timestamp('2001-07-02'),
+             yaml.timestamp('2001-08-12'),
+             yaml.timestamp('2001-08-14')],
+        ('Detroit Tigers', 'Chicago Cubs'):
+        [yaml.timestamp('2001-07-23')]
+    }
+    ]
+ruby: |
+    {
+      [ 'New York Yankees', 'Atlanta Braves' ] =>
+        [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ],
+      [ 'Detroit Tigers', 'Chicago Cubs' ] =>
+        [ Date.new( 2001, 7, 23 ) ]
+    }
+syck: |
+  struct test_node seq1[] = {
+      { T_STR, 0, "New York Yankees" },
+      { T_STR, 0, "Atlanta Braves" },
+      end_node
+  };
+  struct test_node seq2[] = {
+      { T_STR, 0, "2001-07-02" },
+      { T_STR, 0, "2001-08-12" },
+      { T_STR, 0, "2001-08-14" },
+      end_node
+  };
+  struct test_node seq3[] = {
+      { T_STR, 0, "Detroit Tigers" },
+      { T_STR, 0, "Chicago Cubs" },
+      end_node
+  };
+  struct test_node seq4[] = {
+      { T_STR, 0, "2001-07-23" },
+      end_node
+  };
+  struct test_node map[] = {
+      { T_SEQ, 0, 0, seq1 },
+      { T_SEQ, 0, 0, seq2 },
+      { T_SEQ, 0, 0, seq3 },
+      { T_SEQ, 0, 0, seq4 },
+      end_node
+  };
+  struct test_node stream[] = {
+      { T_MAP, 0, 0, map },
+      end_node
+  };
+
+---
+test: Sequence of sequences
+spec: 2.5
+yaml: |
+  - [ name         , hr , avg   ]
+  - [ Mark McGwire , 65 , 0.278 ]
+  - [ Sammy Sosa   , 63 , 0.288 ]
+php: |
+  array(
+    array( 'name', 'hr', 'avg' ),
+    array( 'Mark McGwire', 65, 0.278 ),
+    array( 'Sammy Sosa', 63, 0.288 )
+  )
+---
+test: Mapping of mappings
+todo: true
+spec: 2.6
+yaml: |
+  Mark McGwire: {hr: 65, avg: 0.278}
+  Sammy Sosa: {
+      hr: 63,
+      avg: 0.288
+    }
+php: |
+  array(
+    'Mark McGwire' =>
+      array( 'hr' => 65, 'avg' => 0.278 ),
+    'Sammy Sosa' =>
+      array( 'hr' => 63, 'avg' => 0.288 )
+  )
+---
+test: Two documents in a stream each with a leading comment
+todo: true
+spec: 2.7
+yaml: |
+  # Ranking of 1998 home runs
+  ---
+  - Mark McGwire
+  - Sammy Sosa
+  - Ken Griffey
+
+  # Team ranking
+  ---
+  - Chicago Cubs
+  - St Louis Cardinals
+ruby: |
+  y = YAML::Stream.new
+  y.add( [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] )
+  y.add( [ 'Chicago Cubs', 'St Louis Cardinals' ] )
+documents: 2
+
+---
+test: Play by play feed from a game
+todo: true
+spec: 2.8
+yaml: |
+  ---
+  time: 20:03:20
+  player: Sammy Sosa
+  action: strike (miss)
+  ...
+  ---
+  time: 20:03:47
+  player: Sammy Sosa
+  action: grand slam
+  ...
+perl: |
+  [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ]
+documents: 2
+
+---
+test: Single document with two comments
+spec: 2.9
+yaml: |
+  hr: # 1998 hr ranking
+    - Mark McGwire
+    - Sammy Sosa
+  rbi:
+    # 1998 rbi ranking
+    - Sammy Sosa
+    - Ken Griffey
+php: |
+  array(
+    'hr' => array( 'Mark McGwire', 'Sammy Sosa' ),
+    'rbi' => array( 'Sammy Sosa', 'Ken Griffey' )
+  )
+---
+test: Node for Sammy Sosa appears twice in this document
+spec: 2.10
+yaml: |
+   ---
+   hr:
+      - Mark McGwire
+      # Following node labeled SS
+      - &SS Sammy Sosa
+   rbi:
+      - *SS # Subsequent occurrence
+      - Ken Griffey
+php: |
+   array(
+      'hr' =>
+         array('Mark McGwire', 'Sammy Sosa'),
+      'rbi' =>
+         array('Sammy Sosa', 'Ken Griffey')
+   )
+---
+test: Mapping between sequences
+todo: true
+spec: 2.11
+yaml: |
+   ? # PLAY SCHEDULE
+     - Detroit Tigers
+     - Chicago Cubs
+   :
+     - 2001-07-23
+
+   ? [ New York Yankees,
+       Atlanta Braves ]
+   : [ 2001-07-02, 2001-08-12,
+       2001-08-14 ]
+ruby: |
+   {
+      [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ],
+      [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ]
+   }
+syck: |
+  struct test_node seq1[] = {
+      { T_STR, 0, "New York Yankees" },
+      { T_STR, 0, "Atlanta Braves" },
+      end_node
+  };
+  struct test_node seq2[] = {
+      { T_STR, 0, "2001-07-02" },
+      { T_STR, 0, "2001-08-12" },
+      { T_STR, 0, "2001-08-14" },
+      end_node
+  };
+  struct test_node seq3[] = {
+      { T_STR, 0, "Detroit Tigers" },
+      { T_STR, 0, "Chicago Cubs" },
+      end_node
+  };
+  struct test_node seq4[] = {
+      { T_STR, 0, "2001-07-23" },
+      end_node
+  };
+  struct test_node map[] = {
+      { T_SEQ, 0, 0, seq3 },
+      { T_SEQ, 0, 0, seq4 },
+      { T_SEQ, 0, 0, seq1 },
+      { T_SEQ, 0, 0, seq2 },
+      end_node
+  };
+  struct test_node stream[] = {
+      { T_MAP, 0, 0, map },
+      end_node
+  };
+
+---
+test: Sequence key shortcut
+spec: 2.12
+yaml: |
+  ---
+  # products purchased
+  - item    : Super Hoop
+    quantity: 1
+  - item    : Basketball
+    quantity: 4
+  - item    : Big Shoes
+    quantity: 1
+php: |
+  array (
+    array (
+      'item' => 'Super Hoop',
+      'quantity' => 1,
+    ),
+    array (
+      'item' => 'Basketball',
+      'quantity' => 4,
+    ),
+    array (
+      'item' => 'Big Shoes',
+      'quantity' => 1,
+    )
+  )
+perl: |
+  [
+     { item => 'Super Hoop', quantity => 1 },
+     { item => 'Basketball', quantity => 4 },
+     { item => 'Big Shoes',  quantity => 1 }
+  ]
+
+ruby: |
+  [
+     { 'item' => 'Super Hoop', 'quantity' => 1 },
+     { 'item' => 'Basketball', 'quantity' => 4 },
+     { 'item' => 'Big Shoes', 'quantity' => 1 }
+  ]
+python: |
+  [
+       { 'item': 'Super Hoop', 'quantity': 1 },
+       { 'item': 'Basketball', 'quantity': 4 },
+       { 'item': 'Big Shoes',  'quantity': 1 }
+  ]
+syck: |
+  struct test_node map1[] = {
+      { T_STR, 0, "item" },
+          { T_STR, 0, "Super Hoop" },
+      { T_STR, 0, "quantity" },
+          { T_STR, 0, "1" },
+      end_node
+  };
+  struct test_node map2[] = {
+      { T_STR, 0, "item" },
+          { T_STR, 0, "Basketball" },
+      { T_STR, 0, "quantity" },
+          { T_STR, 0, "4" },
+      end_node
+  };
+  struct test_node map3[] = {
+      { T_STR, 0, "item" },
+          { T_STR, 0, "Big Shoes" },
+      { T_STR, 0, "quantity" },
+          { T_STR, 0, "1" },
+      end_node
+  };
+  struct test_node seq[] = {
+      { T_MAP, 0, 0, map1 },
+      { T_MAP, 0, 0, map2 },
+      { T_MAP, 0, 0, map3 },
+      end_node
+  };
+  struct test_node stream[] = {
+      { T_SEQ, 0, 0, seq },
+      end_node
+  };
+
+
+---
+test: Literal perserves newlines
+todo: true
+spec: 2.13
+yaml: |
+  # ASCII Art
+  --- |
+    \//||\/||
+    // ||  ||_
+perl: |
+  "\\//||\\/||\n// ||  ||_\n"
+ruby: |
+  "\\//||\\/||\n// ||  ||_\n"
+python: |
+    [
+        flushLeft(
+        """
+        \//||\/||
+        // ||  ||_
+        """
+        )
+    ]
+syck: |
+  struct test_node stream[] = {
+      { T_STR, 0, "\\//||\\/||\n// ||  ||_\n" },
+      end_node
+  };
+
+---
+test: Folded treats newlines as a space
+todo: true
+spec: 2.14
+yaml: |
+  ---
+    Mark McGwire's
+    year was crippled
+    by a knee injury.
+perl: |
+  "Mark McGwire's year was crippled by a knee injury."
+ruby: |
+  "Mark McGwire's year was crippled by a knee injury."
+python: |
+    [ "Mark McGwire's year was crippled by a knee injury." ]
+syck: |
+  struct test_node stream[] = {
+      { T_STR, 0, "Mark McGwire's year was crippled by a knee injury." },
+      end_node
+  };
+
+---
+test: Newlines preserved for indented and blank lines
+todo: true
+spec: 2.15
+yaml: |
+  --- >
+   Sammy Sosa completed another
+   fine season with great stats.
+
+     63 Home Runs
+     0.288 Batting Average
+
+   What a year!
+perl: |
+  "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n"
+ruby: |
+  "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n"
+python: |
+    [
+        flushLeft(
+        """
+        Sammy Sosa completed another fine season with great stats.
+
+          63 Home Runs
+          0.288 Batting Average
+
+        What a year!
+        """
+        )
+    ]
+syck: |
+  struct test_node stream[] = {
+      { T_STR, 0, "Sammy Sosa completed another fine season with great stats.\n\n  63 Home Runs\n  0.288 Batting Average\n\nWhat a year!\n" },
+      end_node
+  };
+
+
+---
+test: Indentation determines scope
+spec: 2.16
+yaml: |
+  name: Mark McGwire
+  accomplishment: >
+     Mark set a major league
+     home run record in 1998.
+  stats: |
+     65 Home Runs
+     0.278 Batting Average
+php: |
+  array(
+    'name' => 'Mark McGwire',
+    'accomplishment' => "Mark set a major league home run record in 1998.\n",
+    'stats' => "65 Home Runs\n0.278 Batting Average\n"
+  )
+---
+test: Quoted scalars
+todo: true
+spec: 2.17
+yaml: |
+  unicode: "Sosa did fine.\u263A"
+  control: "\b1998\t1999\t2000\n"
+  hexesc:  "\x0D\x0A is \r\n"
+
+  single: '"Howdy!" he cried.'
+  quoted: ' # not a ''comment''.'
+  tie-fighter: '|\-*-/|'
+ruby: |
+  {
+    "tie-fighter" => "|\\-*-/|",
+    "control"=>"\0101998\t1999\t2000\n",
+    "unicode"=>"Sosa did fine." + ["263A".hex ].pack('U*'),
+    "quoted"=>" # not a 'comment'.",
+    "single"=>"\"Howdy!\" he cried.",
+    "hexesc"=>"\r\n is \r\n"
+  }
+---
+test: Multiline flow scalars
+todo: true
+spec: 2.18
+yaml: |
+  plain:
+    This unquoted scalar
+    spans many lines.
+
+  quoted: "So does this
+    quoted scalar.\n"
+ruby: |
+  {
+    'plain' => 'This unquoted scalar spans many lines.',
+    'quoted' => "So does this quoted scalar.\n"
+  }
+---
+test: Integers
+spec: 2.19
+yaml: |
+  canonical: 12345
+  decimal: +12,345
+  octal: 014
+  hexadecimal: 0xC
+php: |
+  array(
+    'canonical' => 12345,
+    'decimal' => 12345,
+    'octal' => 014,
+    'hexadecimal' => 0xC
+  )
+---
+# FIX: spec shows parens around -inf and NaN
+test: Floating point
+spec: 2.20
+yaml: |
+  canonical: 1.23015e+3
+  exponential: 12.3015e+02
+  fixed: 1,230.15
+  negative infinity: -.inf
+  not a number: .NaN
+  float as whole number: !!float 1
+php: |
+  array(
+    'canonical' => 1230.15,
+    'exponential' => 1230.15,
+    'fixed' => 1230.15,
+    'negative infinity' => log(0),
+    'not a number' => -log(0),
+    'float as whole number' => (float) 1
+  )
+---
+test: Miscellaneous
+spec: 2.21
+yaml: |
+  null: ~
+  true: true
+  false: false
+  string: '12345'
+php: |
+  array(
+    '' => null,
+    1 => true,
+    0 => false,
+    'string' => '12345'
+  )
+---
+test: Timestamps
+todo: true
+spec: 2.22
+yaml: |
+  canonical: 2001-12-15T02:59:43.1Z
+  iso8601:  2001-12-14t21:59:43.10-05:00
+  spaced:  2001-12-14 21:59:43.10 -05:00
+  date:   2002-12-14 # Time is noon UTC
+php: |
+  array(
+    'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
+    'iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
+    'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
+    'date' => Date.new( 2002, 12, 14 )
+  )
+---
+test: legacy Timestamps test
+todo: true
+spec: legacy D4
+yaml: |
+    canonical: 2001-12-15T02:59:43.00Z
+    iso8601:  2001-02-28t21:59:43.00-05:00
+    spaced:  2001-12-14 21:59:43.00 -05:00
+    date:   2002-12-14
+php: |
+   array(
+     'canonical' => Time::utc( 2001, 12, 15, 2, 59, 43, 0 ),
+     'iso8601' => YAML::mktime( 2001, 2, 28, 21, 59, 43, 0, "-05:00" ),
+     'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0, "-05:00" ),
+     'date' => Date.new( 2002, 12, 14 )
+   )
+---
+test: Various explicit families
+todo: true
+spec: 2.23
+yaml: |
+  not-date: !str 2002-04-28
+  picture: !binary |
+   R0lGODlhDAAMAIQAAP//9/X
+   17unp5WZmZgAAAOfn515eXv
+   Pz7Y6OjuDg4J+fn5OTk6enp
+   56enmleECcgggoBADs=
+
+  application specific tag: !!something |
+   The semantics of the tag
+   above may be different for
+   different documents.
+
+ruby-setup: |
+  YAML.add_private_type( "something" ) do |type, val|
+    "SOMETHING: #{val}"
+  end
+ruby: |
+  {
+    'not-date' => '2002-04-28',
+    'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;",
+    'application specific tag' => "SOMETHING: The semantics of the tag\nabove may be different for\ndifferent documents.\n"
+  }
+---
+test: Application specific family
+todo: true
+spec: 2.24
+yaml: |
+  # Establish a tag prefix
+  --- !clarkevans.com,2002/graph/^shape
+    # Use the prefix: shorthand for
+    # !clarkevans.com,2002/graph/circle
+  - !^circle
+    center: &ORIGIN {x: 73, 'y': 129}
+    radius: 7
+  - !^line # !clarkevans.com,2002/graph/line
+    start: *ORIGIN
+    finish: { x: 89, 'y': 102 }
+  - !^label
+    start: *ORIGIN
+    color: 0xFFEEBB
+    value: Pretty vector drawing.
+ruby-setup: |
+  YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val|
+    if Array === val
+      val << "Shape Container"
+      val
+    else
+      raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
+    end
+  }
+  one_shape_proc = Proc.new { |type, val|
+    scheme, domain, type = type.split( /:/, 3 )
+    if val.is_a? ::Hash
+      val['TYPE'] = "Shape: #{type}"
+      val
+    else
+      raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect
+    end
+  }
+  YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc )
+  YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc )
+  YAML.add_domain_type( "clarkevans.com,2002", 'graph/label', &one_shape_proc )
+ruby: |
+  [
+    {
+      "radius" => 7,
+      "center"=>
+      {
+        "x" => 73,
+        "y" => 129
+      },
+      "TYPE" => "Shape: graph/circle"
+    }, {
+      "finish" =>
+      {
+        "x" => 89,
+        "y" => 102
+      },
+      "TYPE" => "Shape: graph/line",
+      "start" =>
+      {
+        "x" => 73,
+        "y" => 129
+      }
+    }, {
+      "TYPE" => "Shape: graph/label",
+      "value" => "Pretty vector drawing.",
+      "start" =>
+      {
+        "x" => 73,
+        "y" => 129
+      },
+      "color" => 16772795
+    },
+    "Shape Container"
+  ]
+# ---
+# test: Unordered set
+# spec: 2.25
+# yaml: |
+#   # sets are represented as a
+#   # mapping where each key is
+#   # associated with the empty string
+#   --- !set
+#   ? Mark McGwire
+#   ? Sammy Sosa
+#   ? Ken Griff
+---
+test: Ordered mappings
+todo: true
+spec: 2.26
+yaml: |
+  # ordered maps are represented as
+  # a sequence of mappings, with
+  # each mapping having one key
+  --- !omap
+  - Mark McGwire: 65
+  - Sammy Sosa: 63
+  - Ken Griffy: 58
+ruby: |
+  YAML::Omap[
+    'Mark McGwire', 65,
+    'Sammy Sosa', 63,
+    'Ken Griffy', 58
+  ]
+---
+test: Invoice
+dump_skip: true
+spec: 2.27
+yaml: |
+  --- !clarkevans.com,2002/^invoice
+  invoice: 34843
+  date   : 2001-01-23
+  bill-to: &id001
+      given  : Chris
+      family : Dumars
+      address:
+          lines: |
+              458 Walkman Dr.
+              Suite #292
+          city    : Royal Oak
+          state   : MI
+          postal  : 48046
+  ship-to: *id001
+  product:
+      -
+        sku         : BL394D
+        quantity    : 4
+        description : Basketball
+        price       : 450.00
+      -
+        sku         : BL4438H
+        quantity    : 1
+        description : Super Hoop
+        price       : 2392.00
+  tax  : 251.42
+  total: 4443.52
+  comments: >
+    Late afternoon is best.
+    Backup contact is Nancy
+    Billsmer @ 338-4338.
+php: |
+  array(
+     'invoice' => 34843, 'date' => mktime(0, 0, 0, 1, 23, 2001),
+     'bill-to' =>
+      array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
+     , 'ship-to' =>
+      array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) )
+     , 'product' =>
+       array(
+        array( 'sku' => 'BL394D', 'quantity' => 4, 'description' => 'Basketball', 'price' => 450.00 ),
+        array( 'sku' => 'BL4438H', 'quantity' => 1, 'description' => 'Super Hoop', 'price' => 2392.00 )
+      ),
+     'tax' => 251.42, 'total' => 4443.52,
+     'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n"
+  )
+---
+test: Log file
+todo: true
+spec: 2.28
+yaml: |
+  ---
+  Time: 2001-11-23 15:01:42 -05:00
+  User: ed
+  Warning: >
+    This is an error message
+    for the log file
+  ---
+  Time: 2001-11-23 15:02:31 -05:00
+  User: ed
+  Warning: >
+    A slightly different error
+    message.
+  ---
+  Date: 2001-11-23 15:03:17 -05:00
+  User: ed
+  Fatal: >
+    Unknown variable "bar"
+  Stack:
+    - file: TopClass.py
+      line: 23
+      code: |
+        x = MoreObject("345\n")
+    - file: MoreClass.py
+      line: 58
+      code: |-
+        foo = bar
+ruby: |
+  y = YAML::Stream.new
+  y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ),
+           'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } )
+  y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ),
+           'User' => 'ed', 'Warning' => "A slightly different error message.\n" } )
+  y.add( { 'Date' => YAML::mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ),
+           'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n",
+           'Stack' => [
+           { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" },
+           { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } )
+documents: 3
+
+---
+test: Throwaway comments
+yaml: |
+   ### These are four throwaway comment  ###
+
+   ### lines (the second line is empty). ###
+   this: |   # Comments may trail lines.
+      contains three lines of text.
+      The third one starts with a
+      # character. This isn't a comment.
+
+   # These are three throwaway comment
+   # lines (the first line is empty).
+php: |
+   array(
+     'this' => "contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n"
+   )
+---
+test: Document with a single value
+todo: true
+yaml: |
+   --- >
+   This YAML stream contains a single text value.
+   The next stream is a log file - a sequence of
+   log entries. Adding an entry to the log is a
+   simple matter of appending it at the end.
+ruby: |
+   "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n"
+---
+test: Document stream
+todo: true
+yaml: |
+   ---
+   at: 2001-08-12 09:25:00.00 Z
+   type: GET
+   HTTP: '1.0'
+   url: '/index.html'
+   ---
+   at: 2001-08-12 09:25:10.00 Z
+   type: GET
+   HTTP: '1.0'
+   url: '/toc.html'
+ruby: |
+   y = YAML::Stream.new
+   y.add( {
+      'at' => Time::utc( 2001, 8, 12, 9, 25, 00 ),
+      'type' => 'GET',
+      'HTTP' => '1.0',
+      'url' => '/index.html'
+   } )
+   y.add( {
+      'at' => Time::utc( 2001, 8, 12, 9, 25, 10 ),
+      'type' => 'GET',
+      'HTTP' => '1.0',
+      'url' => '/toc.html'
+   } )
+documents: 2
+
+---
+test: Top level mapping
+yaml: |
+   # This stream is an example of a top-level mapping.
+   invoice : 34843
+   date    : 2001-01-23
+   total   : 4443.52
+php: |
+   array(
+      'invoice' => 34843,
+      'date' => mktime(0, 0, 0, 1, 23, 2001),
+      'total' => 4443.52
+   )
+---
+test: Single-line documents
+todo: true
+yaml: |
+  # The following is a sequence of three documents.
+  # The first contains an empty mapping, the second
+  # an empty sequence, and the last an empty string.
+  --- {}
+  --- [ ]
+  --- ''
+ruby: |
+  y = YAML::Stream.new
+  y.add( {} )
+  y.add( [] )
+  y.add( '' )
+documents: 3
+
+---
+test: Document with pause
+todo: true
+yaml: |
+  # A communication channel based on a YAML stream.
+  ---
+  sent at: 2002-06-06 11:46:25.10 Z
+  payload: Whatever
+  # Receiver can process this as soon as the following is sent:
+  ...
+  # Even if the next message is sent long after:
+  ---
+  sent at: 2002-06-06 12:05:53.47 Z
+  payload: Whatever
+  ...
+ruby: |
+  y = YAML::Stream.new
+  y.add(
+    { 'sent at' => YAML::mktime( 2002, 6, 6, 11, 46, 25, 0.10 ),
+      'payload' => 'Whatever' }
+  )
+  y.add(
+    { "payload" => "Whatever", "sent at" => YAML::mktime( 2002, 6, 6, 12, 5, 53, 0.47 ) }
+  )
+documents: 2
+
+---
+test: Explicit typing
+yaml: |
+   integer: 12
+   also int: ! "12"
+   string: !str 12
+php: |
+   array( 'integer' => 12, 'also int' => 12, 'string' => '12' )
+---
+test: Private types
+todo: true
+yaml: |
+  # Both examples below make use of the 'x-private:ball'
+  # type family URI, but with different semantics.
+  ---
+  pool: !!ball
+    number: 8
+    color: black
+  ---
+  bearing: !!ball
+    material: steel
+ruby: |
+  y = YAML::Stream.new
+  y.add( { 'pool' =>
+    YAML::PrivateType.new( 'ball',
+      { 'number' => 8, 'color' => 'black' } ) }
+  )
+  y.add( { 'bearing' =>
+    YAML::PrivateType.new( 'ball',
+      { 'material' => 'steel' } ) }
+  )
+documents: 2
+
+---
+test: Type family under yaml.org
+yaml: |
+  # The URI is 'tag:yaml.org,2002:str'
+  - !str a Unicode string
+php: |
+  array( 'a Unicode string' )
+---
+test: Type family under perl.yaml.org
+todo: true
+yaml: |
+  # The URI is 'tag:perl.yaml.org,2002:Text::Tabs'
+  - !perl/Text::Tabs {}
+ruby: |
+  [ YAML::DomainType.new( 'perl.yaml.org,2002', 'Text::Tabs', {} ) ]
+---
+test: Type family under clarkevans.com
+todo: true
+yaml: |
+  # The URI is 'tag:clarkevans.com,2003-02:timesheet'
+  - !clarkevans.com,2003-02/timesheet {}
+ruby: |
+  [ YAML::DomainType.new( 'clarkevans.com,2003-02', 'timesheet', {} ) ]
+---
+test: URI Escaping
+todo: true
+yaml: |
+  same:
+    - !domain.tld,2002/type\x30 value
+    - !domain.tld,2002/type0 value
+  different: # As far as the YAML parser is concerned
+    - !domain.tld,2002/type%30 value
+    - !domain.tld,2002/type0 value
+ruby-setup: |
+  YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val|
+    "ONE: #{val}"
+  }
+  YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val|
+    "TWO: #{val}"
+  }
+ruby: |
+  { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value', 'ONE: value' ] }
+---
+test: URI Prefixing
+todo: true
+yaml: |
+  # 'tag:domain.tld,2002:invoice' is some type family.
+  invoice: !domain.tld,2002/^invoice
+    # 'seq' is shorthand for 'tag:yaml.org,2002:seq'.
+    # This does not effect '^customer' below
+    # because it is does not specify a prefix.
+    customers: !seq
+      # '^customer' is shorthand for the full
+      # notation 'tag:domain.tld,2002:customer'.
+      - !^customer
+        given : Chris
+        family : Dumars
+ruby-setup: |
+  YAML.add_domain_type( "domain.tld,2002", /(invoice|customer)/ ) { |type, val|
+    if val.is_a? ::Hash
+      scheme, domain, type = type.split( /:/, 3 )
+      val['type'] = "domain #{type}"
+      val
+    else
+      raise YAML::Error, "Not a Hash in domain.tld/invoice: " + val.inspect
+    end
+  }
+ruby: |
+  { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }
+
+---
+test: Overriding anchors
+yaml: |
+  anchor : &A001 This scalar has an anchor.
+  override : &A001 >
+   The alias node below is a
+   repeated use of this value.
+  alias : *A001
+php: |
+  array( 'anchor' => 'This scalar has an anchor.',
+    'override' => "The alias node below is a repeated use of this value.\n",
+    'alias' => "The alias node below is a repeated use of this value.\n" )
+---
+test: Flow and block formatting
+todo: true
+yaml: |
+  empty: []
+  flow: [ one, two, three # May span lines,
+           , four,           # indentation is
+             five ]          # mostly ignored.
+  block:
+   - First item in top sequence
+   -
+    - Subordinate sequence entry
+   - >
+     A folded sequence entry
+   - Sixth item in top sequence
+ruby: |
+  { 'empty' => [], 'flow' => [ 'one', 'two', 'three', 'four', 'five' ],
+    'block' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ],
+    "A folded sequence entry\n", 'Sixth item in top sequence' ] }
+---
+test: Complete mapping test
+todo: true
+yaml: |
+ empty: {}
+ flow: { one: 1, two: 2 }
+ spanning: { one: 1,
+    two: 2 }
+ block:
+  first : First entry
+  second:
+   key: Subordinate mapping
+  third:
+   - Subordinate sequence
+   - { }
+   - Previous mapping is empty.
+   - A key: value pair in a sequence.
+     A second: key:value pair.
+   - The previous entry is equal to the following one.
+   -
+     A key: value pair in a sequence.
+     A second: key:value pair.
+  !float 12 : This key is a float.
+  ? >
+   ?
+  : This key had to be protected.
+  "\a" : This key had to be escaped.
+  ? >
+   This is a
+   multi-line
+   folded key
+  : Whose value is
+    also multi-line.
+  ? this also works as a key
+  : with a value at the next line.
+  ?
+   - This key
+   - is a sequence
+  :
+   - With a sequence value.
+  ?
+   This: key
+   is a: mapping
+  :
+   with a: mapping value.
+ruby: |
+  { 'empty' => {}, 'flow' => { 'one' => 1, 'two' => 2 },
+    'spanning' => { 'one' => 1, 'two' => 2 },
+    'block' => { 'first' => 'First entry', 'second' =>
+    { 'key' => 'Subordinate mapping' }, 'third' =>
+      [ 'Subordinate sequence', {}, 'Previous mapping is empty.',
+        { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' },
+        'The previous entry is equal to the following one.',
+        { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ],
+    12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.',
+    "\a" => 'This key had to be escaped.',
+    "This is a multi-line folded key\n" => "Whose value is also multi-line.",
+    'this also works as a key' => 'with a value at the next line.',
+    [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } }
+  # Couldn't recreate map exactly, so we'll do a detailed check to be sure it's entact
+  obj_y['block'].keys.each { |k|
+    if Hash === k
+      v = obj_y['block'][k]
+      if k['This'] == 'key' and k['is a'] == 'mapping' and v['with a'] == 'mapping value.'
+         obj_r['block'][k] = v
+      end
+    end
+  }
+---
+test: Literal explicit indentation
+yaml: |
+   # Explicit indentation must
+   # be given in all the three
+   # following cases.
+   leading spaces: |2
+         This value starts with four spaces.
+
+   leading line break: |2
+
+     This value starts with a line break.
+
+   leading comment indicator: |2
+     # first line starts with a
+     # character.
+
+   # Explicit indentation may
+   # also be given when it is
+   # not required.
+   redundant: |2
+     This value is indented 2 spaces.
+php: |
+   array(
+      'leading spaces' => "    This value starts with four spaces.\n",
+      'leading line break' => "\nThis value starts with a line break.\n",
+      'leading comment indicator' => "# first line starts with a\n# character.\n",
+      'redundant' => "This value is indented 2 spaces.\n"
+   )
+---
+test: Chomping and keep modifiers
+yaml: |
+    clipped: |
+        This has one newline.
+
+    same as "clipped" above: "This has one newline.\n"
+
+    stripped: |-
+        This has no newline.
+
+    same as "stripped" above: "This has no newline."
+
+    kept: |+
+        This has two newlines.
+
+    same as "kept" above: "This has two newlines.\n\n"
+php: |
+    array(
+      'clipped' => "This has one newline.\n",
+      'same as "clipped" above' => "This has one newline.\n",
+      'stripped' => 'This has no newline.',
+      'same as "stripped" above' => 'This has no newline.',
+      'kept' => "This has two newlines.\n\n",
+      'same as "kept" above' => "This has two newlines.\n\n"
+    )
+---
+test: Literal combinations
+todo: true
+yaml: |
+   empty: |
+
+   literal: |
+    The \ ' " characters may be
+    freely used. Leading white
+       space is significant.
+
+    Line breaks are significant.
+    Thus this value contains one
+    empty line and ends with a
+    single line break, but does
+    not start with one.
+
+   is equal to: "The \\ ' \" characters may \
+    be\nfreely used. Leading white\n   space \
+    is significant.\n\nLine breaks are \
+    significant.\nThus this value contains \
+    one\nempty line and ends with a\nsingle \
+    line break, but does\nnot start with one.\n"
+
+   # Comments may follow a block
+   # scalar value. They must be
+   # less indented.
+
+   # Modifiers may be combined in any order.
+   indented and chomped: |2-
+       This has no newline.
+
+   also written as: |-2
+       This has no newline.
+
+   both are equal to: "  This has no newline."
+php: |
+   array(
+     'empty' => '',
+     'literal' => "The \\ ' \" characters may be\nfreely used. Leading white\n   space " +
+       "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
+       "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
+     'is equal to' => "The \\ ' \" characters may be\nfreely used. Leading white\n   space " +
+       "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" +
+       "empty line and ends with a\nsingle line break, but does\nnot start with one.\n",
+     'indented and chomped' => '  This has no newline.',
+     'also written as' => '  This has no newline.',
+     'both are equal to' => '  This has no newline.'
+   )
+---
+test: Folded combinations
+todo: true
+yaml: |
+   empty: >
+
+   one paragraph: >
+    Line feeds are converted
+    to spaces, so this value
+    contains no line breaks
+    except for the final one.
+
+   multiple paragraphs: >2
+
+     An empty line, either
+     at the start or in
+     the value:
+
+     Is interpreted as a
+     line break. Thus this
+     value contains three
+     line breaks.
+
+   indented text: >
+       This is a folded
+       paragraph followed
+       by a list:
+        * first entry
+        * second entry
+       Followed by another
+       folded paragraph,
+       another list:
+
+        * first entry
+
+        * second entry
+
+       And a final folded
+       paragraph.
+
+   above is equal to: |
+       This is a folded paragraph followed by a list:
+        * first entry
+        * second entry
+       Followed by another folded paragraph, another list:
+
+        * first entry
+
+        * second entry
+
+       And a final folded paragraph.
+
+   # Explicit comments may follow
+   # but must be less indented.
+php: |
+   array(
+     'empty' => '',
+     'one paragraph' => 'Line feeds are converted to spaces, so this value'.
+       " contains no line breaks except for the final one.\n",
+     'multiple paragraphs' => "\nAn empty line, either at the start or in the value:\n".
+       "Is interpreted as a line break. Thus this value contains three line breaks.\n",
+     'indented text' => "This is a folded paragraph followed by a list:\n".
+       " * first entry\n * second entry\nFollowed by another folded paragraph, ".
+       "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n",
+     'above is equal to' => "This is a folded paragraph followed by a list:\n".
+       " * first entry\n * second entry\nFollowed by another folded paragraph, ".
+       "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n"
+   )
+---
+test: Single quotes
+todo: true
+yaml: |
+   empty: ''
+   second: '! : \ etc. can be used freely.'
+   third: 'a single quote '' must be escaped.'
+   span: 'this contains
+         six spaces
+
+         and one
+         line break'
+   is same as: "this contains six spaces\nand one line break"
+php: |
+   array(
+     'empty' => '',
+     'second' => '! : \\ etc. can be used freely.',
+     'third' => "a single quote ' must be escaped.",
+     'span' => "this contains six spaces\nand one line break",
+     'is same as' => "this contains six spaces\nand one line break"
+   )
+---
+test: Double quotes
+todo: true
+yaml: |
+   empty: ""
+   second: "! : etc. can be used freely."
+   third: "a \" or a \\ must be escaped."
+   fourth: "this value ends with an LF.\n"
+   span: "this contains
+     four  \
+         spaces"
+   is equal to: "this contains four  spaces"
+php: |
+   array(
+     'empty' => '',
+     'second' => '! : etc. can be used freely.',
+     'third' => 'a " or a \\ must be escaped.',
+     'fourth' => "this value ends with an LF.\n",
+     'span' => "this contains four  spaces",
+     'is equal to' => "this contains four  spaces"
+   )
+---
+test: Unquoted strings
+todo: true
+yaml: |
+   first: There is no unquoted empty string.
+
+   second: 12          ## This is an integer.
+
+   third: !str 12      ## This is a string.
+
+   span: this contains
+         six spaces
+
+         and one
+         line break
+
+   indicators: this has no comments.
+               #:foo and bar# are
+               both text.
+
+   flow: [ can span
+              lines, # comment
+              like
+              this ]
+
+   note: { one-line keys: but multi-line values }
+
+php: |
+   array(
+     'first' => 'There is no unquoted empty string.',
+     'second' => 12,
+     'third' => '12',
+     'span' => "this contains six spaces\nand one line break",
+     'indicators' => "this has no comments. #:foo and bar# are both text.",
+     'flow' => [ 'can span lines', 'like this' ],
+     'note' => { 'one-line keys' => 'but multi-line values' }
+   )
+---
+test: Spanning sequences
+todo: true
+yaml: |
+   # The following are equal seqs
+   # with different identities.
+   flow: [ one, two ]
+   spanning: [ one,
+        two ]
+   block:
+     - one
+     - two
+php: |
+   array(
+     'flow' => [ 'one', 'two' ],
+     'spanning' => [ 'one', 'two' ],
+     'block' => [ 'one', 'two' ]
+   )
+---
+test: Flow mappings
+yaml: |
+   # The following are equal maps
+   # with different identities.
+   flow: { one: 1, two: 2 }
+   block:
+       one: 1
+       two: 2
+php: |
+   array(
+     'flow' => array( 'one' => 1, 'two' => 2 ),
+     'block' => array( 'one' => 1, 'two' => 2 )
+   )
+---
+test: Representations of 12
+todo: true
+yaml: |
+   - 12 # An integer
+   # The following scalars
+   # are loaded to the
+   # string value '1' '2'.
+   - !str 12
+   - '12'
+   - "12"
+   - "\
+     1\
+     2\
+     "
+   # Strings containing paths and regexps can be unquoted:
+   - /foo/bar
+   - d:/foo/bar
+   - foo/bar
+   - /a.*b/
+php: |
+   array( 12, '12', '12', '12', '12', '/foo/bar', 'd:/foo/bar', 'foo/bar', '/a.*b/' )
+---
+test: "Null"
+todo: true
+yaml: |
+   canonical: ~
+
+   english: null
+
+   # This sequence has five
+   # entries, two with values.
+   sparse:
+     - ~
+     - 2nd entry
+     - Null
+     - 4th entry
+     -
+
+   four: This mapping has five keys,
+         only two with values.
+
+php: |
+   array (
+     'canonical' => null,
+     'english' => null,
+     'sparse' => array( null, '2nd entry', null, '4th entry', null ]),
+     'four' => 'This mapping has five keys, only two with values.'
+   )
+---
+test: Omap
+todo: true
+yaml: |
+   # Explicitly typed dictionary.
+   Bestiary: !omap
+     - aardvark: African pig-like ant eater. Ugly.
+     - anteater: South-American ant eater. Two species.
+     - anaconda: South-American constrictor snake. Scary.
+     # Etc.
+ruby: |
+   {
+     'Bestiary' => YAML::Omap[
+       'aardvark', 'African pig-like ant eater. Ugly.',
+       'anteater', 'South-American ant eater. Two species.',
+       'anaconda', 'South-American constrictor snake. Scary.'
+     ]
+   }
+
+---
+test: Pairs
+todo: true
+yaml: |
+  # Explicitly typed pairs.
+  tasks: !pairs
+    - meeting: with team.
+    - meeting: with boss.
+    - break: lunch.
+    - meeting: with client.
+ruby: |
+  {
+    'tasks' => YAML::Pairs[
+      'meeting', 'with team.',
+      'meeting', 'with boss.',
+      'break', 'lunch.',
+      'meeting', 'with client.'
+    ]
+  }
+
+---
+test: Set
+todo: true
+yaml: |
+  # Explicitly typed set.
+  baseball players: !set
+    Mark McGwire:
+    Sammy Sosa:
+    Ken Griffey:
+ruby: |
+  {
+    'baseball players' => YAML::Set[
+      'Mark McGwire', nil,
+      'Sammy Sosa', nil,
+      'Ken Griffey', nil
+    ]
+  }
+
+---
+test: Boolean
+yaml: |
+   false: used as key
+   logical:  true
+   answer: false
+php: |
+   array(
+     false => 'used as key',
+     'logical' => true,
+     'answer' => false
+   )
+---
+test: Integer
+yaml: |
+   canonical: 12345
+   decimal: +12,345
+   octal: 014
+   hexadecimal: 0xC
+php: |
+   array(
+     'canonical' => 12345,
+     'decimal' => 12345,
+     'octal' => 12,
+     'hexadecimal' => 12
+   )
+---
+test: Float
+yaml: |
+   canonical: 1.23015e+3
+   exponential: 12.3015e+02
+   fixed: 1,230.15
+   negative infinity: -.inf
+   not a number: .NaN
+php: |
+  array(
+    'canonical' => 1230.15,
+    'exponential' => 1230.15,
+    'fixed' => 1230.15,
+    'negative infinity' => log(0),
+    'not a number' => -log(0)
+  )
+---
+test: Timestamp
+todo: true
+yaml: |
+   canonical:       2001-12-15T02:59:43.1Z
+   valid iso8601:   2001-12-14t21:59:43.10-05:00
+   space separated: 2001-12-14 21:59:43.10 -05:00
+   date (noon UTC): 2002-12-14
+ruby: |
+   array(
+     'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ),
+     'valid iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
+     'space separated' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
+     'date (noon UTC)' => Date.new( 2002, 12, 14 )
+   )
+---
+test: Binary
+todo: true
+yaml: |
+   canonical: !binary "\
+    R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\
+    OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\
+    +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\
+    AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="
+   base64: !binary |
+    R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
+    OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
+    +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC
+    AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=
+   description: >
+    The binary value above is a tiny arrow
+    encoded as a gif image.
+ruby-setup: |
+   arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005,  \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;"
+ruby: |
+   {
+     'canonical' => arrow_gif,
+     'base64' => arrow_gif,
+     'description' => "The binary value above is a tiny arrow encoded as a gif image.\n"
+   }
+
+---
+test: Merge key
+todo: true
+yaml: |
+  ---
+  - &CENTER { x: 1, y: 2 }
+  - &LEFT { x: 0, y: 2 }
+  - &BIG { r: 10 }
+  - &SMALL { r: 1 }
+
+  # All the following maps are equal:
+
+  - # Explicit keys
+    x: 1
+    y: 2
+    r: 10
+    label: center/big
+
+  - # Merge one map
+    << : *CENTER
+    r: 10
+    label: center/big
+
+  - # Merge multiple maps
+    << : [ *CENTER, *BIG ]
+    label: center/big
+
+  - # Override
+    << : [ *BIG, *LEFT, *SMALL ]
+    x: 1
+    label: center/big
+
+ruby-setup: |
+  center = { 'x' => 1, 'y' => 2 }
+  left = { 'x' => 0, 'y' => 2 }
+  big = { 'r' => 10 }
+  small = { 'r' => 1 }
+  node1 = { 'x' => 1, 'y' => 2, 'r' => 10, 'label' => 'center/big' }
+  node2 = center.dup
+  node2.update( { 'r' => 10, 'label' => 'center/big' } )
+  node3 = big.dup
+  node3.update( center )
+  node3.update( { 'label' => 'center/big' } )
+  node4 = small.dup
+  node4.update( left )
+  node4.update( big )
+  node4.update( { 'x' => 1, 'label' => 'center/big' } )
+
+ruby: |
+  [
+    center, left, big, small, node1, node2, node3, node4
+  ]
+
+---
+test: Default key
+todo: true
+yaml: |
+   ---     # Old schema
+   link with:
+     - library1.dll
+     - library2.dll
+   ---     # New schema
+   link with:
+     - = : library1.dll
+       version: 1.2
+     - = : library2.dll
+       version: 2.3
+ruby: |
+   y = YAML::Stream.new
+   y.add( { 'link with' => [ 'library1.dll', 'library2.dll' ] } )
+   obj_h = Hash[ 'version' => 1.2 ]
+   obj_h.default = 'library1.dll'
+   obj_h2 = Hash[ 'version' => 2.3 ]
+   obj_h2.default = 'library2.dll'
+   y.add( { 'link with' => [ obj_h, obj_h2 ] } )
+documents: 2
+
+---
+test: Special keys
+todo: true
+yaml: |
+   "!": These three keys
+   "&": had to be quoted
+   "=": and are normal strings.
+   # NOTE: the following node should NOT be serialized this way.
+   encoded node :
+    !special '!' : '!type'
+    !special|canonical '&' : 12
+    = : value
+   # The proper way to serialize the above node is as follows:
+   node : !!type &12 value
+ruby: |
+   { '!' => 'These three keys', '&' => 'had to be quoted',
+     '=' => 'and are normal strings.',
+     'encoded node' => YAML::PrivateType.new( 'type', 'value' ),
+     'node' => YAML::PrivateType.new( 'type', 'value' ) }
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml
new file mode 100644
index 0000000..aac4e68
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml
@@ -0,0 +1,244 @@
+--- %YAML:1.0
+test: Strings
+brief: >
+    Any group of characters beginning with an
+    alphabetic or numeric character is a string,
+    unless it belongs to one of the groups below
+    (such as an Integer or Time).
+yaml: |
+    String
+php: |
+    'String'
+---
+test: String characters
+brief: >
+    A string can contain any alphabetic or
+    numeric character, along with many
+    punctuation characters, including the
+    period, dash, space, quotes, exclamation, and
+    question mark.
+yaml: |
+    - What's Yaml?
+    - It's for writing data structures in plain text.
+    - And?
+    - And what? That's not good enough for you?
+    - No, I mean, "And what about Yaml?"
+    - Oh, oh yeah. Uh.. Yaml for Ruby.
+php: |
+    array(
+      "What's Yaml?",
+      "It's for writing data structures in plain text.",
+      "And?",
+      "And what? That's not good enough for you?",
+      "No, I mean, \"And what about Yaml?\"",
+      "Oh, oh yeah. Uh.. Yaml for Ruby."
+    )
+---
+test: Indicators in Strings
+brief: >
+    Be careful using indicators in strings.  In particular,
+    the comma, colon, and pound sign must be used carefully.
+yaml: |
+    the colon followed by space is an indicator: but is a string:right here
+    same for the pound sign: here we have it#in a string
+    the comma can, honestly, be used in most cases: [ but not in, inline collections ]
+php: |
+    array(
+      'the colon followed by space is an indicator' => 'but is a string:right here',
+      'same for the pound sign' => 'here we have it#in a string',
+      'the comma can, honestly, be used in most cases' => array('but not in', 'inline collections')
+    )
+---
+test: Forcing Strings
+brief: >
+    Any YAML type can be forced into a string using the
+    explicit !str method.
+yaml: |
+    date string: !str 2001-08-01
+    number string: !str 192
+php: |
+    array(
+      'date string' => '2001-08-01',
+      'number string' => '192'
+    )
+---
+test: Single-quoted Strings
+brief: >
+    You can also enclose your strings within single quotes,
+    which allows use of slashes, colons, and other indicators
+    freely.  Inside single quotes, you can represent a single
+    quote in your string by using two single quotes next to
+    each other.
+yaml: |
+    all my favorite symbols: '#:!/%.)'
+    a few i hate: '&(*'
+    why do i hate them?: 'it''s very hard to explain'
+    entities: '&pound; me'
+php: |
+    array(
+      'all my favorite symbols' => '#:!/%.)',
+      'a few i hate' => '&(*',
+      'why do i hate them?' => 'it\'s very hard to explain',
+      'entities' => '&pound; me'
+    )
+---
+test: Double-quoted Strings
+brief: >
+    Enclosing strings in double quotes allows you
+    to use escapings to represent ASCII and
+    Unicode characters.
+yaml: |
+    i know where i want my line breaks: "one here\nand another here\n"
+php: |
+    array(
+      'i know where i want my line breaks' => "one here\nand another here\n"
+    )
+---
+test: Multi-line Quoted Strings
+todo: true
+brief: >
+    Both single- and double-quoted strings may be
+    carried on to new lines in your YAML document.
+    They must be indented a step and indentation
+    is interpreted as a single space.
+yaml: |
+    i want a long string: "so i'm going to
+      let it go on and on to other lines
+      until i end it with a quote."
+php: |
+    array('i want a long string' => "so i'm going to ".
+         "let it go on and on to other lines ".
+         "until i end it with a quote."
+    )
+
+---
+test: Plain scalars
+todo: true
+brief: >
+    Unquoted strings may also span multiple lines, if they
+    are free of YAML space indicators and indented.
+yaml: |
+    - My little toe is broken in two places;
+    - I'm crazy to have skied this way;
+    - I'm not the craziest he's seen, since there was always the German guy
+      who skied for 3 hours on a broken shin bone (just below the kneecap);
+    - Nevertheless, second place is respectable, and he doesn't
+      recommend going for the record;
+    - He's going to put my foot in plaster for a month;
+    - This would impair my skiing ability somewhat for the
+      duration, as can be imagined.
+php: |
+    array(
+      "My little toe is broken in two places;",
+      "I'm crazy to have skied this way;",
+      "I'm not the craziest he's seen, since there was always ".
+         "the German guy who skied for 3 hours on a broken shin ".
+         "bone (just below the kneecap);",
+      "Nevertheless, second place is respectable, and he doesn't ".
+         "recommend going for the record;",
+      "He's going to put my foot in plaster for a month;",
+      "This would impair my skiing ability somewhat for the duration, ".
+         "as can be imagined."
+    )
+---
+test: 'Null'
+brief: >
+    You can use the tilde '~' character for a null value.
+yaml: |
+    name: Mr. Show
+    hosted by: Bob and David
+    date of next season: ~
+php: |
+    array(
+      'name' => 'Mr. Show',
+      'hosted by' => 'Bob and David',
+      'date of next season' => null
+    )
+---
+test: Boolean
+brief: >
+    You can use 'true' and 'false' for Boolean values.
+yaml: |
+    Is Gus a Liar?: true
+    Do I rely on Gus for Sustenance?: false
+php: |
+    array(
+      'Is Gus a Liar?' => true,
+      'Do I rely on Gus for Sustenance?' => false
+    )
+---
+test: Integers
+dump_skip: true
+brief: >
+    An integer is a series of numbers, optionally
+    starting with a positive or negative sign.  Integers
+    may also contain commas for readability.
+yaml: |
+    zero: 0
+    simple: 12
+    one-thousand: 1,000
+    negative one-thousand: -1,000
+php: |
+    array(
+      'zero' => 0,
+      'simple' => 12,
+      'one-thousand' => 1000,
+      'negative one-thousand' => -1000
+    )
+---
+test: Integers as Map Keys
+brief: >
+    An integer can be used a dictionary key.
+yaml: |
+    1: one
+    2: two
+    3: three
+php: |
+    array(
+        1 => 'one',
+        2 => 'two',
+        3 => 'three'
+    )
+---
+test: Floats
+dump_skip: true
+brief: >
+     Floats are represented by numbers with decimals,
+     allowing for scientific notation, as well as
+     positive and negative infinity and "not a number."
+yaml: |
+     a simple float: 2.00
+     larger float: 1,000.09
+     scientific notation: 1.00009e+3
+php: |
+     array(
+       'a simple float' => 2.0,
+       'larger float' => 1000.09,
+       'scientific notation' => 1000.09
+     )
+---
+test: Time
+todo: true
+brief: >
+    You can represent timestamps by using
+    ISO8601 format, or a variation which
+    allows spaces between the date, time and
+    time zone.
+yaml: |
+    iso8601: 2001-12-14t21:59:43.10-05:00
+    space separated: 2001-12-14 21:59:43.10 -05:00
+php: |
+    array(
+      'iso8601' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ),
+      'space separated' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" )
+    )
+---
+test: Date
+todo: true
+brief: >
+    A date can be represented by its year,
+    month and day in ISO8601 order.
+yaml: |
+    1976-07-31
+php: |
+    date( 1976, 7, 31 )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml
new file mode 100644
index 0000000..ec456ed
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml
@@ -0,0 +1 @@
+value: <?php echo 1 + 2 + 3 ?>
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml
new file mode 100644
index 0000000..09bf86e
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml
@@ -0,0 +1,147 @@
+test: outside double quotes
+yaml: |
+    \0 \ \a \b \n
+php: |
+    "\\0 \\ \\a \\b \\n"
+---
+test: null
+yaml: |
+    "\0"
+php: |
+    "\x00"
+---
+test: bell
+yaml: |
+    "\a"
+php: |
+    "\x07"
+---
+test: backspace
+yaml: |
+    "\b"
+php: |
+    "\x08"
+---
+test: horizontal tab (1)
+yaml: |
+    "\t"
+php: |
+    "\x09"
+---
+test: horizontal tab (2)
+yaml: |
+    "\	"
+php: |
+    "\x09"
+---
+test: line feed
+yaml: |
+    "\n"
+php: |
+    "\x0a"
+---
+test: vertical tab
+yaml: |
+    "\v"
+php: |
+    "\x0b"
+---
+test: form feed
+yaml: |
+    "\f"
+php: |
+    "\x0c"
+---
+test: carriage return
+yaml: |
+    "\r"
+php: |
+    "\x0d"
+---
+test: escape
+yaml: |
+    "\e"
+php: |
+   "\x1b"
+---
+test: space
+yaml: |
+    "\ "
+php: |
+    "\x20"
+---
+test: slash
+yaml: |
+    "\/"
+php: |
+    "\x2f"
+---
+test: backslash
+yaml: |
+    "\\"
+php: |
+    "\\"
+---
+test: Unicode next line
+yaml: |
+    "\N"
+php: |
+    "\xc2\x85"
+---
+test: Unicode non-breaking space
+yaml: |
+    "\_"
+php: |
+    "\xc2\xa0"
+---
+test: Unicode line separator
+yaml: |
+    "\L"
+php: |
+    "\xe2\x80\xa8"
+---
+test: Unicode paragraph separator
+yaml: |
+    "\P"
+php: |
+    "\xe2\x80\xa9"
+---
+test: Escaped 8-bit Unicode
+yaml: |
+    "\x42"
+php: |
+    "B"
+---
+test: Escaped 16-bit Unicode
+yaml: |
+    "\u20ac"
+php: |
+    "\xe2\x82\xac"
+---
+test: Escaped 32-bit Unicode
+yaml: |
+    "\U00000043"
+php: |
+    "C"
+---
+test: Example 5.13 Escaped Characters
+note: |
+    Currently throws an error parsing first line. Maybe Symfony Yaml doesn't support
+    continuation of string across multiple lines? Keeping test here but disabled.
+todo: true
+yaml: |
+    "Fun with \\
+    \" \a \b \e \f \
+    \n \r \t \v \0 \
+    \  \_ \N \L \P \
+    \x41 \u0041 \U00000041"
+php: |
+    "Fun with \x5C\n\x22 \x07 \x08 \x1B \x0C\n\x0A \x0D \x09 \x0B \x00\n\x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9\nA A A"
+---
+test: Double quotes with a line feed
+yaml: |
+   { double: "some value\n \"some quoted string\" and 'some single quotes one'" }
+php: |
+    array(
+        'double' => "some value\n \"some quoted string\" and 'some single quotes one'"
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/index.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/index.yml
new file mode 100644
index 0000000..3216a89
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/index.yml
@@ -0,0 +1,18 @@
+- escapedCharacters
+- sfComments
+- sfCompact
+- sfTests
+- sfObjects
+- sfMergeKey
+- sfQuotes
+- YtsAnchorAlias
+- YtsBasicTests
+- YtsBlockMapping
+- YtsDocumentSeparator
+- YtsErrorTests
+- YtsFlowCollections
+- YtsFoldedScalars
+- YtsNullsAndEmpties
+- YtsSpecificationExamples
+- YtsTypeTransfers
+- unindentedCollections
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml
new file mode 100644
index 0000000..6a7ffec
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml
@@ -0,0 +1,73 @@
+--- %YAML:1.0
+test: Comments at the end of a line
+brief: >
+    Comments at the end of a line
+yaml: |
+    ex1: "foo # bar"
+    ex2: "foo # bar" # comment
+    ex3: 'foo # bar' # comment
+    ex4: foo # comment
+php: |
+    array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo')
+---
+test: Comments in the middle
+brief: >
+  Comments in the middle
+yaml: |
+    foo:
+    # some comment
+    # some comment
+      bar: foo
+    # some comment
+    # some comment
+php: |
+    array('foo' => array('bar' => 'foo'))
+---
+test: Comments on a hash line
+brief: >
+  Comments on a hash line
+yaml: |
+    foo:   # a comment
+      foo: bar # a comment
+php: |
+    array('foo' => array('foo' => 'bar'))
+---
+test: 'Value starting with a #'
+brief: >
+  'Value starting with a #'
+yaml: |
+    foo:   '#bar'
+php: |
+    array('foo' => '#bar')
+---
+test: Document starting with a comment and a separator
+brief: >
+  Commenting before document start is allowed
+yaml: |
+    # document comment
+    ---
+    foo: bar # a comment
+php: |
+    array('foo' => 'bar')
+---
+test: Comment containing a colon on a hash line
+brief: >
+    Comment containing a colon on a scalar line
+yaml: 'foo # comment: this is also part of the comment'
+php: |
+    'foo'
+---
+test: 'Hash key containing a #'
+brief: >
+    'Hash key containing a #'
+yaml: 'foo#bar: baz'
+php: |
+    array('foo#bar' => 'baz')
+---
+test: 'Hash key ending with a space and a #'
+brief: >
+    'Hash key ending with a space and a #'
+yaml: |
+    'foo #': baz
+php: |
+    array('foo #' => 'baz')
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml
new file mode 100644
index 0000000..1339d23
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml
@@ -0,0 +1,159 @@
+--- %YAML:1.0
+test: Compact notation
+brief: |
+    Compact notation for sets of mappings with single element
+yaml: |
+  ---
+  # products purchased
+  - item    : Super Hoop
+  - item    : Basketball
+    quantity: 1
+  - item:
+      name: Big Shoes
+      nick: Biggies
+    quantity: 1
+php: |
+  array (
+    array (
+      'item' => 'Super Hoop',
+    ),
+    array (
+      'item' => 'Basketball',
+      'quantity' => 1,
+    ),
+    array (
+      'item' => array(
+        'name' => 'Big Shoes',
+        'nick' => 'Biggies'
+      ),
+      'quantity' => 1
+    )
+  )
+---
+test: Compact notation combined with inline notation
+brief: |
+    Combinations of compact and inline notation are allowed
+yaml: |
+  ---
+  items:
+    - { item: Super Hoop, quantity: 1 }
+    - [ Basketball, Big Shoes ]
+php: |
+  array (
+    'items' => array (
+      array (
+        'item' => 'Super Hoop',
+        'quantity' => 1,
+      ),
+      array (
+        'Basketball',
+        'Big Shoes'
+      )
+    )
+  )
+--- %YAML:1.0
+test: Compact notation
+brief: |
+    Compact notation for sets of mappings with single element
+yaml: |
+  ---
+  # products purchased
+  - item    : Super Hoop
+  - item    : Basketball
+    quantity: 1
+  - item:
+      name: Big Shoes
+      nick: Biggies
+    quantity: 1
+php: |
+  array (
+    array (
+      'item' => 'Super Hoop',
+    ),
+    array (
+      'item' => 'Basketball',
+      'quantity' => 1,
+    ),
+    array (
+      'item' => array(
+        'name' => 'Big Shoes',
+        'nick' => 'Biggies'
+      ),
+      'quantity' => 1
+    )
+  )
+---
+test: Compact notation combined with inline notation
+brief: |
+    Combinations of compact and inline notation are allowed
+yaml: |
+  ---
+  items:
+    - { item: Super Hoop, quantity: 1 }
+    - [ Basketball, Big Shoes ]
+php: |
+  array (
+    'items' => array (
+      array (
+        'item' => 'Super Hoop',
+        'quantity' => 1,
+      ),
+      array (
+        'Basketball',
+        'Big Shoes'
+      )
+    )
+  )
+--- %YAML:1.0
+test: Compact notation
+brief: |
+    Compact notation for sets of mappings with single element
+yaml: |
+  ---
+  # products purchased
+  - item    : Super Hoop
+  - item    : Basketball
+    quantity: 1
+  - item:
+      name: Big Shoes
+      nick: Biggies
+    quantity: 1
+php: |
+  array (
+    array (
+      'item' => 'Super Hoop',
+    ),
+    array (
+      'item' => 'Basketball',
+      'quantity' => 1,
+    ),
+    array (
+      'item' => array(
+        'name' => 'Big Shoes',
+        'nick' => 'Biggies'
+      ),
+      'quantity' => 1
+    )
+  )
+---
+test: Compact notation combined with inline notation
+brief: |
+    Combinations of compact and inline notation are allowed
+yaml: |
+  ---
+  items:
+    - { item: Super Hoop, quantity: 1 }
+    - [ Basketball, Big Shoes ]
+php: |
+  array (
+    'items' => array (
+      array (
+        'item' => 'Super Hoop',
+        'quantity' => 1,
+      ),
+      array (
+        'Basketball',
+        'Big Shoes'
+      )
+    )
+  )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml
new file mode 100644
index 0000000..fd99101
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml
@@ -0,0 +1,45 @@
+--- %YAML:1.0
+test: Simple In Place Substitution
+brief: >
+    If you want to reuse an entire alias, only overwriting what is different
+    you can use a << in place substitution. This is not part of the official
+    YAML spec, but a widely implemented extension. See the following URL for
+    details: http://yaml.org/type/merge.html
+yaml: |
+    foo: &foo
+        a: Steve
+        b: Clark
+        c: Brian
+    bar:
+        a: before
+        d: other
+        <<: *foo
+        b: new
+        x: Oren
+        c:
+            foo: bar
+            foo: ignore
+            bar: foo
+    duplicate:
+        foo: bar
+        foo: ignore
+    foo2: &foo2
+        a: Ballmer
+    ding: &dong [ fi, fei, fo, fam]
+    check:
+        <<:
+            - *foo
+            - *dong
+        isit: tested
+    head:
+        <<: [ *foo , *dong , *foo2 ]
+php: |
+    array(
+        'foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian'),
+        'bar' => array('a' => 'before', 'd' => 'other', 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'x' => 'Oren'),
+        'duplicate' => array('foo' => 'bar'),
+        'foo2' => array('a' => 'Ballmer'),
+        'ding' => array('fi', 'fei', 'fo', 'fam'),
+        'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'),
+        'head' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'fi', 'fei', 'fo', 'fam')
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml
new file mode 100644
index 0000000..ee124b2
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml
@@ -0,0 +1,11 @@
+--- %YAML:1.0
+test: Objects
+brief: >
+    Comments at the end of a line
+yaml: |
+    ex1: "foo # bar"
+    ex2: "foo # bar" # comment
+    ex3: 'foo # bar' # comment
+    ex4: foo # comment
+php: |
+    array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo')
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml
new file mode 100644
index 0000000..741f1be
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml
@@ -0,0 +1,33 @@
+--- %YAML:1.0
+test: Some characters at the beginning of a string must be escaped
+brief: >
+    Some characters at the beginning of a string must be escaped
+yaml: |
+    foo: | bar
+php: |
+    array('foo' => '| bar')
+---
+test: A key can be a quoted string
+brief: >
+  A key can be a quoted string
+yaml: |
+    "foo1": bar
+    'foo2': bar
+    "foo \" bar": bar
+    'foo '' bar': bar
+    'foo3: ': bar
+    "foo4: ": bar
+    foo5: { "foo \" bar: ": bar, 'foo '' bar: ': bar }
+php: |
+    array(
+      'foo1' => 'bar',
+      'foo2' => 'bar',
+      'foo " bar' => 'bar',
+      'foo \' bar' => 'bar',
+      'foo3: ' => 'bar',
+      'foo4: ' => 'bar',
+      'foo5' => array(
+        'foo " bar: ' => 'bar',
+        'foo \' bar: ' => 'bar',
+      ),
+    )
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml
new file mode 100644
index 0000000..7a54f16
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml
@@ -0,0 +1,135 @@
+--- %YAML:1.0
+test: Multiple quoted string on one line
+brief: >
+    Multiple quoted string on one line
+yaml: |
+    stripped_title: { name: "foo bar", help: "bar foo" }
+php: |
+    array('stripped_title' => array('name' => 'foo bar', 'help' => 'bar foo'))
+---
+test: Empty sequence
+yaml: |
+    foo: [ ]
+php: |
+    array('foo' => array())
+---
+test: Empty value
+yaml: |
+    foo:
+php: |
+    array('foo' => null)
+---
+test: Inline string parsing
+brief: >
+    Inline string parsing
+yaml: |
+    test: ['complex: string', 'another [string]']
+php: |
+    array('test' => array('complex: string', 'another [string]'))
+---
+test: Boolean
+brief: >
+    Boolean
+yaml: |
+    - false
+    - true
+    - null
+    - ~
+    - 'false'
+    - 'true'
+    - 'null'
+    - '~'
+php: |
+    array(
+      false,
+      true,
+      null,
+      null,
+      'false',
+      'true',
+      'null',
+      '~',
+    )
+---
+test: Empty lines in folded blocks
+brief: >
+  Empty lines in folded blocks
+yaml: |
+  foo:
+    bar: |
+      foo
+
+
+        
+      bar
+php: |
+  array('foo' => array('bar' => "foo\n\n\n  \nbar\n"))
+---
+test: IP addresses
+brief: >
+  IP addresses
+yaml: |
+  foo: 10.0.0.2
+php: |
+  array('foo' => '10.0.0.2')
+---
+test: A sequence with an embedded mapping
+brief: >
+  A sequence with an embedded mapping
+yaml: |
+  - foo
+  - bar: { bar: foo }
+php: |
+  array('foo', array('bar' => array('bar' => 'foo')))
+---
+test: A sequence with an unordered array
+brief: >
+  A sequence with an unordered array
+yaml: |
+  1: foo
+  0: bar
+php: |
+  array(1 => 'foo', 0 => 'bar')
+---
+test: Octal
+brief: as in spec example 2.19, octal value is converted
+yaml: |
+  foo: 0123
+php: |
+  array('foo' => 83)
+---
+test: Octal strings
+brief: Octal notation in a string must remain a string
+yaml: |
+  foo: "0123"
+php: |
+  array('foo' => '0123')
+---
+test: Octal strings
+brief: Octal notation in a string must remain a string
+yaml: |
+  foo: '0123'
+php: |
+  array('foo' => '0123')
+---
+test: Octal strings
+brief: Octal notation in a string must remain a string
+yaml: |
+  foo: |
+    0123
+php: |
+  array('foo' => "0123\n")
+---
+test: Document as a simple hash
+brief: Document as a simple hash
+yaml: |
+  { foo: bar }
+php: |
+  array('foo' => 'bar')
+---
+test: Document as a simple array
+brief: Document as a simple array
+yaml: |
+  [ foo, bar ]
+php: |
+  array('foo', 'bar')
diff --git a/currency/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml b/currency/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml
new file mode 100644
index 0000000..0c96108
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml
@@ -0,0 +1,82 @@
+--- %YAML:1.0
+test: Unindented collection
+brief: >
+    Unindented collection
+yaml: |
+    collection:
+    - item1
+    - item2
+    - item3
+php: |
+    array('collection' => array('item1', 'item2', 'item3'))
+---
+test: Nested unindented collection (two levels)
+brief: >
+    Nested unindented collection
+yaml: |
+    collection:
+        key:
+        - a
+        - b
+        - c
+php: |
+    array('collection' => array('key' => array('a', 'b', 'c')))
+---
+test: Nested unindented collection (three levels)
+brief: >
+    Nested unindented collection
+yaml: |
+    collection:
+        key:
+            subkey:
+            - one
+            - two
+            - three
+php: |
+    array('collection' => array('key' => array('subkey' => array('one', 'two', 'three'))))
+---
+test: Key/value after unindented collection (1)
+brief: >
+    Key/value after unindented collection (1)
+yaml: |
+    collection:
+        key:
+        - a
+        - b
+        - c
+    foo: bar
+php: |
+    array('collection' => array('key' => array('a', 'b', 'c')), 'foo' => 'bar')
+---
+test: Key/value after unindented collection (at the same level)
+brief: >
+    Key/value after unindented collection
+yaml: |
+    collection:
+        key:
+        - a
+        - b
+        - c
+        foo: bar
+php: |
+    array('collection' => array('key' => array('a', 'b', 'c'), 'foo' => 'bar'))
+---
+test: Shortcut Key after unindented collection
+brief: >
+    Key/value after unindented collection
+yaml: |
+    collection:
+    - key: foo
+      foo: bar
+php: |
+    array('collection' => array(array('key' => 'foo', 'foo' => 'bar')))
+---
+test: Shortcut Key after unindented collection with custom spaces
+brief: >
+    Key/value after unindented collection
+yaml: |
+    collection:
+    -  key: foo
+       foo: bar
+php: |
+    array('collection' => array(array('key' => 'foo', 'foo' => 'bar')))
diff --git a/currency/vendor/symfony/yaml/Tests/InlineTest.php b/currency/vendor/symfony/yaml/Tests/InlineTest.php
new file mode 100644
index 0000000..0776e4f
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/InlineTest.php
@@ -0,0 +1,384 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Tests;
+
+use Symfony\Component\Yaml\Inline;
+
+class InlineTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @dataProvider getTestsForParse
+     */
+    public function testParse($yaml, $value)
+    {
+        $this->assertSame($value, Inline::parse($yaml), sprintf('::parse() converts an inline YAML to a PHP structure (%s)', $yaml));
+    }
+
+    /**
+     * @dataProvider getTestsForParseWithMapObjects
+     */
+    public function testParseWithMapObjects($yaml, $value)
+    {
+        $actual = Inline::parse($yaml, false, false, true);
+
+        $this->assertSame(serialize($value), serialize($actual));
+    }
+
+    /**
+     * @dataProvider getTestsForDump
+     */
+    public function testDump($yaml, $value)
+    {
+        $this->assertEquals($yaml, Inline::dump($value), sprintf('::dump() converts a PHP structure to an inline YAML (%s)', $yaml));
+
+        $this->assertSame($value, Inline::parse(Inline::dump($value)), 'check consistency');
+    }
+
+    public function testDumpNumericValueWithLocale()
+    {
+        $locale = setlocale(LC_NUMERIC, 0);
+        if (false === $locale) {
+            $this->markTestSkipped('Your platform does not support locales.');
+        }
+
+        try {
+            $requiredLocales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252');
+            if (false === setlocale(LC_NUMERIC, $requiredLocales)) {
+                $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $requiredLocales));
+            }
+
+            $this->assertEquals('1.2', Inline::dump(1.2));
+            $this->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0)));
+            setlocale(LC_NUMERIC, $locale);
+        } catch (\Exception $e) {
+            setlocale(LC_NUMERIC, $locale);
+            throw $e;
+        }
+    }
+
+    public function testHashStringsResemblingExponentialNumericsShouldNotBeChangedToINF()
+    {
+        $value = '686e444';
+
+        $this->assertSame($value, Inline::parse(Inline::dump($value)));
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testParseScalarWithIncorrectlyQuotedStringShouldThrowException()
+    {
+        $value = "'don't do somthin' like that'";
+        Inline::parse($value);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testParseScalarWithIncorrectlyDoubleQuotedStringShouldThrowException()
+    {
+        $value = '"don"t do somthin" like that"';
+        Inline::parse($value);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testParseInvalidMappingKeyShouldThrowException()
+    {
+        $value = '{ "foo " bar": "bar" }';
+        Inline::parse($value);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testParseInvalidMappingShouldThrowException()
+    {
+        Inline::parse('[foo] bar');
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testParseInvalidSequenceShouldThrowException()
+    {
+        Inline::parse('{ foo: bar } bar');
+    }
+
+    public function testParseScalarWithCorrectlyQuotedStringShouldReturnString()
+    {
+        $value = "'don''t do somthin'' like that'";
+        $expect = "don't do somthin' like that";
+
+        $this->assertSame($expect, Inline::parseScalar($value));
+    }
+
+    /**
+     * @dataProvider getDataForParseReferences
+     */
+    public function testParseReferences($yaml, $expected)
+    {
+        $this->assertSame($expected, Inline::parse($yaml, false, false, false, array('var' => 'var-value')));
+    }
+
+    public function getDataForParseReferences()
+    {
+        return array(
+            'scalar' => array('*var', 'var-value'),
+            'list' => array('[ *var ]', array('var-value')),
+            'list-in-list' => array('[[ *var ]]', array(array('var-value'))),
+            'map-in-list' => array('[ { key: *var } ]', array(array('key' => 'var-value'))),
+            'embedded-mapping-in-list' => array('[ key: *var ]', array(array('key' => 'var-value'))),
+            'map' => array('{ key: *var }', array('key' => 'var-value')),
+            'list-in-map' => array('{ key: [*var] }', array('key' => array('var-value'))),
+            'map-in-map' => array('{ foo: { bar: *var } }', array('foo' => array('bar' => 'var-value'))),
+        );
+    }
+
+    public function testParseMapReferenceInSequence()
+    {
+        $foo = array(
+            'a' => 'Steve',
+            'b' => 'Clark',
+            'c' => 'Brian',
+        );
+        $this->assertSame(array($foo), Inline::parse('[*foo]', false, false, false, array('foo' => $foo)));
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     * @expectedExceptionMessage A reference must contain at least one character.
+     */
+    public function testParseUnquotedAsterisk()
+    {
+        Inline::parse('{ foo: * }');
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     * @expectedExceptionMessage A reference must contain at least one character.
+     */
+    public function testParseUnquotedAsteriskFollowedByAComment()
+    {
+        Inline::parse('{ foo: * #foo }');
+    }
+
+    public function getTestsForParse()
+    {
+        return array(
+            array('', ''),
+            array('null', null),
+            array('false', false),
+            array('true', true),
+            array('12', 12),
+            array('-12', -12),
+            array('"quoted string"', 'quoted string'),
+            array("'quoted string'", 'quoted string'),
+            array('12.30e+02', 12.30e+02),
+            array('0x4D2', 0x4D2),
+            array('02333', 02333),
+            array('.Inf', -log(0)),
+            array('-.Inf', log(0)),
+            array("'686e444'", '686e444'),
+            array('686e444', 646e444),
+            array('123456789123456789123456789123456789', '123456789123456789123456789123456789'),
+            array('"foo\r\nbar"', "foo\r\nbar"),
+            array("'foo#bar'", 'foo#bar'),
+            array("'foo # bar'", 'foo # bar'),
+            array("'#cfcfcf'", '#cfcfcf'),
+            array('::form_base.html.twig', '::form_base.html.twig'),
+
+            // Pre-YAML-1.2 booleans
+            array("'y'", 'y'),
+            array("'n'", 'n'),
+            array("'yes'", 'yes'),
+            array("'no'", 'no'),
+            array("'on'", 'on'),
+            array("'off'", 'off'),
+
+            array('2007-10-30', mktime(0, 0, 0, 10, 30, 2007)),
+            array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)),
+            array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)),
+            array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)),
+            array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)),
+
+            array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''),
+            array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''),
+
+            // sequences
+            // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon
+            array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)),
+            array('[  foo  ,   bar , false  ,  null     ,  12  ]', array('foo', 'bar', false, null, 12)),
+            array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')),
+
+            // mappings
+            array('{foo:bar,bar:foo,false:false,null:null,integer:12}', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)),
+            array('{ foo  : bar, bar : foo,  false  :   false,  null  :   null,  integer :  12  }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)),
+            array('{foo: \'bar\', bar: \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')),
+            array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')),
+            array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', array('foo\'' => 'bar', 'bar"' => 'foo: bar')),
+            array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', array('foo: ' => 'bar', 'bar: ' => 'foo: bar')),
+
+            // nested sequences and mappings
+            array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))),
+            array('[foo, {bar: foo}]', array('foo', array('bar' => 'foo'))),
+            array('{ foo: {bar: foo} }', array('foo' => array('bar' => 'foo'))),
+            array('{ foo: [bar, foo] }', array('foo' => array('bar', 'foo'))),
+
+            array('[  foo, [  bar, foo  ]  ]', array('foo', array('bar', 'foo'))),
+
+            array('[{ foo: {bar: foo} }]', array(array('foo' => array('bar' => 'foo')))),
+
+            array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))),
+
+            array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))),
+
+            array('[foo, bar: { foo: bar }]', array('foo', '1' => array('bar' => array('foo' => 'bar')))),
+            array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')),
+        );
+    }
+
+    public function getTestsForParseWithMapObjects()
+    {
+        return array(
+            array('', ''),
+            array('null', null),
+            array('false', false),
+            array('true', true),
+            array('12', 12),
+            array('-12', -12),
+            array('"quoted string"', 'quoted string'),
+            array("'quoted string'", 'quoted string'),
+            array('12.30e+02', 12.30e+02),
+            array('0x4D2', 0x4D2),
+            array('02333', 02333),
+            array('.Inf', -log(0)),
+            array('-.Inf', log(0)),
+            array("'686e444'", '686e444'),
+            array('686e444', 646e444),
+            array('123456789123456789123456789123456789', '123456789123456789123456789123456789'),
+            array('"foo\r\nbar"', "foo\r\nbar"),
+            array("'foo#bar'", 'foo#bar'),
+            array("'foo # bar'", 'foo # bar'),
+            array("'#cfcfcf'", '#cfcfcf'),
+            array('::form_base.html.twig', '::form_base.html.twig'),
+
+            array('2007-10-30', mktime(0, 0, 0, 10, 30, 2007)),
+            array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)),
+            array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)),
+            array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)),
+            array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)),
+
+            array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''),
+            array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''),
+
+            // sequences
+            // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon
+            array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)),
+            array('[  foo  ,   bar , false  ,  null     ,  12  ]', array('foo', 'bar', false, null, 12)),
+            array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')),
+
+            // mappings
+            array('{foo:bar,bar:foo,false:false,null:null,integer:12}', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)),
+            array('{ foo  : bar, bar : foo,  false  :   false,  null  :   null,  integer :  12  }', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)),
+            array('{foo: \'bar\', bar: \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')),
+            array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')),
+            array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', (object) array('foo\'' => 'bar', "bar\"" => 'foo: bar')),
+            array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', (object) array('foo: ' => 'bar', "bar: " => 'foo: bar')),
+
+            // nested sequences and mappings
+            array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))),
+            array('[foo, {bar: foo}]', array('foo', (object) array('bar' => 'foo'))),
+            array('{ foo: {bar: foo} }', (object) array('foo' => (object) array('bar' => 'foo'))),
+            array('{ foo: [bar, foo] }', (object) array('foo' => array('bar', 'foo'))),
+
+            array('[  foo, [  bar, foo  ]  ]', array('foo', array('bar', 'foo'))),
+
+            array('[{ foo: {bar: foo} }]', array((object) array('foo' => (object) array('bar' => 'foo')))),
+
+            array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))),
+
+            array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', (object) array('bar' => 'foo', 'foo' => array('foo', (object) array('bar' => 'foo'))), array('foo', (object) array('bar' => 'foo')))),
+
+            array('[foo, bar: { foo: bar }]', array('foo', '1' => (object) array('bar' => (object) array('foo' => 'bar')))),
+            array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', (object) array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')),
+
+            array('{}', new \stdClass()),
+            array('{ foo  : bar, bar : {}  }', (object) array('foo' => 'bar', 'bar' => new \stdClass())),
+            array('{ foo  : [], bar : {}  }', (object) array('foo' => array(), 'bar' => new \stdClass())),
+            array('{foo: \'bar\', bar: {} }', (object) array('foo' => 'bar', 'bar' => new \stdClass())),
+            array('{\'foo\': \'bar\', "bar": {}}', (object) array('foo' => 'bar', 'bar' => new \stdClass())),
+            array('{\'foo\': \'bar\', "bar": \'{}\'}', (object) array('foo' => 'bar', 'bar' => '{}')),
+
+            array('[foo, [{}, {}]]', array('foo', array(new \stdClass(), new \stdClass()))),
+            array('[foo, [[], {}]]', array('foo', array(array(), new \stdClass()))),
+            array('[foo, [[{}, {}], {}]]', array('foo', array(array(new \stdClass(), new \stdClass()), new \stdClass()))),
+            array('[foo, {bar: {}}]', array('foo', '1' => (object) array('bar' => new \stdClass()))),
+        );
+    }
+
+    public function getTestsForDump()
+    {
+        return array(
+            array('null', null),
+            array('false', false),
+            array('true', true),
+            array('12', 12),
+            array("'quoted string'", 'quoted string'),
+            array('!!float 1230', 12.30e+02),
+            array('1234', 0x4D2),
+            array('1243', 02333),
+            array('.Inf', -log(0)),
+            array('-.Inf', log(0)),
+            array("'686e444'", '686e444'),
+            array('"foo\r\nbar"', "foo\r\nbar"),
+            array("'foo#bar'", 'foo#bar'),
+            array("'foo # bar'", 'foo # bar'),
+            array("'#cfcfcf'", '#cfcfcf'),
+
+            array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''),
+
+            array("'-dash'", '-dash'),
+            array("'-'", '-'),
+
+            // Pre-YAML-1.2 booleans
+            array("'y'", 'y'),
+            array("'n'", 'n'),
+            array("'yes'", 'yes'),
+            array("'no'", 'no'),
+            array("'on'", 'on'),
+            array("'off'", 'off'),
+
+            // sequences
+            array('[foo, bar, false, null, 12]', array('foo', 'bar', false, null, 12)),
+            array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')),
+
+            // mappings
+            array('{ foo: bar, bar: foo, \'false\': false, \'null\': null, integer: 12 }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)),
+            array('{ foo: bar, bar: \'foo: bar\' }', array('foo' => 'bar', 'bar' => 'foo: bar')),
+
+            // nested sequences and mappings
+            array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))),
+
+            array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))),
+
+            array('{ foo: { bar: foo } }', array('foo' => array('bar' => 'foo'))),
+
+            array('[foo, { bar: foo }]', array('foo', array('bar' => 'foo'))),
+
+            array('[foo, { bar: foo, foo: [foo, { bar: foo }] }, [foo, { bar: foo }]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))),
+
+            array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')),
+        );
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Tests/ParseExceptionTest.php b/currency/vendor/symfony/yaml/Tests/ParseExceptionTest.php
new file mode 100644
index 0000000..e4eb9c9
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/ParseExceptionTest.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Tests;
+
+use Symfony\Component\Yaml\Exception\ParseException;
+
+class ParseExceptionTest extends \PHPUnit_Framework_TestCase
+{
+    public function testGetMessage()
+    {
+        $exception = new ParseException('Error message', 42, 'foo: bar', '/var/www/app/config.yml');
+        if (PHP_VERSION_ID >= 50400) {
+            $message = 'Error message in "/var/www/app/config.yml" at line 42 (near "foo: bar")';
+        } else {
+            $message = 'Error message in "\\/var\\/www\\/app\\/config.yml" at line 42 (near "foo: bar")';
+        }
+
+        $this->assertEquals($message, $exception->getMessage());
+    }
+
+    public function testGetMessageWithUnicodeInFilename()
+    {
+        $exception = new ParseException('Error message', 42, 'foo: bar', 'äöü.yml');
+        if (PHP_VERSION_ID >= 50400) {
+            $message = 'Error message in "äöü.yml" at line 42 (near "foo: bar")';
+        } else {
+            $message = 'Error message in "\u00e4\u00f6\u00fc.yml" at line 42 (near "foo: bar")';
+        }
+
+        $this->assertEquals($message, $exception->getMessage());
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Tests/ParserTest.php b/currency/vendor/symfony/yaml/Tests/ParserTest.php
new file mode 100644
index 0000000..f434d55
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/ParserTest.php
@@ -0,0 +1,755 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Tests;
+
+use Symfony\Component\Yaml\Yaml;
+use Symfony\Component\Yaml\Parser;
+
+class ParserTest extends \PHPUnit_Framework_TestCase
+{
+    protected $parser;
+
+    protected function setUp()
+    {
+        $this->parser = new Parser();
+    }
+
+    protected function tearDown()
+    {
+        $this->parser = null;
+    }
+
+    /**
+     * @dataProvider getDataFormSpecifications
+     */
+    public function testSpecifications($file, $expected, $yaml, $comment)
+    {
+        $this->assertEquals($expected, var_export($this->parser->parse($yaml), true), $comment);
+    }
+
+    public function getDataFormSpecifications()
+    {
+        $parser = new Parser();
+        $path = __DIR__.'/Fixtures';
+
+        $tests = array();
+        $files = $parser->parse(file_get_contents($path.'/index.yml'));
+        foreach ($files as $file) {
+            $yamls = file_get_contents($path.'/'.$file.'.yml');
+
+            // split YAMLs documents
+            foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) {
+                if (!$yaml) {
+                    continue;
+                }
+
+                $test = $parser->parse($yaml);
+                if (isset($test['todo']) && $test['todo']) {
+                    // TODO
+                } else {
+                    eval('$expected = '.trim($test['php']).';');
+
+                    $tests[] = array($file, var_export($expected, true), $test['yaml'], $test['test']);
+                }
+            }
+        }
+
+        return $tests;
+    }
+
+    public function testTabsInYaml()
+    {
+        // test tabs in YAML
+        $yamls = array(
+            "foo:\n	bar",
+            "foo:\n 	bar",
+            "foo:\n	 bar",
+            "foo:\n 	 bar",
+        );
+
+        foreach ($yamls as $yaml) {
+            try {
+                $content = $this->parser->parse($yaml);
+
+                $this->fail('YAML files must not contain tabs');
+            } catch (\Exception $e) {
+                $this->assertInstanceOf('\Exception', $e, 'YAML files must not contain tabs');
+                $this->assertEquals('A YAML file cannot contain tabs as indentation at line 2 (near "'.strpbrk($yaml, "\t").'").', $e->getMessage(), 'YAML files must not contain tabs');
+            }
+        }
+    }
+
+    public function testEndOfTheDocumentMarker()
+    {
+        $yaml = <<<EOF
+--- %YAML:1.0
+foo
+...
+EOF;
+
+        $this->assertEquals('foo', $this->parser->parse($yaml));
+    }
+
+    public function getBlockChompingTests()
+    {
+        $tests = array();
+
+        $yaml = <<<'EOF'
+foo: |-
+    one
+    two
+bar: |-
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo",
+            'bar' => "one\ntwo",
+        );
+        $tests['Literal block chomping strip with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |-
+    one
+    two
+
+bar: |-
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo",
+            'bar' => "one\ntwo",
+        );
+        $tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+{}
+
+
+EOF;
+        $expected = array();
+        $tests['Literal block chomping strip with multiple trailing newlines after a 1-liner'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |-
+    one
+    two
+bar: |-
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo",
+            'bar' => "one\ntwo",
+        );
+        $tests['Literal block chomping strip without trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |
+    one
+    two
+bar: |
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n",
+            'bar' => "one\ntwo\n",
+        );
+        $tests['Literal block chomping clip with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |
+    one
+    two
+
+bar: |
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n",
+            'bar' => "one\ntwo\n",
+        );
+        $tests['Literal block chomping clip with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |
+    one
+    two
+bar: |
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n",
+            'bar' => "one\ntwo",
+        );
+        $tests['Literal block chomping clip without trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |+
+    one
+    two
+bar: |+
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n",
+            'bar' => "one\ntwo\n",
+        );
+        $tests['Literal block chomping keep with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |+
+    one
+    two
+
+bar: |+
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n\n",
+            'bar' => "one\ntwo\n\n",
+        );
+        $tests['Literal block chomping keep with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: |+
+    one
+    two
+bar: |+
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => "one\ntwo\n",
+            'bar' => "one\ntwo",
+        );
+        $tests['Literal block chomping keep without trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >-
+    one
+    two
+bar: >-
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => 'one two',
+            'bar' => 'one two',
+        );
+        $tests['Folded block chomping strip with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >-
+    one
+    two
+
+bar: >-
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => 'one two',
+            'bar' => 'one two',
+        );
+        $tests['Folded block chomping strip with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >-
+    one
+    two
+bar: >-
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => 'one two',
+            'bar' => 'one two',
+        );
+        $tests['Folded block chomping strip without trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >
+    one
+    two
+bar: >
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => "one two\n",
+            'bar' => "one two\n",
+        );
+        $tests['Folded block chomping clip with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >
+    one
+    two
+
+bar: >
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => "one two\n",
+            'bar' => "one two\n",
+        );
+        $tests['Folded block chomping clip with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >
+    one
+    two
+bar: >
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => "one two\n",
+            'bar' => 'one two',
+        );
+        $tests['Folded block chomping clip without trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >+
+    one
+    two
+bar: >+
+    one
+    two
+
+EOF;
+        $expected = array(
+            'foo' => "one two\n",
+            'bar' => "one two\n",
+        );
+        $tests['Folded block chomping keep with single trailing newline'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >+
+    one
+    two
+
+bar: >+
+    one
+    two
+
+
+EOF;
+        $expected = array(
+            'foo' => "one two\n\n",
+            'bar' => "one two\n\n",
+        );
+        $tests['Folded block chomping keep with multiple trailing newlines'] = array($expected, $yaml);
+
+        $yaml = <<<'EOF'
+foo: >+
+    one
+    two
+bar: >+
+    one
+    two
+EOF;
+        $expected = array(
+            'foo' => "one two\n",
+            'bar' => 'one two',
+        );
+        $tests['Folded block chomping keep without trailing newline'] = array($expected, $yaml);
+
+        return $tests;
+    }
+
+    /**
+     * @dataProvider getBlockChompingTests
+     */
+    public function testBlockChomping($expected, $yaml)
+    {
+        $this->assertSame($expected, $this->parser->parse($yaml));
+    }
+
+    /**
+     * Regression test for issue #7989.
+     *
+     * @see https://github.com/symfony/symfony/issues/7989
+     */
+    public function testBlockLiteralWithLeadingNewlines()
+    {
+        $yaml = <<<'EOF'
+foo: |-
+
+
+    bar
+
+EOF;
+        $expected = array(
+            'foo' => "\n\nbar",
+        );
+
+        $this->assertSame($expected, $this->parser->parse($yaml));
+    }
+
+    public function testObjectSupportEnabled()
+    {
+        $input = <<<EOF
+foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
+bar: 1
+EOF;
+        $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
+    }
+
+    public function testObjectSupportDisabledButNoExceptions()
+    {
+        $input = <<<EOF
+foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
+bar: 1
+EOF;
+
+        $this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects');
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testObjectsSupportDisabledWithExceptions()
+    {
+        $this->parser->parse('foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}', true, false);
+    }
+
+    public function testNonUtf8Exception()
+    {
+        if (!function_exists('iconv')) {
+            $this->markTestSkipped('Exceptions for non-utf8 charsets require the iconv() function.');
+
+            return;
+        }
+
+        $yamls = array(
+            iconv('UTF-8', 'ISO-8859-1', "foo: 'äöüß'"),
+            iconv('UTF-8', 'ISO-8859-15', "euro: '€'"),
+            iconv('UTF-8', 'CP1252', "cp1252: '©ÉÇáñ'"),
+        );
+
+        foreach ($yamls as $yaml) {
+            try {
+                $this->parser->parse($yaml);
+
+                $this->fail('charsets other than UTF-8 are rejected.');
+            } catch (\Exception $e) {
+                $this->assertInstanceOf('Symfony\Component\Yaml\Exception\ParseException', $e, 'charsets other than UTF-8 are rejected.');
+            }
+        }
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testUnindentedCollectionException()
+    {
+        $yaml = <<<EOF
+
+collection:
+-item1
+-item2
+-item3
+
+EOF;
+
+        $this->parser->parse($yaml);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testShortcutKeyUnindentedCollectionException()
+    {
+        $yaml = <<<EOF
+
+collection:
+-  key: foo
+  foo: bar
+
+EOF;
+
+        $this->parser->parse($yaml);
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     * @expectedExceptionMessage Multiple documents are not supported.
+     */
+    public function testMultipleDocumentsNotSupportedException()
+    {
+        Yaml::parse(<<<EOL
+# Ranking of 1998 home runs
+---
+- Mark McGwire
+- Sammy Sosa
+- Ken Griffey
+
+# Team ranking
+---
+- Chicago Cubs
+- St Louis Cardinals
+EOL
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testSequenceInAMapping()
+    {
+        Yaml::parse(<<<EOF
+yaml:
+  hash: me
+  - array stuff
+EOF
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     */
+    public function testMappingInASequence()
+    {
+        Yaml::parse(<<<EOF
+yaml:
+  - array stuff
+  hash: me
+EOF
+        );
+    }
+
+    /**
+     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
+     * @expectedExceptionMessage missing colon
+     */
+    public function testScalarInSequence()
+    {
+        Yaml::parse(<<<EOF
+foo:
+    - bar
+"missing colon"
+    foo: bar
+EOF
+        );
+    }
+
+    /**
+     * > It is an error for two equal keys to appear in the same mapping node.
+     * > In such a case the YAML processor may continue, ignoring the second
+     * > `key: value` pair and issuing an appropriate warning. This strategy
+     * > preserves a consistent information model for one-pass and random access
+     * > applications.
+     *
+     * @see http://yaml.org/spec/1.2/spec.html#id2759572
+     * @see http://yaml.org/spec/1.1/#id932806
+     *
+     * @covers \Symfony\Component\Yaml\Parser::parse
+     */
+    public function testMappingDuplicateKeyBlock()
+    {
+        $input = <<<EOD
+parent:
+    child: first
+    child: duplicate
+parent:
+    child: duplicate
+    child: duplicate
+EOD;
+        $expected = array(
+            'parent' => array(
+                'child' => 'first',
+            ),
+        );
+        $this->assertSame($expected, Yaml::parse($input));
+    }
+
+    /**
+     * @covers \Symfony\Component\Yaml\Inline::parseMapping
+     */
+    public function testMappingDuplicateKeyFlow()
+    {
+        $input = <<<EOD
+parent: { child: first, child: duplicate }
+parent: { child: duplicate, child: duplicate }
+EOD;
+        $expected = array(
+            'parent' => array(
+                'child' => 'first',
+            ),
+        );
+        $this->assertSame($expected, Yaml::parse($input));
+    }
+
+    public function testEmptyValue()
+    {
+        $input = <<<EOF
+hash:
+EOF;
+
+        $this->assertEquals(array('hash' => null), Yaml::parse($input));
+    }
+
+    public function testStringBlockWithComments()
+    {
+        $this->assertEquals(array('content' => <<<EOT
+# comment 1
+header
+
+    # comment 2
+    <body>
+        <h1>title</h1>
+    </body>
+
+footer # comment3
+EOT
+        ), Yaml::parse(<<<EOF
+content: |
+    # comment 1
+    header
+
+        # comment 2
+        <body>
+            <h1>title</h1>
+        </body>
+
+    footer # comment3
+EOF
+        ));
+    }
+
+    public function testFoldedStringBlockWithComments()
+    {
+        $this->assertEquals(array(array('content' => <<<EOT
+# comment 1
+header
+
+    # comment 2
+    <body>
+        <h1>title</h1>
+    </body>
+
+footer # comment3
+EOT
+        )), Yaml::parse(<<<EOF
+-
+    content: |
+        # comment 1
+        header
+
+            # comment 2
+            <body>
+                <h1>title</h1>
+            </body>
+
+        footer # comment3
+EOF
+        ));
+    }
+
+    public function testNestedFoldedStringBlockWithComments()
+    {
+        $this->assertEquals(array(array(
+            'title' => 'some title',
+            'content' => <<<EOT
+# comment 1
+header
+
+    # comment 2
+    <body>
+        <h1>title</h1>
+    </body>
+
+footer # comment3
+EOT
+        )), Yaml::parse(<<<EOF
+-
+    title: some title
+    content: |
+        # comment 1
+        header
+
+            # comment 2
+            <body>
+                <h1>title</h1>
+            </body>
+
+        footer # comment3
+EOF
+        ));
+    }
+
+    public function testReferenceResolvingInInlineStrings()
+    {
+        $this->assertEquals(array(
+            'var' => 'var-value',
+            'scalar' => 'var-value',
+            'list' => array('var-value'),
+            'list_in_list' => array(array('var-value')),
+            'map_in_list' => array(array('key' => 'var-value')),
+            'embedded_mapping' => array(array('key' => 'var-value')),
+            'map' => array('key' => 'var-value'),
+            'list_in_map' => array('key' => array('var-value')),
+            'map_in_map' => array('foo' => array('bar' => 'var-value')),
+        ), Yaml::parse(<<<EOF
+var:  &var var-value
+scalar: *var
+list: [ *var ]
+list_in_list: [[ *var ]]
+map_in_list: [ { key: *var } ]
+embedded_mapping: [ key: *var ]
+map: { key: *var }
+list_in_map: { key: [*var] }
+map_in_map: { foo: { bar: *var } }
+EOF
+        ));
+    }
+
+    public function testYamlDirective()
+    {
+        $yaml = <<<EOF
+%YAML 1.2
+---
+foo: 1
+bar: 2
+EOF;
+        $this->assertEquals(array('foo' => 1, 'bar' => 2), $this->parser->parse($yaml));
+    }
+}
+
+class B
+{
+    public $b = 'foo';
+}
diff --git a/currency/vendor/symfony/yaml/Tests/YamlTest.php b/currency/vendor/symfony/yaml/Tests/YamlTest.php
new file mode 100644
index 0000000..8db65e3
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Tests/YamlTest.php
@@ -0,0 +1,37 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml\Tests;
+
+use Symfony\Component\Yaml\Yaml;
+
+class YamlTest extends \PHPUnit_Framework_TestCase
+{
+    public function testParseAndDump()
+    {
+        $data = array('lorem' => 'ipsum', 'dolor' => 'sit');
+        $yml = Yaml::dump($data);
+        $parsed = Yaml::parse($yml);
+        $this->assertEquals($data, $parsed);
+    }
+
+    /**
+     * @group legacy
+     */
+    public function testLegacyParseFromFile()
+    {
+        $filename = __DIR__.'/Fixtures/index.yml';
+        $contents = file_get_contents($filename);
+        $parsedByFilename = Yaml::parse($filename);
+        $parsedByContents = Yaml::parse($contents);
+        $this->assertEquals($parsedByFilename, $parsedByContents);
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Unescaper.php b/currency/vendor/symfony/yaml/Unescaper.php
new file mode 100644
index 0000000..93206f9
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Unescaper.php
@@ -0,0 +1,146 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+/**
+ * Unescaper encapsulates unescaping rules for single and double-quoted
+ * YAML strings.
+ *
+ * @author Matthew Lewinski <matthew@lewinski.org>
+ */
+class Unescaper
+{
+    /**
+     * Parser and Inline assume UTF-8 encoding, so escaped Unicode characters
+     * must be converted to that encoding.
+     *
+     * @deprecated since version 2.5, to be removed in 3.0
+     * @internal
+     */
+    const ENCODING = 'UTF-8';
+
+    /**
+     * Regex fragment that matches an escaped character in a double quoted string.
+     */
+    const REGEX_ESCAPED_CHARACTER = "\\\\([0abt\tnvfre \\\"\\/\\\\N_LP]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})";
+
+    /**
+     * Unescapes a single quoted string.
+     *
+     * @param string $value A single quoted string.
+     *
+     * @return string The unescaped string.
+     */
+    public function unescapeSingleQuotedString($value)
+    {
+        return str_replace('\'\'', '\'', $value);
+    }
+
+    /**
+     * Unescapes a double quoted string.
+     *
+     * @param string $value A double quoted string.
+     *
+     * @return string The unescaped string.
+     */
+    public function unescapeDoubleQuotedString($value)
+    {
+        $self = $this;
+        $callback = function ($match) use ($self) {
+            return $self->unescapeCharacter($match[0]);
+        };
+
+        // evaluate the string
+        return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value);
+    }
+
+    /**
+     * Unescapes a character that was found in a double-quoted string.
+     *
+     * @param string $value An escaped character
+     *
+     * @return string The unescaped character
+     */
+    public function unescapeCharacter($value)
+    {
+        switch ($value{1}) {
+            case '0':
+                return "\x0";
+            case 'a':
+                return "\x7";
+            case 'b':
+                return "\x8";
+            case 't':
+                return "\t";
+            case "\t":
+                return "\t";
+            case 'n':
+                return "\n";
+            case 'v':
+                return "\xB";
+            case 'f':
+                return "\xC";
+            case 'r':
+                return "\r";
+            case 'e':
+                return "\x1B";
+            case ' ':
+                return ' ';
+            case '"':
+                return '"';
+            case '/':
+                return '/';
+            case '\\':
+                return '\\';
+            case 'N':
+                // U+0085 NEXT LINE
+                return "\xC2\x85";
+            case '_':
+                // U+00A0 NO-BREAK SPACE
+                return "\xC2\xA0";
+            case 'L':
+                // U+2028 LINE SEPARATOR
+                return "\xE2\x80\xA8";
+            case 'P':
+                // U+2029 PARAGRAPH SEPARATOR
+                return "\xE2\x80\xA9";
+            case 'x':
+                return self::utf8chr(hexdec(substr($value, 2, 2)));
+            case 'u':
+                return self::utf8chr(hexdec(substr($value, 2, 4)));
+            case 'U':
+                return self::utf8chr(hexdec(substr($value, 2, 8)));
+        }
+    }
+
+    /**
+     * Get the UTF-8 character for the given code point.
+     *
+     * @param int $c The unicode code point
+     *
+     * @return string The corresponding UTF-8 character
+     */
+    private static function utf8chr($c)
+    {
+        if (0x80 > $c %= 0x200000) {
+            return chr($c);
+        }
+        if (0x800 > $c) {
+            return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F);
+        }
+        if (0x10000 > $c) {
+            return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
+        }
+
+        return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
+    }
+}
diff --git a/currency/vendor/symfony/yaml/Yaml.php b/currency/vendor/symfony/yaml/Yaml.php
new file mode 100644
index 0000000..b6def51
--- /dev/null
+++ b/currency/vendor/symfony/yaml/Yaml.php
@@ -0,0 +1,105 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Yaml;
+
+use Symfony\Component\Yaml\Exception\ParseException;
+
+/**
+ * Yaml offers convenience methods to load and dump YAML.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ *
+ * @api
+ */
+class Yaml
+{
+    /**
+     * Parses YAML into a PHP array.
+     *
+     * The parse method, when supplied with a YAML stream (string or file),
+     * will do its best to convert YAML in a file into a PHP array.
+     *
+     *  Usage:
+     *  <code>
+     *   $array = Yaml::parse(file_get_contents('config.yml'));
+     *   print_r($array);
+     *  </code>
+     *
+     * As this method accepts both plain strings and file names as an input,
+     * you must validate the input before calling this method. Passing a file
+     * as an input is a deprecated feature and will be removed in 3.0.
+     *
+     * Note: the ability to pass file names to the Yaml::parse method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.
+     *
+     * @param string $input                  Path to a YAML file or a string containing YAML
+     * @param bool   $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise
+     * @param bool   $objectSupport          True if object support is enabled, false otherwise
+     * @param bool   $objectForMap           True if maps should return a stdClass instead of array()
+     *
+     * @return array The YAML converted to a PHP array
+     *
+     * @throws ParseException If the YAML is not valid
+     *
+     * @api
+     */
+    public static function parse($input, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false)
+    {
+        // if input is a file, process it
+        $file = '';
+        if (strpos($input, "\n") === false && is_file($input)) {
+            @trigger_error('The ability to pass file names to the '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.', E_USER_DEPRECATED);
+
+            if (false === is_readable($input)) {
+                throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input));
+            }
+
+            $file = $input;
+            $input = file_get_contents($file);
+        }
+
+        $yaml = new Parser();
+
+        try {
+            return $yaml->parse($input, $exceptionOnInvalidType, $objectSupport, $objectForMap);
+        } catch (ParseException $e) {
+            if ($file) {
+                $e->setParsedFile($file);
+            }
+
+            throw $e;
+        }
+    }
+
+    /**
+     * Dumps a PHP array to a YAML string.
+     *
+     * The dump method, when supplied with an array, will do its best
+     * to convert the array into friendly YAML.
+     *
+     * @param array $array                  PHP array
+     * @param int   $inline                 The level where you switch to inline YAML
+     * @param int   $indent                 The amount of spaces to use for indentation of nested nodes.
+     * @param bool  $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise
+     * @param bool  $objectSupport          true if object support is enabled, false otherwise
+     *
+     * @return string A YAML string representing the original PHP array
+     *
+     * @api
+     */
+    public static function dump($array, $inline = 2, $indent = 4, $exceptionOnInvalidType = false, $objectSupport = false)
+    {
+        $yaml = new Dumper();
+        $yaml->setIndentation($indent);
+
+        return $yaml->dump($array, $inline, 0, $exceptionOnInvalidType, $objectSupport);
+    }
+}
diff --git a/currency/vendor/symfony/yaml/composer.json b/currency/vendor/symfony/yaml/composer.json
new file mode 100644
index 0000000..b07b439
--- /dev/null
+++ b/currency/vendor/symfony/yaml/composer.json
@@ -0,0 +1,33 @@
+{
+    "name": "symfony/yaml",
+    "type": "library",
+    "description": "Symfony Yaml Component",
+    "keywords": [],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Fabien Potencier",
+            "email": "fabien@symfony.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.9"
+    },
+    "require-dev": {
+        "symfony/phpunit-bridge": "~2.7"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Component\\Yaml\\": "" }
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-master": "2.7-dev"
+        }
+    }
+}
diff --git a/currency/vendor/symfony/yaml/phpunit.xml.dist b/currency/vendor/symfony/yaml/phpunit.xml.dist
new file mode 100644
index 0000000..418b2c6
--- /dev/null
+++ b/currency/vendor/symfony/yaml/phpunit.xml.dist
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
+         backupGlobals="false"
+         colors="true"
+         bootstrap="vendor/autoload.php"
+>
+    <php>
+        <ini name="error_reporting" value="-1" />
+    </php>
+
+    <testsuites>
+        <testsuite name="Symfony Yaml Component Test Suite">
+            <directory>./Tests/</directory>
+        </testsuite>
+    </testsuites>
+
+    <filter>
+        <whitelist>
+            <directory>./</directory>
+            <exclude>
+                <directory>./vendor</directory>
+                <directory>./Tests</directory>
+            </exclude>
+        </whitelist>
+    </filter>
+</phpunit>
