diff --git a/.idea/nouveau_site.iml b/.idea/nouveau_site.iml index dc733beb..784f6d45 100644 --- a/.idea/nouveau_site.iml +++ b/.idea/nouveau_site.iml @@ -100,6 +100,9 @@ + + + diff --git a/.idea/php.xml b/.idea/php.xml index 7a4cb5df..51fae598 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -94,6 +94,9 @@ + + + diff --git a/composer.json b/composer.json index 9ca0b8ff..47a5fbc1 100644 --- a/composer.json +++ b/composer.json @@ -62,7 +62,8 @@ "symfony/polyfill-php73": "^1.0", "symfony/lock": "^3.4|^4.0", "thelia/propel": "dev-thelia-2.4", - "symfony/var-dumper": "^2.0|^3.0|^4.0" + "symfony/var-dumper": "^2.0|^3.0|^4.0", + "thelia/paypal-module": "~4.0.0" }, "require-dev": { "fzaninotto/faker": "1.5.*", diff --git a/composer.lock b/composer.lock index 92bf8c8f..759bd43f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5775e58f869179ca9e753e2556329f65", + "content-hash": "68a6565d5f25e51cac1f294c195b730e", "packages": [ { "name": "commerceguys/addressing", @@ -473,6 +473,88 @@ ], "time": "2015-12-24T01:37:31+00:00" }, + { + "name": "monolog/monolog", + "version": "1.26.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-12-14T12:56:38+00:00" + }, { "name": "oyejorge/less.php", "version": "v1.7.0.14", @@ -585,6 +667,56 @@ ], "time": "2018-07-04T16:31:37+00:00" }, + { + "name": "paypal/rest-api-sdk-php", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/paypal/PayPal-PHP-SDK.git", + "reference": "d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paypal/PayPal-PHP-SDK/zipball/d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b", + "reference": "d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.3.0", + "psr/log": "1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "PayPal": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "PayPal", + "homepage": "https://github.com/paypal/rest-api-sdk-php/contributors" + } + ], + "description": "PayPal's PHP SDK for REST APIs", + "homepage": "http://paypal.github.io/PayPal-PHP-SDK/", + "keywords": [ + "payments", + "paypal", + "rest", + "sdk" + ], + "abandoned": true, + "time": "2016-04-22T03:29:29+00:00" + }, { "name": "psr/cache", "version": "1.0.1", @@ -3662,6 +3794,58 @@ "description": "php 5.4 currency tools", "time": "2017-09-30T16:33:49+00:00" }, + { + "name": "thelia/installer", + "version": "1.3", + "source": { + "type": "git", + "url": "https://github.com/thelia/installer.git", + "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/installer/zipball/dca473563e05011c7aea3aaebc6f154fef4187fe", + "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0||^2.0" + }, + "require-dev": { + "composer/composer": "1.0.*@dev||2.0.*@dev" + }, + "type": "composer-plugin", + "extra": { + "class": "Thelia\\Composer\\TheliaInstallerPlugin" + }, + "autoload": { + "psr-0": { + "Thelia\\Composer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Manuel Raynaud", + "email": "raynaud.manu@gmail.com", + "homepage": "https://github.com/lunika" + } + ], + "description": "custom installer for Thelia.", + "keywords": [ + "Thelia", + "Thelia-module", + "Thelia-template" + ], + "support": { + "issues": "https://github.com/thelia/installer/issues", + "source": "https://github.com/thelia/installer/tree/1.3" + }, + "time": "2020-10-26T10:32:18+00:00" + }, { "name": "thelia/math-tools", "version": "1.0.2", @@ -3703,6 +3887,36 @@ "description": "Number management library", "time": "2015-11-05T15:52:55+00:00" }, + { + "name": "thelia/paypal-module", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/thelia-modules/PayPal.git", + "reference": "a180202e7abd0313d9390031e1b304a4c06967c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia-modules/PayPal/zipball/a180202e7abd0313d9390031e1b304a4c06967c6", + "reference": "a180202e7abd0313d9390031e1b304a4c06967c6", + "shasum": "" + }, + "require": { + "paypal/rest-api-sdk-php": "1.7.1", + "thelia/installer": "~1.1", + "wazaari/monolog-mysql": "1.0.3" + }, + "type": "thelia-module", + "extra": { + "installer-name": "PayPal" + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" + ], + "description": "PayPal module for Thelia ecommerce solution ", + "time": "2020-11-06T11:20:42+00:00" + }, { "name": "thelia/propel", "version": "dev-thelia-2.4", @@ -3767,6 +3981,50 @@ "persistence" ], "time": "2020-03-25T14:16:18+00:00" + }, + { + "name": "wazaari/monolog-mysql", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/waza-ari/monolog-mysql.git", + "reference": "540c7b92245db3e54d6493056ba3a84da2d49b24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/waza-ari/monolog-mysql/zipball/540c7b92245db3e54d6493056ba3a84da2d49b24", + "reference": "540c7b92245db3e54d6493056ba3a84da2d49b24", + "shasum": "" + }, + "require": { + "monolog/monolog": ">1.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "MySQLHandler\\": "src/MySQLHandler" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Herrmann", + "email": "daniel.herrmann1@gmail.com" + } + ], + "description": "A handler for Monolog that sends messages to MySQL", + "homepage": "https://github.com/waza-ari/monolog-mysql", + "keywords": [ + "database", + "log", + "logging", + "monolog", + "mysql" + ], + "time": "2015-07-12T22:25:23+00:00" } ], "packages-dev": [ @@ -3874,6 +4132,7 @@ "faker", "fixtures" ], + "abandoned": true, "time": "2015-05-29T06:29:14+00:00" }, { @@ -4377,6 +4636,7 @@ "keywords": [ "tokenizer" ], + "abandoned": true, "time": "2017-12-04T08:55:13+00:00" }, { @@ -5082,58 +5342,6 @@ "notification-url": "https://packagist.org/downloads/", "time": "2014-12-24T09:51:48+00:00" }, - { - "name": "thelia/installer", - "version": "1.3", - "source": { - "type": "git", - "url": "https://github.com/thelia/installer.git", - "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/installer/zipball/dca473563e05011c7aea3aaebc6f154fef4187fe", - "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0||^2.0" - }, - "require-dev": { - "composer/composer": "1.0.*@dev||2.0.*@dev" - }, - "type": "composer-plugin", - "extra": { - "class": "Thelia\\Composer\\TheliaInstallerPlugin" - }, - "autoload": { - "psr-0": { - "Thelia\\Composer": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Manuel Raynaud", - "email": "raynaud.manu@gmail.com", - "homepage": "https://github.com/lunika" - } - ], - "description": "custom installer for Thelia.", - "keywords": [ - "Thelia", - "Thelia-module", - "Thelia-template" - ], - "support": { - "issues": "https://github.com/thelia/installer/issues", - "source": "https://github.com/thelia/installer/tree/1.3" - }, - "time": "2020-10-26T10:32:18+00:00" - }, { "name": "webmozart/assert", "version": "1.3.0", @@ -5196,5 +5404,5 @@ "php": ">=5.6 <7.4" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "1.1.0" } diff --git a/core/vendor/composer/ClassLoader.php b/core/vendor/composer/ClassLoader.php index 1a58957d..fce8549f 100644 --- a/core/vendor/composer/ClassLoader.php +++ b/core/vendor/composer/ClassLoader.php @@ -37,8 +37,8 @@ namespace Composer\Autoload; * * @author Fabien Potencier * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ */ class ClassLoader { @@ -60,7 +60,7 @@ class ClassLoader public function getPrefixes() { if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + return call_user_func_array('array_merge', $this->prefixesPsr0); } return array(); diff --git a/core/vendor/composer/autoload_classmap.php b/core/vendor/composer/autoload_classmap.php index e7a37306..71724e78 100644 --- a/core/vendor/composer/autoload_classmap.php +++ b/core/vendor/composer/autoload_classmap.php @@ -10,7 +10,6 @@ return array( 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', 'CallbackFilterIterator' => $vendorDir . '/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php', 'Collator' => $vendorDir . '/symfony/intl/Resources/stubs/Collator.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php', diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php index da530380..495f7e51 100644 --- a/core/vendor/composer/autoload_files.php +++ b/core/vendor/composer/autoload_files.php @@ -14,13 +14,13 @@ return array( '3e2471375464aac821502deb0ac64275' => $vendorDir . '/symfony/polyfill-php54/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php', '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', + '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php', '6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php', '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php', 'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php', 'ce89ac35a6c330c55f4710717db9ff78' => $vendorDir . '/kriswallsmith/assetic/src/functions.php', 'f084d01b0a599f67676cffef638aa95b' => $vendorDir . '/smarty/smarty/libs/bootstrap.php', - '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', 'e277be14c90068cf94faed2c43dbe6d8' => $vendorDir . '/symfony/polyfill-php71/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php index 4acce06e..2a189737 100644 --- a/core/vendor/composer/autoload_namespaces.php +++ b/core/vendor/composer/autoload_namespaces.php @@ -12,6 +12,7 @@ return array( 'Psr\\Log\\' => array($vendorDir . '/psr/log'), 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'), 'Propel' => array($vendorDir . '/thelia/propel/src'), + 'PayPal' => array($vendorDir . '/paypal/rest-api-sdk-php/lib'), 'Michelf' => array($vendorDir . '/michelf/php-markdown'), 'Less' => array($vendorDir . '/oyejorge/less.php/lib'), 'Imagine' => array($vendorDir . '/imagine/imagine/lib'), diff --git a/core/vendor/composer/autoload_psr4.php b/core/vendor/composer/autoload_psr4.php index e8f2b97e..91c02880 100644 --- a/core/vendor/composer/autoload_psr4.php +++ b/core/vendor/composer/autoload_psr4.php @@ -6,7 +6,7 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname(dirname($vendorDir)); return array( - 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'), 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), 'Thelia\\Tests\\' => array($baseDir . '/tests/phpunit/Thelia/Tests'), 'Thelia\\Math\\' => array($vendorDir . '/thelia/math-tools/src'), @@ -56,6 +56,8 @@ return array( 'Spipu\\Html2Pdf\\' => array($vendorDir . '/spipu/html2pdf/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), + 'MySQLHandler\\' => array($vendorDir . '/wazaari/monolog-mysql/src/MySQLHandler'), + 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 'Faker\\' => array($vendorDir . '/fzaninotto/faker/src/Faker'), 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'), diff --git a/core/vendor/composer/autoload_real.php b/core/vendor/composer/autoload_real.php index a92a7dc0..86e20bc9 100644 --- a/core/vendor/composer/autoload_real.php +++ b/core/vendor/composer/autoload_real.php @@ -22,15 +22,13 @@ class ComposerAutoloaderInitdd35a9014b32931842cc80c9a5635083 return self::$loader; } - require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInitdd35a9014b32931842cc80c9a5635083', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); spl_autoload_unregister(array('ComposerAutoloaderInitdd35a9014b32931842cc80c9a5635083', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { - require __DIR__ . '/autoload_static.php'; + require_once __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInitdd35a9014b32931842cc80c9a5635083::getInitializer($loader)); } else { diff --git a/core/vendor/composer/autoload_static.php b/core/vendor/composer/autoload_static.php index 114a9bd9..b2f913ff 100644 --- a/core/vendor/composer/autoload_static.php +++ b/core/vendor/composer/autoload_static.php @@ -15,13 +15,13 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 '3e2471375464aac821502deb0ac64275' => __DIR__ . '/..' . '/symfony/polyfill-php54/bootstrap.php', '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php', '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', + '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php', '6a47392539ca2329373e0d33e1dba053' => __DIR__ . '/..' . '/symfony/polyfill-intl-icu/bootstrap.php', '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php', 'bd9634f2d41831496de0d3dfe4c94881' => __DIR__ . '/..' . '/symfony/polyfill-php56/bootstrap.php', 'ce89ac35a6c330c55f4710717db9ff78' => __DIR__ . '/..' . '/kriswallsmith/assetic/src/functions.php', 'f084d01b0a599f67676cffef638aa95b' => __DIR__ . '/..' . '/smarty/smarty/libs/bootstrap.php', - '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', 'e277be14c90068cf94faed2c43dbe6d8' => __DIR__ . '/..' . '/symfony/polyfill-php71/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', @@ -94,6 +94,11 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 'Psr\\SimpleCache\\' => 16, 'Psr\\Cache\\' => 10, ), + 'M' => + array ( + 'MySQLHandler\\' => 13, + 'Monolog\\' => 8, + ), 'F' => array ( 'Faker\\' => 6, @@ -115,8 +120,8 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 'phpDocumentor\\Reflection\\' => array ( 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', - 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', - 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', ), 'Webmozart\\Assert\\' => array ( @@ -314,6 +319,14 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 array ( 0 => __DIR__ . '/..' . '/psr/cache/src', ), + 'MySQLHandler\\' => + array ( + 0 => __DIR__ . '/..' . '/wazaari/monolog-mysql/src/MySQLHandler', + ), + 'Monolog\\' => + array ( + 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', + ), 'Faker\\' => array ( 0 => __DIR__ . '/..' . '/fzaninotto/faker/src/Faker', @@ -373,6 +386,10 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 array ( 0 => __DIR__ . '/..' . '/thelia/propel/src', ), + 'PayPal' => + array ( + 0 => __DIR__ . '/..' . '/paypal/rest-api-sdk-php/lib', + ), ), 'M' => array ( @@ -427,7 +444,6 @@ class ComposerStaticInitdd35a9014b32931842cc80c9a5635083 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', 'CallbackFilterIterator' => __DIR__ . '/..' . '/symfony/polyfill-php54/Resources/stubs/CallbackFilterIterator.php', 'Collator' => __DIR__ . '/..' . '/symfony/intl/Resources/stubs/Collator.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php', 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php', diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json index abe7481e..db3b67f1 100644 --- a/core/vendor/composer/installed.json +++ b/core/vendor/composer/installed.json @@ -1,5490 +1,5580 @@ -{ - "packages": [ - { - "name": "commerceguys/addressing", - "version": "v0.8.4", - "version_normalized": "0.8.4.0", - "source": { - "type": "git", - "url": "https://github.com/commerceguys/addressing.git", - "reference": "5d8d13bfaed08119be763da2a0fc9f38fff8af54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/commerceguys/addressing/zipball/5d8d13bfaed08119be763da2a0fc9f38fff8af54", - "reference": "5d8d13bfaed08119be763da2a0fc9f38fff8af54", - "shasum": "" - }, - "require": { - "commerceguys/enum": "~1.0", - "doctrine/collections": "~1.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mikey179/vfsstream": "1.*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.*", - "symfony/intl": ">=2.3", - "symfony/validator": ">=2.3" - }, - "suggest": { - "commerceguys/intl": "to use it as the source of country data", - "symfony/form": "to generate Symfony address forms", - "symfony/intl": "to use it as the source of country data", - "symfony/validator": "to validate addresses" - }, - "time": "2016-09-05T18:45:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "CommerceGuys\\Addressing\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bojan Zivanovic" - }, - { - "name": "Damien Tournoud" - } - ], - "description": "Addressing library powered by Google's address data.", - "keywords": [ - "address", - "internationalization", - "localization", - "postal" - ], - "install-path": "../commerceguys/addressing" +[ + { + "name": "commerceguys/addressing", + "version": "v0.8.4", + "version_normalized": "0.8.4.0", + "source": { + "type": "git", + "url": "https://github.com/commerceguys/addressing.git", + "reference": "5d8d13bfaed08119be763da2a0fc9f38fff8af54" }, - { - "name": "commerceguys/enum", - "version": "v1.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/commerceguys/enum.git", - "reference": "1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/commerceguys/enum/zipball/1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95", - "reference": "1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "time": "2015-02-27T21:36:56+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "CommerceGuys\\Enum\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bojan Zivanovic" - } - ], - "description": "A PHP 5.4+ enumeration library.", - "install-path": "../commerceguys/enum" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/commerceguys/addressing/zipball/5d8d13bfaed08119be763da2a0fc9f38fff8af54", + "reference": "5d8d13bfaed08119be763da2a0fc9f38fff8af54", + "shasum": "" }, - { - "name": "doctrine/cache", - "version": "v1.5.4", - "version_normalized": "1.5.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/47cdc76ceb95cc591d9c79a36dc3794975b5d136", - "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "phpunit/phpunit": ">=3.7", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" - }, - "time": "2015-12-19T05:03:47+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "install-path": "../doctrine/cache" + "require": { + "commerceguys/enum": "~1.0", + "doctrine/collections": "~1.0", + "php": ">=5.4.0" }, - { - "name": "doctrine/collections", - "version": "v1.4.0", - "version_normalized": "1.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" - }, - "time": "2017-01-03T10:49:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "array", - "collections", - "iterator" - ], - "install-path": "../doctrine/collections" + "require-dev": { + "mikey179/vfsstream": "1.*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "2.*", + "symfony/intl": ">=2.3", + "symfony/validator": ">=2.3" }, - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "version_normalized": "1.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "time": "2015-06-14T21:17:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "install-path": "../doctrine/instantiator" + "suggest": { + "commerceguys/intl": "to use it as the source of country data", + "symfony/form": "to generate Symfony address forms", + "symfony/intl": "to use it as the source of country data", + "symfony/validator": "to validate addresses" }, - { - "name": "fzaninotto/faker", - "version": "v1.5.0", - "version_normalized": "1.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "d0190b156bcca848d401fb80f31f504f37141c8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d", - "reference": "d0190b156bcca848d401fb80f31f504f37141c8d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "suggest": { - "ext-intl": "*" - }, - "time": "2015-05-29T06:29:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "install-path": "../fzaninotto/faker" + "time": "2016-09-05T18:45:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } }, - { - "name": "imagine/imagine", - "version": "v0.7.1", - "version_normalized": "0.7.1.0", - "source": { - "type": "git", - "url": "https://github.com/avalanche123/Imagine.git", - "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", - "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "sami/sami": "^3.3", - "symfony/phpunit-bridge": "^3.2" - }, - "suggest": { - "ext-gd": "to use the GD implementation", - "ext-gmagick": "to use the Gmagick implementation", - "ext-imagick": "to use the Imagick implementation" - }, - "time": "2017-05-16T10:31:22+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Imagine": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bulat Shakirzyanov", - "email": "mallluhuct@gmail.com", - "homepage": "http://avalanche123.com" - } - ], - "description": "Image processing for PHP 5.3", - "homepage": "http://imagine.readthedocs.org/", - "keywords": [ - "drawing", - "graphics", - "image manipulation", - "image processing" - ], - "install-path": "../imagine/imagine" + "installation-source": "dist", + "autoload": { + "psr-4": { + "CommerceGuys\\Addressing\\": "src" + } }, - { - "name": "ircmaxell/password-compat", - "version": "v1.0.4", - "version_normalized": "1.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/password_compat.git", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Zivanovic" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", - "shasum": "" + { + "name": "Damien Tournoud" + } + ], + "description": "Addressing library powered by Google's address data.", + "keywords": [ + "address", + "internationalization", + "localization", + "postal" + ] + }, + { + "name": "commerceguys/enum", + "version": "v1.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/commerceguys/enum.git", + "reference": "1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/commerceguys/enum/zipball/1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95", + "reference": "1d9db2dbeb1a02500e7a14589ae2f9cb402c5c95", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "time": "2015-02-27T21:36:56+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "CommerceGuys\\Enum\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Zivanovic" + } + ], + "description": "A PHP 5.4+ enumeration library." + }, + { + "name": "doctrine/cache", + "version": "v1.5.4", + "version_normalized": "1.5.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/47cdc76ceb95cc591d9c79a36dc3794975b5d136", + "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": ">=3.7", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, + "time": "2015-12-19T05:03:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, - "require-dev": { - "phpunit/phpunit": "4.*" + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, - "time": "2014-11-20T16:49:30+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "lib/password.php" + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ] + }, + { + "name": "doctrine/collections", + "version": "v1.4.0", + "version_normalized": "1.4.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", + "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "time": "2017-01-03T10:49:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ] + }, + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "version_normalized": "1.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "time": "2015-06-14T21:17:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ] + }, + { + "name": "fzaninotto/faker", + "version": "v1.5.0", + "version_normalized": "1.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "d0190b156bcca848d401fb80f31f504f37141c8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d0190b156bcca848d401fb80f31f504f37141c8d", + "reference": "d0190b156bcca848d401fb80f31f504f37141c8d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "suggest": { + "ext-intl": "*" + }, + "time": "2015-05-29T06:29:14+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "abandoned": true + }, + { + "name": "imagine/imagine", + "version": "v0.7.1", + "version_normalized": "0.7.1.0", + "source": { + "type": "git", + "url": "https://github.com/avalanche123/Imagine.git", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "sami/sami": "^3.3", + "symfony/phpunit-bridge": "^3.2" + }, + "suggest": { + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" + }, + "time": "2017-05-16T10:31:22+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Imagine": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" + } + ], + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ] + }, + { + "name": "ircmaxell/password-compat", + "version": "v1.0.4", + "version_normalized": "1.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "time": "2014-11-20T16:49:30+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@php.net", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ] + }, + { + "name": "kriswallsmith/assetic", + "version": "v1.3.2", + "version_normalized": "1.3.2.0", + "source": { + "type": "git", + "url": "https://github.com/kriswallsmith/assetic.git", + "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/9928f7c4ad98b234e3559d1049abd13387f86db5", + "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/process": "~2.1|~3.0" + }, + "conflict": { + "twig/twig": "<1.23" + }, + "require-dev": { + "cssmin/cssmin": "3.0.1", + "joliclic/javascript-packer": "1.1", + "kamicane/packager": "1.0", + "leafo/lessphp": "^0.3.7", + "leafo/scssphp": "~0.1", + "mrclay/minify": "~2.2", + "patchwork/jsqueeze": "~1.0|~2.0", + "phpunit/phpunit": "~4.8", + "psr/log": "~1.0", + "ptachoire/cssembed": "~1.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "twig/twig": "~1.8|~2.0" + }, + "suggest": { + "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", + "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", + "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", + "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor", + "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", + "twig/twig": "Assetic provides the integration with the Twig templating engine" + }, + "time": "2015-11-12T13:51:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Assetic": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kris Wallsmith", + "email": "kris.wallsmith@gmail.com", + "homepage": "http://kriswallsmith.net/" + } + ], + "description": "Asset Management for PHP", + "homepage": "https://github.com/kriswallsmith/assetic", + "keywords": [ + "assets", + "compression", + "minification" + ] + }, + { + "name": "michelf/php-markdown", + "version": "1.6.0", + "version_normalized": "1.6.0.0", + "source": { + "type": "git", + "url": "https://github.com/michelf/php-markdown.git", + "reference": "156e56ee036505ec637d761ee62dc425d807183c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c", + "reference": "156e56ee036505ec637d761ee62dc425d807183c", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2015-12-24T01:37:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-lib": "1.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Michelf": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" + }, + { + "name": "John Gruber", + "homepage": "https://daringfireball.net/" + } + ], + "description": "PHP Markdown", + "homepage": "https://michelf.ca/projects/php-markdown/", + "keywords": [ + "markdown" + ] + }, + { + "name": "monolog/monolog", + "version": "1.26.0", + "version_normalized": "1.26.0.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "reference": "2209ddd84e7ef1256b7af205d0717fb62cfc9c33", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "~4.5", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "time": "2020-12-14T12:56:38+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ] + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "version_normalized": "1.7.0.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "time": "2017-10-19T19:58:43+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ] + }, + { + "name": "oyejorge/less.php", + "version": "v1.7.0.14", + "version_normalized": "1.7.0.14", + "source": { + "type": "git", + "url": "https://github.com/oyejorge/less.php.git", + "reference": "42925c5a01a07d67ca7e82dfc8fb31814d557bc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oyejorge/less.php/zipball/42925c5a01a07d67ca7e82dfc8fb31814d557bc9", + "reference": "42925c5a01a07d67ca7e82dfc8fb31814d557bc9", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.24" + }, + "time": "2017-03-28T22:19:25+00:00", + "bin": [ + "bin/lessc" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Less": "lib/" + }, + "classmap": [ + "lessc.inc.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Matt Agar", + "homepage": "https://github.com/agar" + }, + { + "name": "Martin Jantošovič", + "homepage": "https://github.com/Mordred" + }, + { + "name": "Josh Schmidt", + "homepage": "https://github.com/oyejorge" + } + ], + "description": "PHP port of the Javascript version of LESS http://lesscss.org (Originally maintained by Josh Schmidt)", + "homepage": "http://lessphp.gpeasy.com", + "keywords": [ + "css", + "less", + "less.js", + "lesscss", + "php", + "stylesheet" + ], + "abandoned": true + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.17", + "version_normalized": "2.0.17.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "time": "2018-07-04T16:31:37+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ] + }, + { + "name": "paypal/rest-api-sdk-php", + "version": "v1.7.1", + "version_normalized": "1.7.1.0", + "source": { + "type": "git", + "url": "https://github.com/paypal/PayPal-PHP-SDK.git", + "reference": "d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paypal/PayPal-PHP-SDK/zipball/d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b", + "reference": "d2fac37f2cba3ccf2a23ce30d3d23f34d17d099b", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": ">=5.3.0", + "psr/log": "1.0.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "time": "2016-04-22T03:29:29+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "PayPal": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "PayPal", + "homepage": "https://github.com/paypal/rest-api-sdk-php/contributors" + } + ], + "description": "PayPal's PHP SDK for REST APIs", + "homepage": "http://paypal.github.io/PayPal-PHP-SDK/", + "keywords": [ + "payments", + "paypal", + "rest", + "sdk" + ], + "abandoned": true + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "time": "2017-09-11T18:02:19+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@php.net", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", - "homepage": "https://github.com/ircmaxell/password_compat", - "keywords": [ - "hashing", - "password" - ], - "install-path": "../ircmaxell/password-compat" + } }, - { - "name": "kriswallsmith/assetic", - "version": "v1.3.2", - "version_normalized": "1.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/kriswallsmith/assetic.git", - "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/9928f7c4ad98b234e3559d1049abd13387f86db5", - "reference": "9928f7c4ad98b234e3559d1049abd13387f86db5", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/process": "~2.1|~3.0" - }, - "conflict": { - "twig/twig": "<1.23" - }, - "require-dev": { - "cssmin/cssmin": "3.0.1", - "joliclic/javascript-packer": "1.1", - "kamicane/packager": "1.0", - "leafo/lessphp": "^0.3.7", - "leafo/scssphp": "~0.1", - "mrclay/minify": "~2.2", - "patchwork/jsqueeze": "~1.0|~2.0", - "phpunit/phpunit": "~4.8", - "psr/log": "~1.0", - "ptachoire/cssembed": "~1.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "twig/twig": "~1.8|~2.0" - }, - "suggest": { - "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", - "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", - "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", - "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor", - "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", - "twig/twig": "Assetic provides the integration with the Twig templating engine" - }, - "time": "2015-11-12T13:51:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Assetic": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kris Wallsmith", - "email": "kris.wallsmith@gmail.com", - "homepage": "http://kriswallsmith.net/" - } - ], - "description": "Asset Management for PHP", - "homepage": "https://github.com/kriswallsmith/assetic", - "keywords": [ - "assets", - "compression", - "minification" - ], - "install-path": "../kriswallsmith/assetic" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ] + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.3.2", + "version_normalized": "3.3.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" }, - { - "name": "michelf/php-markdown", - "version": "1.6.0", - "version_normalized": "1.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/michelf/php-markdown.git", - "reference": "156e56ee036505ec637d761ee62dc425d807183c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c", - "reference": "156e56ee036505ec637d761ee62dc425d807183c", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2015-12-24T01:37:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-lib": "1.4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Michelf": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Michel Fortin", - "email": "michel.fortin@michelf.ca", - "homepage": "https://michelf.ca/", - "role": "Developer" - }, - { - "name": "John Gruber", - "homepage": "https://daringfireball.net/" - } - ], - "description": "PHP Markdown", - "homepage": "https://michelf.ca/projects/php-markdown/", - "keywords": [ - "markdown" - ], - "install-path": "../michelf/php-markdown" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", + "shasum": "" }, - { - "name": "myclabs/deep-copy", - "version": "1.7.0", - "version_normalized": "1.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" - }, - "time": "2017-10-19T19:58:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "install-path": "../myclabs/deep-copy" + "require": { + "php": "^5.6 || ^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" }, - { - "name": "oyejorge/less.php", - "version": "v1.7.0.14", - "version_normalized": "1.7.0.14", - "source": { - "type": "git", - "url": "https://github.com/oyejorge/less.php.git", - "reference": "42925c5a01a07d67ca7e82dfc8fb31814d557bc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/oyejorge/less.php/zipball/42925c5a01a07d67ca7e82dfc8fb31814d557bc9", - "reference": "42925c5a01a07d67ca7e82dfc8fb31814d557bc9", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.24" - }, - "time": "2017-03-28T22:19:25+00:00", - "bin": [ - "bin/lessc" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Less": "lib/" - }, - "classmap": [ - "lessc.inc.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Matt Agar", - "homepage": "https://github.com/agar" - }, - { - "name": "Martin Jantošovič", - "homepage": "https://github.com/Mordred" - }, - { - "name": "Josh Schmidt", - "homepage": "https://github.com/oyejorge" - } - ], - "description": "PHP port of the Javascript version of LESS http://lesscss.org (Originally maintained by Josh Schmidt)", - "homepage": "http://lessphp.gpeasy.com", - "keywords": [ - "css", - "less", - "less.js", - "lesscss", - "php", - "stylesheet" - ], - "abandoned": true, - "install-path": "../oyejorge/less.php" + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, - { - "name": "paragonie/random_compat", - "version": "v2.0.17", - "version_normalized": "2.0.17.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", - "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2018-07-04T16:31:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "install-path": "../paragonie/random_compat" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "time": "2017-09-11T18:02:19+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "install-path": "../phpdocumentor/reflection-common" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "3.3.2", - "version_normalized": "3.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", - "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" - }, - "time": "2017-11-10T14:09:06+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "install-path": "../phpdocumentor/reflection-docblock" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "version_normalized": "0.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "time": "2017-07-14T14:27:02+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "install-path": "../phpdocumentor/type-resolver" - }, - { - "name": "phpspec/prophecy", - "version": "1.8.0", - "version_normalized": "1.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "time": "2018-08-05T17:53:17+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "install-path": "../phpspec/prophecy" - }, - { - "name": "phpunit/php-code-coverage", - "version": "4.0.8", - "version_normalized": "4.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" - }, - "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-xdebug": "^2.5.1" - }, - "time": "2017-04-02T07:44:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ + "time": "2017-11-10T14:09:06+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "install-path": "../phpunit/php-code-coverage" + } }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "version_normalized": "1.4.5.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2017-11-27T13:52:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock." + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "version_normalized": "0.4.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "time": "2017-07-14T14:27:02+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "install-path": "../phpunit/php-file-iterator" + } }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "version_normalized": "1.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2015-06-21T13:50:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "install-path": "../phpunit/php-text-template" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ] + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "version_normalized": "1.8.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "version_normalized": "1.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "time": "2017-02-26T11:10:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "install-path": "../phpunit/php-timer" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" }, - { - "name": "phpunit/php-token-stream", - "version": "1.4.12", - "version_normalized": "1.4.12.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "time": "2017-12-04T08:55:13+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "install-path": "../phpunit/php-token-stream" + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, - { - "name": "phpunit/phpunit", - "version": "5.7.27", - "version_normalized": "5.7.27.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" - }, - "time": "2018-02-01T05:50:59+00:00", - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "install-path": "../phpunit/phpunit" + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", - "version_normalized": "3.4.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" - }, - "time": "2017-06-30T09:13:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "install-path": "../phpunit/phpunit-mock-objects" + "time": "2018-08-05T17:53:17+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } }, - { - "name": "psr/cache", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-08-06T20:24:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "install-path": "../psr/cache" + "installation-source": "dist", + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } }, - { - "name": "psr/log", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", - "shasum": "" - }, - "time": "2012-12-21T11:40:51+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Psr\\Log\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "install-path": "../psr/log" + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ] + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "version_normalized": "4.0.8.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2017-10-23T01:57:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "install-path": "../psr/simple-cache" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" }, - { - "name": "ptachoire/cssembed", - "version": "v1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/krichprollsch/phpCssEmbed.git", - "reference": "406c6d5b846cafa9186f9944a6210d0e6fed154b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/krichprollsch/phpCssEmbed/zipball/406c6d5b846cafa9186f9944a6210d0e6fed154b", - "reference": "406c6d5b846cafa9186f9944a6210d0e6fed154b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2013-07-22T20:01:48+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "CssEmbed": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pierre Tachoire", - "email": "pierre.tachoire@gmail.com" - } - ], - "description": "Css url embed library.", - "homepage": "https://github.com/krichprollsch/phpCssEmbed", - "keywords": [ - "css", - "url" - ], - "install-path": "../ptachoire/cssembed" + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "time": "2017-03-04T06:30:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "install-path": "../sebastian/code-unit-reverse-lookup" + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "version_normalized": "1.2.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2017-01-29T09:50:25+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "install-path": "../sebastian/comparator" + "suggest": { + "ext-xdebug": "^2.5.1" }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "version_normalized": "1.4.3.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "time": "2017-05-22T07:24:03+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "install-path": "../sebastian/diff" + "time": "2017-04-02T07:44:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } }, - { - "name": "sebastian/environment", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0" - }, - "time": "2016-11-26T07:53:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "install-path": "../sebastian/environment" + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "sebastian/exporter", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "time": "2016-11-19T08:54:04+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "install-path": "../sebastian/exporter" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ] + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "version_normalized": "1.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "version_normalized": "1.1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "time": "2015-10-12T03:26:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "install-path": "../sebastian/global-state" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" }, - { - "name": "sebastian/object-enumerator", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~5" - }, - "time": "2017-02-18T15:18:39+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "install-path": "../sebastian/object-enumerator" + "require": { + "php": ">=5.3.3" }, - { - "name": "sebastian/recursion-context", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "time": "2016-11-19T07:33:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "install-path": "../sebastian/recursion-context" + "time": "2017-11-27T13:52:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "time": "2015-07-28T20:34:47+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "install-path": "../sebastian/resource-operations" + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "sebastian/version", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "time": "2016-10-03T07:35:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "install-path": "../sebastian/version" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ] + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, - { - "name": "simplepie/simplepie", - "version": "1.3.1", - "version_normalized": "1.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/simplepie/simplepie.git", - "reference": "ce53709778bc1e2e4deda1651b66e5081398d5cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/simplepie/simplepie/zipball/ce53709778bc1e2e4deda1651b66e5081398d5cc", - "reference": "ce53709778bc1e2e4deda1651b66e5081398d5cc", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "time": "2012-10-30T17:54:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "SimplePie": "library" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Ryan Parman", - "homepage": "http://ryanparman.com/", - "role": "Creator, alumnus developer" - }, - { - "name": "Geoffrey Sneddon", - "homepage": "http://gsnedders.com/", - "role": "Alumnus developer" - }, - { - "name": "Ryan McCue", - "email": "me@ryanmccue.info", - "homepage": "http://ryanmccue.info/", - "role": "Developer" - } - ], - "description": "A simple Atom/RSS parsing library for PHP", - "homepage": "http://simplepie.org/", - "keywords": [ - "atom", - "feeds", - "rss" - ], - "install-path": "../simplepie/simplepie" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" }, - { - "name": "smarty/smarty", - "version": "v3.1.33", - "version_normalized": "3.1.33.0", - "source": { - "type": "git", - "url": "https://github.com/smarty-php/smarty.git", - "reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/dd55b23121e55a3b4f1af90a707a6c4e5969530f", - "reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "time": "2018-09-12T20:54:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "libs/bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Monte Ohrt", - "email": "monte@ohrt.com" - }, - { - "name": "Uwe Tews", - "email": "uwe.tews@googlemail.com" - }, - { - "name": "Rodney Rehm", - "email": "rodney.rehm@medialize.de" - } - ], - "description": "Smarty - the compiling PHP template engine", - "homepage": "http://www.smarty.net", - "keywords": [ - "templating" - ], - "install-path": "../smarty/smarty" + "require": { + "php": ">=5.3.3" }, - { - "name": "spipu/html2pdf", - "version": "v5.2.1", - "version_normalized": "5.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/spipu/html2pdf.git", - "reference": "7dca57b61fdb2d6920635ff2332dbc82d4be19f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spipu/html2pdf/zipball/7dca57b61fdb2d6920635ff2332dbc82d4be19f3", - "reference": "7dca57b61fdb2d6920635ff2332dbc82d4be19f3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^5.4 || ^7.0", - "tecnickcom/tcpdf": "^6.2" - }, - "require-dev": { - "phake/phake": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0", - "squizlabs/php_codesniffer": "^3.0" - }, - "suggest": { - "ext-gd": "Allows to embed images into the PDF", - "fagundes/zff-html2pdf": "if you need to integrate Html2Pdf with Zend Framework 2 (zf2)" - }, - "time": "2018-10-26T13:33:18+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Spipu\\Html2Pdf\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Spipu", - "homepage": "https://github.com/spipu", - "role": "Developer" - } - ], - "description": "Html2Pdf is a HTML to PDF converter written in PHP5 (it uses TCPDF). OFFICIAL PACKAGE", - "homepage": "http://html2pdf.fr/", - "keywords": [ - "html", - "html2pdf", - "pdf" - ], - "install-path": "../spipu/html2pdf" + "time": "2015-06-21T13:50:34+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "stack/builder", - "version": "v1.0.5", - "version_normalized": "1.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/stackphp/builder.git", - "reference": "fb3d136d04c6be41120ebf8c0cc71fe9507d750a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stackphp/builder/zipball/fb3d136d04c6be41120ebf8c0cc71fe9507d750a", - "reference": "fb3d136d04c6be41120ebf8c0cc71fe9507d750a", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/http-foundation": "~2.1|~3.0|~4.0", - "symfony/http-kernel": "~2.1|~3.0|~4.0" - }, - "require-dev": { - "silex/silex": "~1.0" - }, - "time": "2017-11-18T14:57:29+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Stack": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Builder for stack middlewares based on HttpKernelInterface.", - "keywords": [ - "stack" - ], - "install-path": "../stack/builder" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ] + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, - { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.12", - "version_normalized": "5.4.12.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", - "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" - }, - "time": "2018-07-31T09:26:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "install-path": "../swiftmailer/swiftmailer" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" }, - { - "name": "symfony-cmf/routing", - "version": "1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony-cmf/Routing.git", - "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6", - "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "psr/log": "~1.0", - "symfony/http-kernel": "~2.2", - "symfony/routing": "~2.2" - }, - "require-dev": { - "symfony/config": "~2.2", - "symfony/dependency-injection": "~2.0@stable", - "symfony/event-dispatcher": "~2.1" - }, - "suggest": { - "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1" - }, - "time": "2014-10-20T20:55:17+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Cmf\\Component\\Routing\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony CMF Community", - "homepage": "https://github.com/symfony-cmf/Routing/contributors" - } - ], - "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers", - "homepage": "http://cmf.symfony.com", - "keywords": [ - "database", - "routing" - ], - "install-path": "../symfony-cmf/routing" + "require": { + "php": "^5.3.3 || ^7.0" }, - { - "name": "symfony/browser-kit", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "fe44362c97307e7935996cb09d320fcc22619656" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/fe44362c97307e7935996cb09d320fcc22619656", - "reference": "fe44362c97307e7935996cb09d320fcc22619656", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/dom-crawler": "~2.1|~3.0.0" - }, - "require-dev": { - "symfony/css-selector": "^2.0.5|~3.0.0", - "symfony/process": "~2.3.34|^2.7.6|~3.0.0" - }, - "suggest": { - "symfony/process": "" - }, - "time": "2018-07-26T09:03:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/browser-kit" + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, - { - "name": "symfony/cache", - "version": "v3.4.35", - "version_normalized": "3.4.35.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "8d5db9c0cecf8b6f79fa96583fae652224d897da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/8d5db9c0cecf8b6f79fa96583fae652224d897da", - "reference": "8d5db9c0cecf8b6f79fa96583fae652224d897da", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/polyfill-apcu": "~1.1" - }, - "conflict": { - "symfony/var-dumper": "<3.3" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.4", - "predis/predis": "~1.0" - }, - "time": "2019-11-12T12:50:33+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "install-path": "../symfony/cache" + "time": "2017-02-26T11:10:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } }, - { - "name": "symfony/class-loader", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "5694f145b1f7b35a55d7d31c58f12d72803f7d7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/5694f145b1f7b35a55d7d31c58f12d72803f7d7e", - "reference": "5694f145b1f7b35a55d7d31c58f12d72803f7d7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-apcu": "~1.1" - }, - "require-dev": { - "symfony/finder": "^2.0.5|~3.0.0" - }, - "time": "2018-10-30T16:24:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ClassLoader Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/class-loader" + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "symfony/config", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "506aaec58da5b042ec23f7de5cc866eb4b57a21e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/506aaec58da5b042ec23f7de5cc866eb4b57a21e", - "reference": "506aaec58da5b042ec23f7de5cc866eb4b57a21e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0", - "symfony/polyfill-ctype": "~1.8" - }, - "require-dev": { - "symfony/yaml": "~2.7|~3.0.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "time": "2018-10-30T16:24:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/config" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ] + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "version_normalized": "1.4.12.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" }, - { - "name": "symfony/console", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "48ed63767c4add573fb3e9e127d3426db27f78e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/48ed63767c4add573fb3e9e127d3426db27f78e8", - "reference": "48ed63767c4add573fb3e9e127d3426db27f78e8", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/debug": "^2.7.2|~3.0.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/process": "~2.1|~3.0.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" - }, - "time": "2018-10-30T14:26:34+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/console" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" }, - { - "name": "symfony/debug", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "6a198c52b662fa825382f5e65c0c4a56bdaca98e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/6a198c52b662fa825382f5e65c0c4a56bdaca98e", - "reference": "6a198c52b662fa825382f5e65c0c4a56bdaca98e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.2|~3.0.0", - "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" - }, - "time": "2018-10-30T16:24:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/debug" + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" }, - { - "name": "symfony/dependency-injection", - "version": "v2.8.50", - "version_normalized": "2.8.50.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c306198fee8f872a8f5f031e6e4f6f83086992d8", - "reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "conflict": { - "symfony/expression-language": "<2.6" - }, - "require-dev": { - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "time": "2019-04-16T11:33:46+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/dependency-injection" + "require-dev": { + "phpunit/phpunit": "~4.2" }, - { - "name": "symfony/dom-crawler", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "a02078d236b10cbd27e003734afd4cdd35dc7da9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/a02078d236b10cbd27e003734afd4cdd35dc7da9", - "reference": "a02078d236b10cbd27e003734afd4cdd35dc7da9", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "time": "2018-10-02T03:12:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/dom-crawler" + "time": "2017-12-04T08:55:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } }, - { - "name": "symfony/dotenv", - "version": "v3.4.18", - "version_normalized": "3.4.18.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "6e949fc1bfa9d76b8a986fbfaab4dbc188927126" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/6e949fc1bfa9d76b8a986fbfaab4dbc188927126", - "reference": "6e949fc1bfa9d76b8a986fbfaab4dbc188927126", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/process": "~3.2|~4.0" - }, - "time": "2018-10-12T12:54:24+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "install-path": "../symfony/dotenv" + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "symfony/event-dispatcher", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3", - "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "time": "2018-10-20T23:16:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/event-dispatcher" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "abandoned": true + }, + { + "name": "phpunit/phpunit", + "version": "5.7.27", + "version_normalized": "5.7.27.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" }, - { - "name": "symfony/expression-language", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "aa8931b2c8ae64f58db2617cf109deebdb31d967" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/aa8931b2c8ae64f58db2617cf109deebdb31d967", - "reference": "aa8931b2c8ae64f58db2617cf109deebdb31d967", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-07-26T09:03:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ExpressionLanguage Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/expression-language" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "shasum": "" }, - { - "name": "symfony/filesystem", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "56a92481a4969b234b1647b1fd1170281e80e2ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/56a92481a4969b234b1647b1fd1170281e80e2ca", - "reference": "56a92481a4969b234b1647b1fd1170281e80e2ca", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8" - }, - "time": "2018-10-02T03:12:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/filesystem" + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "^1.0.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" }, - { - "name": "symfony/finder", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5ebb438d1aabe9dba93099dd06e0500f97817a6e", - "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-09-21T12:46:38+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/finder" + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" }, - { - "name": "symfony/form", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "783643f8d0aa39a1eedb67747b7ab23949152707" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/783643f8d0aa39a1eedb67747b7ab23949152707", - "reference": "783643f8d0aa39a1eedb67747b7ab23949152707", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", - "symfony/options-resolver": "~2.6", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "~2.3|~3.0.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/doctrine-bridge": "<2.7", - "symfony/framework-bundle": "<2.7", - "symfony/twig-bridge": "<2.7" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/dependency-injection": "~2.7|~3.0.0", - "symfony/http-foundation": "~2.2|~3.0.0", - "symfony/http-kernel": "~2.4|~3.0.0", - "symfony/security-csrf": "^2.8.31|^3.3.13", - "symfony/translation": "^2.0.5|~3.0.0", - "symfony/validator": "^2.8.18|~3.2.5" - }, - "suggest": { - "symfony/framework-bundle": "For templating with PHP.", - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." - }, - "time": "2018-10-20T23:16:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Form\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Form Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/form" + "require-dev": { + "ext-pdo": "*" }, - { - "name": "symfony/http-foundation", - "version": "v2.8.52", - "version_normalized": "2.8.52.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "3929d9fe8148d17819ad0178c748b8d339420709" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3929d9fe8148d17819ad0178c748b8d339420709", - "reference": "3929d9fe8148d17819ad0178c748b8d339420709", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php54": "~1.0", - "symfony/polyfill-php55": "~1.0" - }, - "require-dev": { - "symfony/expression-language": "~2.4|~3.0.0" - }, - "time": "2019-11-12T12:34:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/http-foundation" + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" }, - { - "name": "symfony/http-kernel", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "10b941cef0cd380d8be62772e4882568ec320a71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b941cef0cd380d8be62772e4882568ec320a71", - "reference": "10b941cef0cd380d8be62772e4882568ec320a71", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "psr/log": "~1.0", - "symfony/debug": "^2.6.2", - "symfony/event-dispatcher": "^2.6.7|~3.0.0", - "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/config": "<2.7", - "twig/twig": "<1.34|<2.4,>=2" - }, - "require-dev": { - "symfony/browser-kit": "~2.3|~3.0.0", - "symfony/class-loader": "~2.1|~3.0.0", - "symfony/config": "~2.8", - "symfony/console": "~2.3|~3.0.0", - "symfony/css-selector": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.8|~3.0.0", - "symfony/dom-crawler": "^2.0.5|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/finder": "^2.0.5|~3.0.0", - "symfony/process": "^2.0.5|~3.0.0", - "symfony/routing": "~2.8|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0", - "symfony/templating": "~2.2|~3.0.0", - "symfony/translation": "^2.0.5|~3.0.0", - "symfony/var-dumper": "~2.6|~3.0.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" - }, - "time": "2018-11-03T09:53:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/http-kernel" + "time": "2018-02-01T05:50:59+00:00", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } }, - { - "name": "symfony/intl", - "version": "v3.2.14", - "version_normalized": "3.2.14.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "3fd98dde8e7d1c34c974d65b09e9c32abe88dafe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/3fd98dde8e7d1c34c974d65b09e9c32abe88dafe", - "reference": "3fd98dde8e7d1c34c974d65b09e9c32abe88dafe", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-intl-icu": "~1.0" - }, - "require-dev": { - "symfony/filesystem": "~2.8|~3.0" - }, - "suggest": { - "ext-intl": "to use the component with locales other than \"en\"" - }, - "time": "2017-11-16T17:55:54+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Intl\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Eriksen Costa", - "email": "eriksen.costa@infranology.com.br" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", - "homepage": "https://symfony.com", - "keywords": [ - "i18n", - "icu", - "internationalization", - "intl", - "l10n", - "localization" - ], - "install-path": "../symfony/intl" + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] }, - { - "name": "symfony/lock", - "version": "v3.4.21", - "version_normalized": "3.4.21.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/lock.git", - "reference": "c9b09fe759e803fb0ff51218f48bf1c2328e1133" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/c9b09fe759e803fb0ff51218f48bf1c2328e1133", - "reference": "c9b09fe759e803fb0ff51218f48bf1c2328e1133", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0", - "symfony/polyfill-php70": "~1.0" - }, - "require-dev": { - "predis/predis": "~1.0" - }, - "time": "2019-01-01T17:35:40+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Lock\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Jérémy Derussé", - "email": "jeremy@derusse.com" - } - ], - "description": "Symfony Lock Component", - "homepage": "https://symfony.com", - "keywords": [ - "cas", - "flock", - "locking", - "mutex", - "redlock", - "semaphore" - ], - "install-path": "../symfony/lock" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ] + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.4", + "version_normalized": "3.4.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, - { - "name": "symfony/options-resolver", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "43441c14988c1c66b16db5a88c4a70920f60bd56" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "time": "2017-06-30T09:13:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true + }, + { + "name": "psr/cache", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2016-08-06T20:24:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ] + }, + { + "name": "psr/log", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "time": "2012-12-21T11:40:51+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ] + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-10-23T01:57:42+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ] + }, + { + "name": "ptachoire/cssembed", + "version": "v1.0.2", + "version_normalized": "1.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/krichprollsch/phpCssEmbed.git", + "reference": "406c6d5b846cafa9186f9944a6210d0e6fed154b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/krichprollsch/phpCssEmbed/zipball/406c6d5b846cafa9186f9944a6210d0e6fed154b", + "reference": "406c6d5b846cafa9186f9944a6210d0e6fed154b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2013-07-22T20:01:48+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "CssEmbed": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pierre Tachoire", + "email": "pierre.tachoire@gmail.com" + } + ], + "description": "Css url embed library.", + "homepage": "https://github.com/krichprollsch/phpCssEmbed", + "keywords": [ + "css", + "url" + ] + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "time": "2017-03-04T06:30:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "version_normalized": "1.2.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2017-01-29T09:50:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/43441c14988c1c66b16db5a88c4a70920f60bd56", - "reference": "43441c14988c1c66b16db5a88c4a70920f60bd56", - "shasum": "" + { + "name": "Volker Dusch", + "email": "github@wallbash.com" }, - "require": { - "php": ">=5.3.9" + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" }, - "time": "2018-10-02T11:25:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ] + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "version_normalized": "1.4.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "time": "2017-05-22T07:24:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ] + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "time": "2016-11-26T07:53:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ] + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T08:54:04+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ] + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "version_normalized": "1.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "time": "2015-10-12T03:26:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ] + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "time": "2017-02-18T15:18:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "version_normalized": "2.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2016-11-19T07:33:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "time": "2015-07-28T20:34:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "version_normalized": "2.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "time": "2016-10-03T07:35:21+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version" + }, + { + "name": "simplepie/simplepie", + "version": "1.3.1", + "version_normalized": "1.3.1.0", + "source": { + "type": "git", + "url": "https://github.com/simplepie/simplepie.git", + "reference": "ce53709778bc1e2e4deda1651b66e5081398d5cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplepie/simplepie/zipball/ce53709778bc1e2e4deda1651b66e5081398d5cc", + "reference": "ce53709778bc1e2e4deda1651b66e5081398d5cc", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "time": "2012-10-30T17:54:03+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-0": { + "SimplePie": "library" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ryan Parman", + "homepage": "http://ryanparman.com/", + "role": "Creator, alumnus developer" + }, + { + "name": "Geoffrey Sneddon", + "homepage": "http://gsnedders.com/", + "role": "Alumnus developer" + }, + { + "name": "Ryan McCue", + "email": "me@ryanmccue.info", + "homepage": "http://ryanmccue.info/", + "role": "Developer" + } + ], + "description": "A simple Atom/RSS parsing library for PHP", + "homepage": "http://simplepie.org/", + "keywords": [ + "atom", + "feeds", + "rss" + ] + }, + { + "name": "smarty/smarty", + "version": "v3.1.33", + "version_normalized": "3.1.33.0", + "source": { + "type": "git", + "url": "https://github.com/smarty-php/smarty.git", + "reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/dd55b23121e55a3b4f1af90a707a6c4e5969530f", + "reference": "dd55b23121e55a3b4f1af90a707a6c4e5969530f", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "time": "2018-09-12T20:54:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "libs/bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Monte Ohrt", + "email": "monte@ohrt.com" + }, + { + "name": "Uwe Tews", + "email": "uwe.tews@googlemail.com" + }, + { + "name": "Rodney Rehm", + "email": "rodney.rehm@medialize.de" + } + ], + "description": "Smarty - the compiling PHP template engine", + "homepage": "http://www.smarty.net", + "keywords": [ + "templating" + ] + }, + { + "name": "spipu/html2pdf", + "version": "v5.2.1", + "version_normalized": "5.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/spipu/html2pdf.git", + "reference": "7dca57b61fdb2d6920635ff2332dbc82d4be19f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spipu/html2pdf/zipball/7dca57b61fdb2d6920635ff2332dbc82d4be19f3", + "reference": "7dca57b61fdb2d6920635ff2332dbc82d4be19f3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^5.4 || ^7.0", + "tecnickcom/tcpdf": "^6.2" + }, + "require-dev": { + "phake/phake": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "suggest": { + "ext-gd": "Allows to embed images into the PDF", + "fagundes/zff-html2pdf": "if you need to integrate Html2Pdf with Zend Framework 2 (zf2)" + }, + "time": "2018-10-26T13:33:18+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Spipu\\Html2Pdf\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Spipu", + "homepage": "https://github.com/spipu", + "role": "Developer" + } + ], + "description": "Html2Pdf is a HTML to PDF converter written in PHP5 (it uses TCPDF). OFFICIAL PACKAGE", + "homepage": "http://html2pdf.fr/", + "keywords": [ + "html", + "html2pdf", + "pdf" + ] + }, + { + "name": "stack/builder", + "version": "v1.0.5", + "version_normalized": "1.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/stackphp/builder.git", + "reference": "fb3d136d04c6be41120ebf8c0cc71fe9507d750a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stackphp/builder/zipball/fb3d136d04c6be41120ebf8c0cc71fe9507d750a", + "reference": "fb3d136d04c6be41120ebf8c0cc71fe9507d750a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/http-foundation": "~2.1|~3.0|~4.0", + "symfony/http-kernel": "~2.1|~3.0|~4.0" + }, + "require-dev": { + "silex/silex": "~1.0" + }, + "time": "2017-11-18T14:57:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Stack": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Builder for stack middlewares based on HttpKernelInterface.", + "keywords": [ + "stack" + ] + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.12", + "version_normalized": "5.4.12.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "time": "2018-07-31T09:26:32+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ] + }, + { + "name": "symfony-cmf/routing", + "version": "1.3.0", + "version_normalized": "1.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony-cmf/Routing.git", + "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/8e87981d72c6930a27585dcd3119f3199f6cb2a6", + "reference": "8e87981d72c6930a27585dcd3119f3199f6cb2a6", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "psr/log": "~1.0", + "symfony/http-kernel": "~2.2", + "symfony/routing": "~2.2" + }, + "require-dev": { + "symfony/config": "~2.2", + "symfony/dependency-injection": "~2.0@stable", + "symfony/event-dispatcher": "~2.1" + }, + "suggest": { + "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1" + }, + "time": "2014-10-20T20:55:17+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Cmf\\Component\\Routing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony CMF Community", + "homepage": "https://github.com/symfony-cmf/Routing/contributors" + } + ], + "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers", + "homepage": "http://cmf.symfony.com", + "keywords": [ + "database", + "routing" + ] + }, + { + "name": "symfony/browser-kit", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "fe44362c97307e7935996cb09d320fcc22619656" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/fe44362c97307e7935996cb09d320fcc22619656", + "reference": "fe44362c97307e7935996cb09d320fcc22619656", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/dom-crawler": "~2.1|~3.0.0" + }, + "require-dev": { + "symfony/css-selector": "^2.0.5|~3.0.0", + "symfony/process": "~2.3.34|^2.7.6|~3.0.0" + }, + "suggest": { + "symfony/process": "" + }, + "time": "2018-07-26T09:03:18+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/cache", + "version": "v3.4.35", + "version_normalized": "3.4.35.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "8d5db9c0cecf8b6f79fa96583fae652224d897da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/8d5db9c0cecf8b6f79fa96583fae652224d897da", + "reference": "8d5db9c0cecf8b6f79fa96583fae652224d897da", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-apcu": "~1.1" + }, + "conflict": { + "symfony/var-dumper": "<3.3" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/dbal": "~2.4", + "predis/predis": "~1.0" + }, + "time": "2019-11-12T12:50:33+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ] + }, + { + "name": "symfony/class-loader", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/class-loader.git", + "reference": "5694f145b1f7b35a55d7d31c58f12d72803f7d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/5694f145b1f7b35a55d7d31c58f12d72803f7d7e", + "reference": "5694f145b1f7b35a55d7d31c58f12d72803f7d7e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-apcu": "~1.1" + }, + "require-dev": { + "symfony/finder": "^2.0.5|~3.0.0" + }, + "time": "2018-10-30T16:24:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/config", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "506aaec58da5b042ec23f7de5cc866eb4b57a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/506aaec58da5b042ec23f7de5cc866eb4b57a21e", + "reference": "506aaec58da5b042ec23f7de5cc866eb4b57a21e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" + }, + "require-dev": { + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "time": "2018-10-30T16:24:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/console", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "48ed63767c4add573fb3e9e127d3426db27f78e8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/48ed63767c4add573fb3e9e127d3426db27f78e8", + "reference": "48ed63767c4add573fb3e9e127d3426db27f78e8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "^2.7.2|~3.0.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/process": "~2.1|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "time": "2018-10-30T14:26:34+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/debug", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "6a198c52b662fa825382f5e65c0c4a56bdaca98e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/6a198c52b662fa825382f5e65c0c4a56bdaca98e", + "reference": "6a198c52b662fa825382f5e65c0c4a56bdaca98e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.2|~3.0.0", + "symfony/http-kernel": "~2.3.24|~2.5.9|^2.6.2|~3.0.0" + }, + "time": "2018-10-30T16:24:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.8.50", + "version_normalized": "2.8.50.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c306198fee8f872a8f5f031e6e4f6f83086992d8", + "reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "time": "2019-04-16T11:33:46+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/dom-crawler", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "a02078d236b10cbd27e003734afd4cdd35dc7da9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/a02078d236b10cbd27e003734afd4cdd35dc7da9", + "reference": "a02078d236b10cbd27e003734afd4cdd35dc7da9", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "time": "2018-10-02T03:12:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/dotenv", + "version": "v3.4.18", + "version_normalized": "3.4.18.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "6e949fc1bfa9d76b8a986fbfaab4dbc188927126" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/6e949fc1bfa9d76b8a986fbfaab4dbc188927126", + "reference": "6e949fc1bfa9d76b8a986fbfaab4dbc188927126", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "symfony/process": "~3.2|~4.0" + }, + "time": "2018-10-12T12:54:24+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ] + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/76494bc38ff38d90d01913d23b5271acd4d78dd3", + "reference": "76494bc38ff38d90d01913d23b5271acd4d78dd3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "time": "2018-10-20T23:16:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/expression-language", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "aa8931b2c8ae64f58db2617cf109deebdb31d967" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/aa8931b2c8ae64f58db2617cf109deebdb31d967", + "reference": "aa8931b2c8ae64f58db2617cf109deebdb31d967", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2018-07-26T09:03:18+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ExpressionLanguage Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/filesystem", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "56a92481a4969b234b1647b1fd1170281e80e2ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/56a92481a4969b234b1647b1fd1170281e80e2ca", + "reference": "56a92481a4969b234b1647b1fd1170281e80e2ca", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "time": "2018-10-02T03:12:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/finder", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/5ebb438d1aabe9dba93099dd06e0500f97817a6e", + "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2018-09-21T12:46:38+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/form", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "783643f8d0aa39a1eedb67747b7ab23949152707" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/783643f8d0aa39a1eedb67747b7ab23949152707", + "reference": "783643f8d0aa39a1eedb67747b7ab23949152707", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/options-resolver": "~2.6", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "~2.3|~3.0.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/doctrine-bridge": "<2.7", + "symfony/framework-bundle": "<2.7", + "symfony/twig-bridge": "<2.7" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/dependency-injection": "~2.7|~3.0.0", + "symfony/http-foundation": "~2.2|~3.0.0", + "symfony/http-kernel": "~2.4|~3.0.0", + "symfony/security-csrf": "^2.8.31|^3.3.13", + "symfony/translation": "^2.0.5|~3.0.0", + "symfony/validator": "^2.8.18|~3.2.5" + }, + "suggest": { + "symfony/framework-bundle": "For templating with PHP.", + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." + }, + "time": "2018-10-20T23:16:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Form Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/http-foundation", + "version": "v2.8.52", + "version_normalized": "2.8.52.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "3929d9fe8148d17819ad0178c748b8d339420709" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3929d9fe8148d17819ad0178c748b8d339420709", + "reference": "3929d9fe8148d17819ad0178c748b8d339420709", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php54": "~1.0", + "symfony/polyfill-php55": "~1.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0.0" + }, + "time": "2019-11-12T12:34:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/http-kernel", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "10b941cef0cd380d8be62772e4882568ec320a71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b941cef0cd380d8be62772e4882568ec320a71", + "reference": "10b941cef0cd380d8be62772e4882568ec320a71", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/debug": "^2.6.2", + "symfony/event-dispatcher": "^2.6.7|~3.0.0", + "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<2.7", + "twig/twig": "<1.34|<2.4,>=2" + }, + "require-dev": { + "symfony/browser-kit": "~2.3|~3.0.0", + "symfony/class-loader": "~2.1|~3.0.0", + "symfony/config": "~2.8", + "symfony/console": "~2.3|~3.0.0", + "symfony/css-selector": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.8|~3.0.0", + "symfony/dom-crawler": "^2.0.5|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/finder": "^2.0.5|~3.0.0", + "symfony/process": "^2.0.5|~3.0.0", + "symfony/routing": "~2.8|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0", + "symfony/templating": "~2.2|~3.0.0", + "symfony/translation": "^2.0.5|~3.0.0", + "symfony/var-dumper": "~2.6|~3.0.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "time": "2018-11-03T09:53:57+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/intl", + "version": "v3.2.14", + "version_normalized": "3.2.14.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "3fd98dde8e7d1c34c974d65b09e9c32abe88dafe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/3fd98dde8e7d1c34c974d65b09e9c32abe88dafe", + "reference": "3fd98dde8e7d1c34c974d65b09e9c32abe88dafe", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/polyfill-intl-icu": "~1.0" + }, + "require-dev": { + "symfony/filesystem": "~2.8|~3.0" + }, + "suggest": { + "ext-intl": "to use the component with locales other than \"en\"" + }, + "time": "2017-11-16T17:55:54+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ] + }, + { + "name": "symfony/lock", + "version": "v3.4.21", + "version_normalized": "3.4.21.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/lock.git", + "reference": "c9b09fe759e803fb0ff51218f48bf1c2328e1133" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/lock/zipball/c9b09fe759e803fb0ff51218f48bf1c2328e1133", + "reference": "c9b09fe759e803fb0ff51218f48bf1c2328e1133", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/polyfill-php70": "~1.0" + }, + "require-dev": { + "predis/predis": "~1.0" + }, + "time": "2019-01-01T17:35:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Lock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Jérémy Derussé", + "email": "jeremy@derusse.com" + } + ], + "description": "Symfony Lock Component", + "homepage": "https://symfony.com", + "keywords": [ + "cas", + "flock", + "locking", + "mutex", + "redlock", + "semaphore" + ] + }, + { + "name": "symfony/options-resolver", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "43441c14988c1c66b16db5a88c4a70920f60bd56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/43441c14988c1c66b16db5a88c4a70920f60bd56", + "reference": "43441c14988c1c66b16db5a88c4a70920f60bd56", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2018-10-02T11:25:20+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ] + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.13.1", + "version_normalized": "1.13.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a8e961c841b9ec52927a87914f8820a1ad8f8116", + "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2019-11-27T13:56:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Apcu\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2018-08-06T14:22:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ] + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644", + "reference": "f22a90256d577c7ef7efad8df1f0201663d57644", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0|~4.0" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "time": "2018-08-06T14:22:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.13.1", + "version_normalized": "1.13.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "time": "2019-11-27T14:18:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php54", + "version": "v1.13.1", + "version_normalized": "1.13.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php54.git", + "reference": "dd1618047426412036e98d159940d58a81fc392c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/dd1618047426412036e98d159940d58a81fc392c", + "reference": "dd1618047426412036e98d159940d58a81fc392c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2019-11-27T13:56:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php54\\": "" + }, + "files": [ + "bootstrap.php" ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php55", + "version": "v1.14.0", + "version_normalized": "1.14.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php55.git", + "reference": "58a98ed90b40a15a1a76c59417386395d5b1ec76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/58a98ed90b40a15a1a76c59417386395d5b1ec76", + "reference": "58a98ed90b40a15a1a76c59417386395d5b1ec76", + "shasum": "" + }, + "require": { + "ircmaxell/password-compat": "~1.0", + "php": ">=5.3.3" + }, + "time": "2020-01-13T11:15:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php55\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "time": "2018-09-21T06:26:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "time": "2018-09-21T06:26:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php71", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php71.git", + "reference": "1766834a22738196eb45486c4ca23c5739513bf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php71/zipball/1766834a22738196eb45486c4ca23c5739513bf4", + "reference": "1766834a22738196eb45486c4ca23c5739513bf4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2018-08-06T14:22:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php71\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2018-09-21T13:07:52+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.10.0", + "version_normalized": "1.10.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "47ad352296d61aae366f075b8609f4dcc28853ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/47ad352296d61aae366f075b8609f4dcc28853ef", + "reference": "47ad352296d61aae366f075b8609f4dcc28853ef", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2018-09-25T06:33:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/polyfill-util", + "version": "v1.14.0", + "version_normalized": "1.14.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ba3cfcea6d0192cae46c62041f61cbb704b526d3", + "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2020-01-13T11:15:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ] + }, + { + "name": "symfony/process", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "a15cb61190c6fe37168600922e82295eb5e5449b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/a15cb61190c6fe37168600922e82295eb5e5449b", + "reference": "a15cb61190c6fe37168600922e82295eb5e5449b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2018-10-05T07:35:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/property-access", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "39eaaa4e316fbb246b9e3ea1150a284185804f49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/39eaaa4e316fbb246b9e3ea1150a284185804f49", + "reference": "39eaaa4e316fbb246b9e3ea1150a284185804f49", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "time": "2018-10-02T12:08:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony PropertyAccess Component", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ] + }, + { + "name": "symfony/routing", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "066acfcc71bb8274dc4fcd6d438a2e368053f3a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/066acfcc71bb8274dc4fcd6d438a2e368053f3a4", + "reference": "066acfcc71bb8274dc4fcd6d438a2e368053f3a4", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "~2.7|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/http-foundation": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "time": "2018-10-02T03:12:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ] + }, + { + "name": "symfony/security", + "version": "v2.8.50", + "version_normalized": "2.8.50.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/security.git", + "reference": "b9e9130cf348d4e85e37ba1d0d27263e33b97534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security/zipball/b9e9130cf348d4e85e37ba1d0d27263e33b97534", + "reference": "b9e9130cf348d4e85e37ba1d0d27263e33b97534", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/event-dispatcher": "~2.2|~3.0.0", + "symfony/http-foundation": "^2.7.38|~3.3.13", + "symfony/http-kernel": "~2.4|~3.0.0", + "symfony/polyfill-php55": "~1.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.0", + "symfony/polyfill-util": "~1.0", + "symfony/property-access": "~2.3|~3.0.0", + "symfony/security-acl": "~2.7|~3.0.0" + }, + "conflict": { + "symfony/http-foundation": "~2.8,<2.8.31" + }, + "replace": { + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/finder": "~2.3|~3.0.0", + "symfony/ldap": "~2.8|~3.0.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.2|~3.0.0", + "symfony/validator": "~2.7.25|^2.8.18|~3.2.5" + }, + "suggest": { + "symfony/expression-language": "For using the expression voter", + "symfony/form": "", + "symfony/ldap": "For using the LDAP user and authentication providers", + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/validator": "For using the user password constraint" + }, + "time": "2019-04-16T10:01:12+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\": "" + }, + "exclude-from-classmap": [ + "/Core/Tests/", + "/Csrf/Tests/", + "/Guard/Tests/", + "/Http/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/security-acl", + "version": "v3.0.4", + "version_normalized": "3.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-acl.git", + "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/dc8f10b3bda34e9ddcad49edc7accf61f31fce43", + "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/security-core": "^2.8|^3.0|^4.0|^5.0" + }, + "require-dev": { + "doctrine/common": "~2.2", + "doctrine/dbal": "~2.2", + "psr/log": "~1.0", + "symfony/phpunit-bridge": "^2.8|^3.0|^4.0|^5.0" + }, + "suggest": { + "doctrine/dbal": "For using the built-in ACL implementation", + "symfony/class-loader": "For using the ACL generateSql script", + "symfony/finder": "For using the ACL generateSql script" + }, + "time": "2019-12-12T09:55:57+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Acl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - ACL (Access Control List)", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/serializer", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "b72447abdab3050a46fbedfa11e66e7c515e797d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/b72447abdab3050a46fbedfa11e66e7c515e797d", + "reference": "b72447abdab3050a46fbedfa11e66e7c515e797d", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php55": "~1.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "symfony/config": "~2.2|~3.0.0", + "symfony/property-access": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/yaml": "For using the default YAML mapping loader." + }, + "time": "2018-10-02T03:12:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Serializer Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/translation", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "cb34ec9549ab65f7f512819441f2d6af4d12c294" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/cb34ec9549ab65f7f512819441f2d6af4d12c294", + "reference": "cb34ec9549ab65f7f512819441f2d6af4d12c294", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/yaml": "~2.2|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "time": "2018-10-02T16:27:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/validator", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "7a97eba653f55581bf01f04431a936c4a9a83b93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/7a97eba653f55581bf01f04431a936c4a9a83b93", + "reference": "7a97eba653f55581bf01f04431a936c4a9a83b93", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation": "~2.4|~3.0.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "^1.2.1", + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.4|~3.0.0", + "symfony/http-foundation": "~2.3|~3.0.0", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/property-access": "~2.3|~3.0.0", + "symfony/yaml": "^2.0.5|~3.0.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "time": "2018-10-30T16:24:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Validator Component", + "homepage": "https://symfony.com" + }, + { + "name": "symfony/var-dumper", + "version": "v3.4.38", + "version_normalized": "3.4.38.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "07801f3330aea80d58cbd125ad13a2f0b26c9d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/07801f3330aea80d58cbd125ad13a2f0b26c9d18", + "reference": "07801f3330aea80d58cbd125ad13a2f0b26c9d18", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" + }, + "time": "2020-02-14T12:39:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ] + }, + { + "name": "symfony/yaml", + "version": "v2.8.47", + "version_normalized": "2.8.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "0e16589861f192dbffb19b06683ce3ef58f7f99d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0e16589861f192dbffb19b06683ce3ef58f7f99d", + "reference": "0e16589861f192dbffb19b06683ce3ef58f7f99d", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "time": "2018-10-02T16:27:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com" + }, + { + "name": "tecnickcom/tcpdf", + "version": "6.2.26", + "version_normalized": "6.2.26.0", + "source": { + "type": "git", + "url": "https://github.com/tecnickcom/TCPDF.git", + "reference": "367241059ca166e3a76490f4448c284e0a161f15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/367241059ca166e3a76490f4448c284e0a161f15", + "reference": "367241059ca166e3a76490f4448c284e0a161f15", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2018-10-16T17:24:05+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ "config", - "configuration", - "options" - ], - "install-path": "../symfony/options-resolver" + "include", + "tcpdf.php", + "tcpdf_parser.php", + "tcpdf_import.php", + "tcpdf_barcodes_1d.php", + "tcpdf_barcodes_2d.php", + "include/tcpdf_colors.php", + "include/tcpdf_filters.php", + "include/tcpdf_font_data.php", + "include/tcpdf_fonts.php", + "include/tcpdf_images.php", + "include/tcpdf_static.php", + "include/barcodes/datamatrix.php", + "include/barcodes/pdf417.php", + "include/barcodes/qrcode.php" + ] }, - { - "name": "symfony/polyfill-apcu", - "version": "v1.13.1", - "version_normalized": "1.13.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a8e961c841b9ec52927a87914f8820a1ad8f8116", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2019-11-27T13:56:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Apcu\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-apcu" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Nicola Asuni", + "email": "info@tecnick.com", + "role": "lead" + } + ], + "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", + "homepage": "http://www.tcpdf.org/", + "keywords": [ + "PDFD32000-2008", + "TCPDF", + "barcodes", + "datamatrix", + "pdf", + "pdf417", + "qrcode" + ] + }, + { + "name": "thelia/currency-converter", + "version": "1.0.2", + "version_normalized": "1.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/thelia/CurrencyConverter.git", + "reference": "93dae743cf7cd82cf169012bfd6a8dd43d68b974" }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2018-08-06T14:22:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "install-path": "../symfony/polyfill-ctype" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/CurrencyConverter/zipball/93dae743cf7cd82cf169012bfd6a8dd43d68b974", + "reference": "93dae743cf7cd82cf169012bfd6a8dd43d68b974", + "shasum": "" }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "f22a90256d577c7ef7efad8df1f0201663d57644" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/f22a90256d577c7ef7efad8df1f0201663d57644", - "reference": "f22a90256d577c7ef7efad8df1f0201663d57644", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2018-08-06T14:22:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's ICU-related data and classes", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-intl-icu" + "require": { + "php": ">=5.4.0", + "thelia/math-tools": "~1.0" }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", - "version_normalized": "1.13.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2019-11-27T14:18:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-mbstring" + "require-dev": { + "phpunit/phpunit": "~4.3" }, - { - "name": "symfony/polyfill-php54", - "version": "v1.13.1", - "version_normalized": "1.13.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "dd1618047426412036e98d159940d58a81fc392c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/dd1618047426412036e98d159940d58a81fc392c", - "reference": "dd1618047426412036e98d159940d58a81fc392c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2019-11-27T13:56:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php54\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php54" + "time": "2017-09-30T16:33:49+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, - { - "name": "symfony/polyfill-php55", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "58a98ed90b40a15a1a76c59417386395d5b1ec76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/58a98ed90b40a15a1a76c59417386395d5b1ec76", - "reference": "58a98ed90b40a15a1a76c59417386395d5b1ec76", - "shasum": "" - }, - "require": { - "ircmaxell/password-compat": "~1.0", - "php": ">=5.3.3" - }, - "time": "2020-01-13T11:15:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php55\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php55" + "installation-source": "dist", + "autoload": { + "psr-4": { + "Thelia\\CurrencyConverter\\": "src/" + } }, - { - "name": "symfony/polyfill-php56", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", - "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "time": "2018-09-21T06:26:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php56" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" + ], + "authors": [ + { + "name": "Manuel Raynaud", + "email": "manu@thelia.net" + } + ], + "description": "php 5.4 currency tools" + }, + { + "name": "thelia/hooktest-module", + "version": "1.1", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/thelia/HookTest-module.git", + "reference": "32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb" }, - { - "name": "symfony/polyfill-php70", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", - "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "time": "2018-09-21T06:26:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php70" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/HookTest-module/zipball/32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb", + "reference": "32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb", + "shasum": "" }, - { - "name": "symfony/polyfill-php71", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php71.git", - "reference": "1766834a22738196eb45486c4ca23c5739513bf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php71/zipball/1766834a22738196eb45486c4ca23c5739513bf4", - "reference": "1766834a22738196eb45486c4ca23c5739513bf4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2018-08-06T14:22:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php71\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php71" + "require": { + "thelia/installer": "~1.1" }, - { - "name": "symfony/polyfill-php72", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2018-09-21T13:07:52+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php72" + "time": "2014-12-24T09:52:09+00:00", + "type": "thelia-module", + "extra": { + "installer-name": "HookTest" }, - { - "name": "symfony/polyfill-php73", - "version": "v1.10.0", - "version_normalized": "1.10.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "47ad352296d61aae366f075b8609f4dcc28853ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/47ad352296d61aae366f075b8609f4dcc28853ef", - "reference": "47ad352296d61aae366f075b8609f4dcc28853ef", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2018-09-25T06:33:47+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "install-path": "../symfony/polyfill-php73" + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/" + }, + { + "name": "thelia/hooktest-template", + "version": "1.1", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/thelia/hooktest-template.git", + "reference": "bb0a26df8ecfe7e41e2e391adb22360201088dda" }, - { - "name": "symfony/polyfill-util", - "version": "v1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ba3cfcea6d0192cae46c62041f61cbb704b526d3", - "reference": "ba3cfcea6d0192cae46c62041f61cbb704b526d3", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2020-01-13T11:15:53+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "install-path": "../symfony/polyfill-util" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/hooktest-template/zipball/bb0a26df8ecfe7e41e2e391adb22360201088dda", + "reference": "bb0a26df8ecfe7e41e2e391adb22360201088dda", + "shasum": "" }, - { - "name": "symfony/process", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "a15cb61190c6fe37168600922e82295eb5e5449b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a15cb61190c6fe37168600922e82295eb5e5449b", - "reference": "a15cb61190c6fe37168600922e82295eb5e5449b", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "time": "2018-10-05T07:35:28+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/process" + "require": { + "thelia/installer": "~1.1" }, - { - "name": "symfony/property-access", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "39eaaa4e316fbb246b9e3ea1150a284185804f49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/39eaaa4e316fbb246b9e3ea1150a284185804f49", - "reference": "39eaaa4e316fbb246b9e3ea1150a284185804f49", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8" - }, - "time": "2018-10-02T12:08:28+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony PropertyAccess Component", - "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], - "install-path": "../symfony/property-access" + "time": "2014-12-24T09:51:48+00:00", + "type": "thelia-frontoffice-template", + "extra": { + "installer-name": "hooktest" }, - { - "name": "symfony/routing", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "066acfcc71bb8274dc4fcd6d438a2e368053f3a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/066acfcc71bb8274dc4fcd6d438a2e368053f3a4", - "reference": "066acfcc71bb8274dc4fcd6d438a2e368053f3a4", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "conflict": { - "symfony/config": "<2.7" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "~2.7|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/http-foundation": "~2.3|~3.0.0", - "symfony/yaml": "^2.0.5|~3.0.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "time": "2018-10-02T03:12:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "install-path": "../symfony/routing" + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/" + }, + { + "name": "thelia/installer", + "version": "1.3", + "version_normalized": "1.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/thelia/installer.git", + "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe" }, - { - "name": "symfony/security", - "version": "v2.8.50", - "version_normalized": "2.8.50.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "b9e9130cf348d4e85e37ba1d0d27263e33b97534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/b9e9130cf348d4e85e37ba1d0d27263e33b97534", - "reference": "b9e9130cf348d4e85e37ba1d0d27263e33b97534", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/event-dispatcher": "~2.2|~3.0.0", - "symfony/http-foundation": "^2.7.38|~3.3.13", - "symfony/http-kernel": "~2.4|~3.0.0", - "symfony/polyfill-php55": "~1.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/polyfill-util": "~1.0", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/security-acl": "~2.7|~3.0.0" - }, - "conflict": { - "symfony/http-foundation": "~2.8,<2.8.31" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/finder": "~2.3|~3.0.0", - "symfony/ldap": "~2.8|~3.0.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "~2.2|~3.0.0", - "symfony/validator": "~2.7.25|^2.8.18|~3.2.5" - }, - "suggest": { - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" - }, - "time": "2019-04-16T10:01:12+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\": "" - }, - "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Security Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/security" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/installer/zipball/dca473563e05011c7aea3aaebc6f154fef4187fe", + "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe", + "shasum": "" }, - { - "name": "symfony/security-acl", - "version": "v3.0.4", - "version_normalized": "3.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-acl.git", - "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-acl/zipball/dc8f10b3bda34e9ddcad49edc7accf61f31fce43", - "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/security-core": "^2.8|^3.0|^4.0|^5.0" - }, - "require-dev": { - "doctrine/common": "~2.2", - "doctrine/dbal": "~2.2", - "psr/log": "~1.0", - "symfony/phpunit-bridge": "^2.8|^3.0|^4.0|^5.0" - }, - "suggest": { - "doctrine/dbal": "For using the built-in ACL implementation", - "symfony/class-loader": "For using the ACL generateSql script", - "symfony/finder": "For using the ACL generateSql script" - }, - "time": "2019-12-12T09:55:57+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Acl\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Security Component - ACL (Access Control List)", - "homepage": "https://symfony.com", - "install-path": "../symfony/security-acl" + "require": { + "composer-plugin-api": "^1.0||^2.0" }, - { - "name": "symfony/serializer", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "b72447abdab3050a46fbedfa11e66e7c515e797d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/b72447abdab3050a46fbedfa11e66e7c515e797d", - "reference": "b72447abdab3050a46fbedfa11e66e7c515e797d", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php55": "~1.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "symfony/config": "~2.2|~3.0.0", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/yaml": "^2.0.5|~3.0.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader and metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/yaml": "For using the default YAML mapping loader." - }, - "time": "2018-10-02T03:12:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Serializer Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/serializer" + "require-dev": { + "composer/composer": "1.0.*@dev||2.0.*@dev" }, - { - "name": "symfony/translation", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "cb34ec9549ab65f7f512819441f2d6af4d12c294" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/cb34ec9549ab65f7f512819441f2d6af4d12c294", - "reference": "cb34ec9549ab65f7f512819441f2d6af4d12c294", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.7" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8", - "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", - "symfony/yaml": "~2.2|~3.0.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "time": "2018-10-02T16:27:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/translation" + "time": "2020-10-26T10:32:18+00:00", + "type": "composer-plugin", + "extra": { + "class": "Thelia\\Composer\\TheliaInstallerPlugin" }, - { - "name": "symfony/validator", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "7a97eba653f55581bf01f04431a936c4a9a83b93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/7a97eba653f55581bf01f04431a936c4a9a83b93", - "reference": "7a97eba653f55581bf01f04431a936c4a9a83b93", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation": "~2.4|~3.0.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "egulias/email-validator": "^1.2.1", - "symfony/config": "~2.2|~3.0.0", - "symfony/expression-language": "~2.4|~3.0.0", - "symfony/http-foundation": "~2.3|~3.0.0", - "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", - "symfony/property-access": "~2.3|~3.0.0", - "symfony/yaml": "^2.0.5|~3.0.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader and metadata cache.", - "egulias/email-validator": "Strict (RFC compliant) email validation", - "symfony/config": "", - "symfony/expression-language": "For using the 2.4 Expression validator", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For using the 2.4 Validator API", - "symfony/yaml": "" - }, - "time": "2018-10-30T16:24:01+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Validator Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/validator" + "installation-source": "dist", + "autoload": { + "psr-0": { + "Thelia\\Composer": "src/" + } }, - { - "name": "symfony/var-dumper", - "version": "v3.4.38", - "version_normalized": "3.4.38.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "07801f3330aea80d58cbd125ad13a2f0b26c9d18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/07801f3330aea80d58cbd125ad13a2f0b26c9d18", - "reference": "07801f3330aea80d58cbd125ad13a2f0b26c9d18", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "require-dev": { - "ext-iconv": "*", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "ext-symfony_debug": "" - }, - "time": "2020-02-14T12:39:29+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "install-path": "../symfony/var-dumper" - }, - { - "name": "symfony/yaml", - "version": "v2.8.47", - "version_normalized": "2.8.47.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "0e16589861f192dbffb19b06683ce3ef58f7f99d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0e16589861f192dbffb19b06683ce3ef58f7f99d", - "reference": "0e16589861f192dbffb19b06683ce3ef58f7f99d", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8" - }, - "time": "2018-10-02T16:27:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "install-path": "../symfony/yaml" - }, - { - "name": "tecnickcom/tcpdf", - "version": "6.2.26", - "version_normalized": "6.2.26.0", - "source": { - "type": "git", - "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "367241059ca166e3a76490f4448c284e0a161f15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/367241059ca166e3a76490f4448c284e0a161f15", - "reference": "367241059ca166e3a76490f4448c284e0a161f15", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2018-10-16T17:24:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "config", - "include", - "tcpdf.php", - "tcpdf_parser.php", - "tcpdf_import.php", - "tcpdf_barcodes_1d.php", - "tcpdf_barcodes_2d.php", - "include/tcpdf_colors.php", - "include/tcpdf_filters.php", - "include/tcpdf_font_data.php", - "include/tcpdf_fonts.php", - "include/tcpdf_images.php", - "include/tcpdf_static.php", - "include/barcodes/datamatrix.php", - "include/barcodes/pdf417.php", - "include/barcodes/qrcode.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Nicola Asuni", - "email": "info@tecnick.com", - "role": "lead" - } - ], - "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", - "homepage": "http://www.tcpdf.org/", - "keywords": [ - "PDFD32000-2008", - "TCPDF", - "barcodes", - "datamatrix", - "pdf", - "pdf417", - "qrcode" - ], - "install-path": "../tecnickcom/tcpdf" - }, - { - "name": "thelia/currency-converter", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/thelia/CurrencyConverter.git", - "reference": "93dae743cf7cd82cf169012bfd6a8dd43d68b974" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/CurrencyConverter/zipball/93dae743cf7cd82cf169012bfd6a8dd43d68b974", - "reference": "93dae743cf7cd82cf169012bfd6a8dd43d68b974", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "thelia/math-tools": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.3" - }, - "time": "2017-09-30T16:33:49+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Thelia\\CurrencyConverter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0+" - ], - "authors": [ - { - "name": "Manuel Raynaud", - "email": "manu@thelia.net" - } - ], - "description": "php 5.4 currency tools", - "install-path": "../thelia/currency-converter" - }, - { - "name": "thelia/hooktest-module", - "version": "1.1", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/thelia/HookTest-module.git", - "reference": "32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/HookTest-module/zipball/32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb", - "reference": "32891857fd1e8e9ca5b7a9dbb0960ef3dd525fcb", - "shasum": "" - }, - "require": { - "thelia/installer": "~1.1" - }, - "time": "2014-12-24T09:52:09+00:00", - "type": "thelia-module", - "extra": { - "installer-name": "HookTest" - }, - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "install-path": "../../../local/modules/HookTest" - }, - { - "name": "thelia/hooktest-template", - "version": "1.1", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/thelia/hooktest-template.git", - "reference": "bb0a26df8ecfe7e41e2e391adb22360201088dda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/hooktest-template/zipball/bb0a26df8ecfe7e41e2e391adb22360201088dda", - "reference": "bb0a26df8ecfe7e41e2e391adb22360201088dda", - "shasum": "" - }, - "require": { - "thelia/installer": "~1.1" - }, - "time": "2014-12-24T09:51:48+00:00", - "type": "thelia-frontoffice-template", - "extra": { - "installer-name": "hooktest" - }, - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "install-path": "../../../templates/frontOffice/hooktest" - }, - { - "name": "thelia/installer", - "version": "1.3", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/thelia/installer.git", - "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/installer/zipball/dca473563e05011c7aea3aaebc6f154fef4187fe", - "reference": "dca473563e05011c7aea3aaebc6f154fef4187fe", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0||^2.0" - }, - "require-dev": { - "composer/composer": "1.0.*@dev||2.0.*@dev" - }, - "time": "2020-10-26T10:32:18+00:00", - "type": "composer-plugin", - "extra": { - "class": "Thelia\\Composer\\TheliaInstallerPlugin" - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Thelia\\Composer": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Manuel Raynaud", - "email": "raynaud.manu@gmail.com", - "homepage": "https://github.com/lunika" - } - ], - "description": "custom installer for Thelia.", - "keywords": [ - "Thelia", - "Thelia-module", - "Thelia-template" - ], - "support": { - "issues": "https://github.com/thelia/installer/issues", - "source": "https://github.com/thelia/installer/tree/1.3" - }, - "install-path": "../thelia/installer" - }, - { - "name": "thelia/math-tools", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/thelia/math-tools.git", - "reference": "4e66cd5448531a6eaf565acd8b69d9c693da7a3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/math-tools/zipball/4e66cd5448531a6eaf565acd8b69d9c693da7a3a", - "reference": "4e66cd5448531a6eaf565acd8b69d9c693da7a3a", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "4.1.*" - }, - "time": "2015-11-05T15:52:55+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Thelia\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Benjamin Perche", - "email": "bperche@openstudio.com" - } - ], - "description": "Number management library", - "install-path": "../thelia/math-tools" - }, - { - "name": "thelia/propel", - "version": "dev-thelia-2.4", - "version_normalized": "dev-thelia-2.4", - "source": { - "type": "git", - "url": "https://github.com/thelia/Propel2.git", - "reference": "0d49917d48475c54c4ae6c8f780d1838aa810d5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thelia/Propel2/zipball/0d49917d48475c54c4ae6c8f780d1838aa810d5d", - "reference": "0d49917d48475c54c4ae6c8f780d1838aa810d5d", - "shasum": "" - }, - "require": { - "php": ">=5.5|^7.0", - "psr/log": "~1.0", - "symfony/config": "~2.3||~3.0", - "symfony/console": "~2.3||~3.0", - "symfony/event-dispatcher": "*", - "symfony/filesystem": "~2.3||~3.0", - "symfony/finder": "~2.3||~3.0", - "symfony/validator": "~2.3||~3.0.0||~3.1.0||^3.2.4", - "symfony/yaml": "~2.3||~3.0" - }, - "require-dev": { - "monolog/monolog": "~1.3", - "phpunit/phpunit": "~4.0||~5.0" - }, - "suggest": { - "monolog/monolog": "The recommended logging library to use with Propel." - }, - "time": "2020-03-25T14:16:18+00:00", - "bin": [ - "bin/propel" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "installation-source": "source", - "autoload": { - "psr-0": { - "Propel": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "William Durand", - "email": "william.durand1@gmail.com" - } - ], - "description": "Propel2 is an open-source Object-Relational Mapping (ORM) for PHP 5.5 and up.", - "homepage": "http://www.propelorm.org/", - "keywords": [ - "Active Record", - "orm", - "persistence" - ], - "install-path": "../thelia/propel" - }, - { - "name": "webmozart/assert", - "version": "1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "time": "2018-01-29T19:49:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "install-path": "../webmozart/assert" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Manuel Raynaud", + "email": "raynaud.manu@gmail.com", + "homepage": "https://github.com/lunika" + } + ], + "description": "custom installer for Thelia.", + "keywords": [ + "Thelia", + "Thelia-module", + "Thelia-template" + ], + "support": { + "issues": "https://github.com/thelia/installer/issues", + "source": "https://github.com/thelia/installer/tree/1.3" } - ], - "dev": true, - "dev-package-names": [ - "doctrine/instantiator", - "fzaninotto/faker", - "myclabs/deep-copy", - "phpdocumentor/reflection-common", - "phpdocumentor/reflection-docblock", - "phpdocumentor/type-resolver", - "phpspec/prophecy", - "phpunit/php-code-coverage", - "phpunit/php-file-iterator", - "phpunit/php-text-template", - "phpunit/php-timer", - "phpunit/php-token-stream", - "phpunit/phpunit", - "phpunit/phpunit-mock-objects", - "sebastian/code-unit-reverse-lookup", - "sebastian/comparator", - "sebastian/diff", - "sebastian/environment", - "sebastian/exporter", - "sebastian/global-state", - "sebastian/object-enumerator", - "sebastian/recursion-context", - "sebastian/resource-operations", - "sebastian/version", - "thelia/hooktest-module", - "thelia/hooktest-template", - "thelia/installer", - "webmozart/assert" - ] -} + }, + { + "name": "thelia/math-tools", + "version": "1.0.2", + "version_normalized": "1.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/thelia/math-tools.git", + "reference": "4e66cd5448531a6eaf565acd8b69d9c693da7a3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/math-tools/zipball/4e66cd5448531a6eaf565acd8b69d9c693da7a3a", + "reference": "4e66cd5448531a6eaf565acd8b69d9c693da7a3a", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.1.*" + }, + "time": "2015-11-05T15:52:55+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Thelia\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Benjamin Perche", + "email": "bperche@openstudio.com" + } + ], + "description": "Number management library" + }, + { + "name": "thelia/paypal-module", + "version": "4.0.0", + "version_normalized": "4.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/thelia-modules/PayPal.git", + "reference": "a180202e7abd0313d9390031e1b304a4c06967c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia-modules/PayPal/zipball/a180202e7abd0313d9390031e1b304a4c06967c6", + "reference": "a180202e7abd0313d9390031e1b304a4c06967c6", + "shasum": "" + }, + "require": { + "paypal/rest-api-sdk-php": "1.7.1", + "thelia/installer": "~1.1", + "wazaari/monolog-mysql": "1.0.3" + }, + "time": "2020-11-06T11:20:42+00:00", + "type": "thelia-module", + "extra": { + "installer-name": "PayPal" + }, + "installation-source": "dist", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0+" + ], + "description": "PayPal module for Thelia ecommerce solution " + }, + { + "name": "thelia/propel", + "version": "dev-thelia-2.4", + "version_normalized": "dev-thelia-2.4", + "source": { + "type": "git", + "url": "https://github.com/thelia/Propel2.git", + "reference": "0d49917d48475c54c4ae6c8f780d1838aa810d5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thelia/Propel2/zipball/0d49917d48475c54c4ae6c8f780d1838aa810d5d", + "reference": "0d49917d48475c54c4ae6c8f780d1838aa810d5d", + "shasum": "" + }, + "require": { + "php": ">=5.5|^7.0", + "psr/log": "~1.0", + "symfony/config": "~2.3||~3.0", + "symfony/console": "~2.3||~3.0", + "symfony/event-dispatcher": "*", + "symfony/filesystem": "~2.3||~3.0", + "symfony/finder": "~2.3||~3.0", + "symfony/validator": "~2.3||~3.0.0||~3.1.0||^3.2.4", + "symfony/yaml": "~2.3||~3.0" + }, + "require-dev": { + "monolog/monolog": "~1.3", + "phpunit/phpunit": "~4.0||~5.0" + }, + "suggest": { + "monolog/monolog": "The recommended logging library to use with Propel." + }, + "time": "2020-03-25T14:16:18+00:00", + "bin": [ + "bin/propel" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "installation-source": "source", + "autoload": { + "psr-0": { + "Propel": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "description": "Propel2 is an open-source Object-Relational Mapping (ORM) for PHP 5.5 and up.", + "homepage": "http://www.propelorm.org/", + "keywords": [ + "Active Record", + "orm", + "persistence" + ] + }, + { + "name": "wazaari/monolog-mysql", + "version": "v1.0.3", + "version_normalized": "1.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/waza-ari/monolog-mysql.git", + "reference": "540c7b92245db3e54d6493056ba3a84da2d49b24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/waza-ari/monolog-mysql/zipball/540c7b92245db3e54d6493056ba3a84da2d49b24", + "reference": "540c7b92245db3e54d6493056ba3a84da2d49b24", + "shasum": "" + }, + "require": { + "monolog/monolog": ">1.4.0" + }, + "time": "2015-07-12T22:25:23+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "MySQLHandler\\": "src/MySQLHandler" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Herrmann", + "email": "daniel.herrmann1@gmail.com" + } + ], + "description": "A handler for Monolog that sends messages to MySQL", + "homepage": "https://github.com/waza-ari/monolog-mysql", + "keywords": [ + "database", + "log", + "logging", + "monolog", + "mysql" + ] + }, + { + "name": "webmozart/assert", + "version": "1.3.0", + "version_normalized": "1.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "time": "2018-01-29T19:49:41+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ] + } +] diff --git a/local/I18n/fr_FR.php b/local/I18n/fr_FR.php new file mode 100644 index 00000000..cbd2bd2b --- /dev/null +++ b/local/I18n/fr_FR.php @@ -0,0 +1,7 @@ + [ + 'Latest' => 'Derniers produits', + ], +]; diff --git a/local/media/images/module/WireTransfer-1-logo.png b/local/media/images/module/WireTransfer-1-logo.png new file mode 100644 index 00000000..c131327d Binary files /dev/null and b/local/media/images/module/WireTransfer-1-logo.png differ diff --git a/local/modules/HookContact/templates/frontOffice/default/main-footer-body.html b/local/modules/HookContact/templates/frontOffice/default/main-footer-body.html index 9eea38b6..9ad47d6b 100644 --- a/local/modules/HookContact/templates/frontOffice/default/main-footer-body.html +++ b/local/modules/HookContact/templates/frontOffice/default/main-footer-body.html @@ -18,8 +18,13 @@ {config key="store_phone"} {/if} + +
  • + aomc@outil82.fr +
  • diff --git a/local/modules/HookProductsNew/I18n/frontOffice/default/fr_FR.php b/local/modules/HookProductsNew/I18n/frontOffice/default/fr_FR.php index 297a7334..1467b430 100755 --- a/local/modules/HookProductsNew/I18n/frontOffice/default/fr_FR.php +++ b/local/modules/HookProductsNew/I18n/frontOffice/default/fr_FR.php @@ -1,6 +1,6 @@ '+ Tout voir', 'Latest' => 'Nouveautés', -]; +); diff --git a/local/modules/LocalPickup/Config/config.xml b/local/modules/LocalPickup/Config/config.xml new file mode 100644 index 00000000..fc91bb35 --- /dev/null +++ b/local/modules/LocalPickup/Config/config.xml @@ -0,0 +1,31 @@ + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/LocalPickup/Config/module.xml b/local/modules/LocalPickup/Config/module.xml new file mode 100644 index 00000000..8b956e03 --- /dev/null +++ b/local/modules/LocalPickup/Config/module.xml @@ -0,0 +1,18 @@ + + + LocalPickup\LocalPickup + + Local Pickup + + + Retrait sur place + + 1.2 + + Thelia + info@thelia.net + + delivery + 2.3.0 + alpha + diff --git a/local/modules/LocalPickup/Config/routing.xml b/local/modules/LocalPickup/Config/routing.xml new file mode 100644 index 00000000..32474b3e --- /dev/null +++ b/local/modules/LocalPickup/Config/routing.xml @@ -0,0 +1,9 @@ + + + + + LocalPickup\Controller\SetDeliveryPrice::configure + + diff --git a/local/modules/LocalPickup/Controller/SetDeliveryPrice.php b/local/modules/LocalPickup/Controller/SetDeliveryPrice.php new file mode 100644 index 00000000..addc1564 --- /dev/null +++ b/local/modules/LocalPickup/Controller/SetDeliveryPrice.php @@ -0,0 +1,60 @@ + + * @contributor Thomas Arnaud + */ +class SetDeliveryPrice extends BaseAdminController +{ + public function configure() + { + if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('LocalPickup'), AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('localpickup.form'); + $errmes=null; + + try { + $vform = $this->validateForm($form); + + $price = $vform->get('price')->getData(); + + LocalPickup::setConfigValue(LocalPickup::PRICE_VAR_NAME, floatval($price)); + } catch (\Exception $ex) { + $errmes = $this->createStandardFormValidationErrorMessage($ex); + } + + if (null !== $errmes) { + $this->setupFormErrorContext( + 'configuration', + $errmes, + $form, + $ex + ); + } + + return RedirectResponse::create(URL::getInstance()->absoluteUrl('/admin/module/LocalPickup')); + } +} diff --git a/local/modules/LocalPickup/Form/SetDeliveryPrice.php b/local/modules/LocalPickup/Form/SetDeliveryPrice.php new file mode 100644 index 00000000..af8d1a93 --- /dev/null +++ b/local/modules/LocalPickup/Form/SetDeliveryPrice.php @@ -0,0 +1,53 @@ +formBuilder + ->add( + "price", + "number", + [ + "label"=>Translator::getInstance()->trans("Price", [], LocalPickup::DOMAIN_NAME), + "label_attr"=> [ + "for"=>"pricefield" + ], + "constraints"=> [ new NotBlank(), new GreaterThanOrEqual([ 'value' => 0 ]) ] + ] + ) + ; + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return "set-delivery-price-localpickup"; + } + +} diff --git a/local/modules/LocalPickup/Hook/HookManager.php b/local/modules/LocalPickup/Hook/HookManager.php new file mode 100644 index 00000000..ca70eadd --- /dev/null +++ b/local/modules/LocalPickup/Hook/HookManager.php @@ -0,0 +1,49 @@ + + */ +class HookManager extends BaseHook +{ + public function onModuleConfiguration(HookRenderEvent $event) + { + $event->add( + $this->render( + "module_configuration.html", + [ + 'price' => floatval(LocalPickup::getConfigValue(LocalPickup::PRICE_VAR_NAME, 0)) + ] + ) + ); + } + + public function onOrderInvoiceDeliveryAddress(HookRenderEvent $event) + { + // Show the local delivery template if we're the current delivery module. + if ((null !== $order = $this->getSession()->getOrder()) && $order->getDeliveryModuleId() == LocalPickup::getModuleId()) { + $event->add( + $this->render("localpickup/order-invoice-delivery-address.html", [ + 'order_id' => $event->getArgument('order_id'), + ]) + ); + } + } +} diff --git a/local/modules/LocalPickup/I18n/backOffice/default/en_US.php b/local/modules/LocalPickup/I18n/backOffice/default/en_US.php new file mode 100644 index 00000000..1a865fc8 --- /dev/null +++ b/local/modules/LocalPickup/I18n/backOffice/default/en_US.php @@ -0,0 +1,7 @@ + 'Close', + 'Configure local pickup price' => 'Configure local pickup price ', + 'Save changes' => 'Save changes ', +); diff --git a/local/modules/LocalPickup/I18n/backOffice/default/fr_FR.php b/local/modules/LocalPickup/I18n/backOffice/default/fr_FR.php new file mode 100644 index 00000000..05424582 --- /dev/null +++ b/local/modules/LocalPickup/I18n/backOffice/default/fr_FR.php @@ -0,0 +1,7 @@ + 'Fermer', + 'Configure local pickup price' => 'Configurer le prix du retrait sur place', + 'Save changes' => 'Enregistrer les modifications', +); diff --git a/local/modules/LocalPickup/I18n/en_US.php b/local/modules/LocalPickup/I18n/en_US.php new file mode 100644 index 00000000..f0b1eb69 --- /dev/null +++ b/local/modules/LocalPickup/I18n/en_US.php @@ -0,0 +1,6 @@ + 'Price', + 'price must be a number !' => 'price must be a number !', +); diff --git a/local/modules/LocalPickup/I18n/fr_FR.php b/local/modules/LocalPickup/I18n/fr_FR.php new file mode 100644 index 00000000..d3160cb2 --- /dev/null +++ b/local/modules/LocalPickup/I18n/fr_FR.php @@ -0,0 +1,6 @@ + 'Prix', + 'price must be a number !' => 'Le prix doit être un nombre !', +); diff --git a/local/modules/LocalPickup/LICENSE.txt b/local/modules/LocalPickup/LICENSE.txt new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/local/modules/LocalPickup/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/local/modules/LocalPickup/Listener/SendEMail.php b/local/modules/LocalPickup/Listener/SendEMail.php new file mode 100644 index 00000000..973e29ff --- /dev/null +++ b/local/modules/LocalPickup/Listener/SendEMail.php @@ -0,0 +1,92 @@ + + */ +class SendEMail extends BaseAction implements EventSubscriberInterface +{ + /** + * @var MailerFactory + */ + protected $mailer; + + public function __construct(MailerFactory $mailer) + { + $this->mailer = $mailer; + } + + /* + * Send a mail to the customer qhen the order is set to the Sent Status. + * + * @param OrderEvent $event + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateStatus(OrderEvent $event) + { + if ($event->getOrder()->getDeliveryModuleId() === LocalPickup::getModuleId()) { + if ($event->getOrder()->isSent()) { + $order = $event->getOrder(); + $customer = $order->getCustomer(); + $store = ConfigQuery::create(); + + if (null !== $country = CountryQuery::create()->findPk($store->read("store_country"))) { + $countryName = $country->setLocale($order->getLang()->getLocale())->getTitle(); + } else { + $countryName = ''; + } + + $this->mailer->sendEmailToCustomer( + 'order_confirmation_localpickup', + $customer, + [ + 'order_id' => $order->getId(), + 'order_ref' => $order->getRef(), + 'store_name' => ConfigQuery::read("store_name"), + 'store_address1' => ConfigQuery::read("store_address1"), + 'store_address2' => ConfigQuery::read("store_address2"), + 'store_address3' => ConfigQuery::read("store_address3"), + 'store_zipcode' => ConfigQuery::read("store_zipcode"), + 'store_city' => ConfigQuery::read("store_city"), + 'store_country' => $countryName + ] + ); + } + } + } + + /** + * @inheritdoc + */ + public static function getSubscribedEvents() + { + return array( + TheliaEvents::ORDER_UPDATE_STATUS => array("updateStatus", 128) + ); + } +} diff --git a/local/modules/LocalPickup/Listener/UpdateDeliveryAddress.php b/local/modules/LocalPickup/Listener/UpdateDeliveryAddress.php new file mode 100644 index 00000000..5c873a25 --- /dev/null +++ b/local/modules/LocalPickup/Listener/UpdateDeliveryAddress.php @@ -0,0 +1,107 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace LocalPickup\Listener; + +use LocalPickup\LocalPickup; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Thelia\Action\BaseAction; +use Thelia\Core\Event\Order\OrderAddressEvent; +use Thelia\Core\Event\Order\OrderEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Model\ConfigQuery; +use Thelia\Model\OrderAddressQuery; + +/** + * Class UpdateDeliveryAddress + * @package LocalPickup\Listener + * @contributor Thomas Arnaud + */ +class UpdateDeliveryAddress extends BaseAction implements EventSubscriberInterface +{ + /** + * @param OrderEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + * @throws \Exception + */ + public function updateAddress(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + if ($event->getOrder()->getDeliveryModuleId() === LocalPickup::getModuleId()) { + $address_id = $event->getOrder()->getDeliveryOrderAddressId(); + $address = OrderAddressQuery::create()->findPk($address_id); + + if ($address !== null) { + $address1 = ConfigQuery::read("store_address1"); + $address2 = ConfigQuery::read("store_address2"); + $address3 = ConfigQuery::read("store_address3"); + $zipcode = ConfigQuery::read("store_zipcode"); + $city = ConfigQuery::read("store_city"); + $country = ConfigQuery::read("store_country"); + $name = ConfigQuery::read("store_name"); + + if ($address1 !== null && $zipcode !== null && $city !== null && $country !== null) { + $address_event = new OrderAddressEvent( + $address->getCustomerTitleId(), + $address->getFirstname(), + $address->getLastname(), + $address1, + $address2, + $address3, + $zipcode, + $city, + $country, + $address->getPhone(), + $name, + $address->getCellphone() + ); + + $address_event->setOrderAddress($address); + + $dispatcher->dispatch(TheliaEvents::ORDER_UPDATE_ADDRESS, $address_event); + } + } else { + throw new \Exception("Error: order deliery address doesn't exists"); + } + } + } + + public function setAddress(OrderEvent $event) + { + if ($event->getOrder()->getDeliveryModuleId() === LocalPickup::getModuleId()) { + $event->setDeliveryAddress(null); + } + } + + /** + * @inheritdoc + */ + public static function getSubscribedEvents() + { + return array( + TheliaEvents::ORDER_BEFORE_PAYMENT=> ["updateAddress", 130], + TheliaEvents::ORDER_SET_DELIVERY_MODULE=> ["setAddress", 128] + ); + } +} diff --git a/local/modules/LocalPickup/LocalPickup.php b/local/modules/LocalPickup/LocalPickup.php new file mode 100644 index 00000000..98da11bd --- /dev/null +++ b/local/modules/LocalPickup/LocalPickup.php @@ -0,0 +1,76 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace LocalPickup; + +use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Install\Database; +use Thelia\Model\Country; +use Thelia\Module\AbstractDeliveryModule; + +/** + * Class LocalPickup + * @package LocalPickup + * @author Thelia + */ +class LocalPickup extends AbstractDeliveryModule +{ + const DOMAIN_NAME = 'localpickup'; + + const PRICE_VAR_NAME = 'price'; + + /** + * @inheritdoc + */ + public function getPostage(Country $country) + { + return floatval(LocalPickup::getConfigValue(self::PRICE_VAR_NAME, 0)); + } + + public function update($currentVersion, $newVersion, ConnectionInterface $con = null) + { + if ($newVersion === '1.2') { + $db = new Database($con); + + // Migrate previous price from database to module config + try { + $statement = $db->execute("select price from local_pickup_shipping order by id desc limit 1"); + + $price = floatval($statement->fetchColumn(0)); + + LocalPickup::setConfigValue(self::PRICE_VAR_NAME, $price); + } catch (\Exception $ex) { + //LocalPickup::setConfigValue(self::PRICE_VAR_NAME, 0); + } + } + } + + + /** + * @inheritdoc + */ + public function isValidDelivery(Country $country) + { + return true; + } +} diff --git a/local/modules/LocalPickup/Loop/LocalAddress.php b/local/modules/LocalPickup/Loop/LocalAddress.php new file mode 100644 index 00000000..77b5bc4a --- /dev/null +++ b/local/modules/LocalPickup/Loop/LocalAddress.php @@ -0,0 +1,126 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace LocalPickup\Loop; + +use Symfony\Component\Config\Definition\Exception\Exception; +use Thelia\Core\Template\Element\ArraySearchLoopInterface; +use Thelia\Core\Template\Element\BaseLoop; +use Thelia\Core\Template\Element\LoopResult; +use Thelia\Core\Template\Element\LoopResultRow; +use Thelia\Core\Template\Loop\Argument\Argument; +use Thelia\Core\Template\Loop\Argument\ArgumentCollection; +use Thelia\Model\AddressQuery; +use Thelia\Model\ConfigQuery; + +/** + * Class LocalAddress + * @package LocalPickup\Loop + * @author Thelia + * @method int getId() + */ +class LocalAddress extends BaseLoop implements ArraySearchLoopInterface +{ + /** + * @inheritdoc + */ + public function buildArray() + { + $id = $this->getId(); + + /** @var \Thelia\Core\HttpFoundation\Session\Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + + $address = AddressQuery::create() + ->filterByCustomerId($session->getCustomerUser()->getId()) + ->findPk($id); + + if ($address === null) { + throw new Exception("The requested address doesn't exist"); + } + + /** @var \Thelia\Model\Customer $customer */ + $customer = $session->getCustomerUser(); + + return [ + 'Id' => 0, + 'Label' => $address->getLabel(), + 'CustomerId' => $address->getCustomerId(), + 'TitleId' => $address->getTitleId(), + 'Company' => ConfigQuery::read('store_name'), + 'Firstname' => $customer->getFirstname(), + 'Lastname' => $customer->getLastname(), + 'Address1' => ConfigQuery::read('store_address1'), + 'Address2' => ConfigQuery::read('store_address2'), + 'Address3' => ConfigQuery::read('store_address3'), + 'Zipcode' => ConfigQuery::read('store_zipcode'), + 'City' => ConfigQuery::read('store_city'), + 'CountryId' => ConfigQuery::read('store_country'), + 'Phone' => $address->getPhone(), + 'Cellphone' => $address->getCellphone(), + 'IsDefault' => 0 + ]; + } + + /** + * @inheritdoc + */ + public function parseResults(LoopResult $loopResult) + { + $address = $loopResult->getResultDataCollection(); + $loopResultRow = new LoopResultRow($address); + + $loopResultRow + ->set("ID", $address['Id']) + ->set("LABEL", $address['Label']) + ->set("CUSTOMER", $address['CustomerId']) + ->set("TITLE", $address['TitleId']) + ->set("COMPANY", $address['Company']) + ->set("FIRSTNAME", $address['Firstname']) + ->set("LASTNAME", $address['Lastname']) + ->set("ADDRESS1", $address['Address1']) + ->set("ADDRESS2", $address['Address2']) + ->set("ADDRESS3", $address['Address3']) + ->set("ZIPCODE", $address['Zipcode']) + ->set("CITY", $address['City']) + ->set("COUNTRY", $address['CountryId']) + ->set("PHONE", $address['Phone']) + ->set("CELLPHONE", $address['Cellphone']) + ->set("DEFAULT", $address['IsDefault']) + ; + + $loopResult->addRow($loopResultRow); + + return $loopResult; + } + + /** + * @inheritdoc + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntTypeArgument('id', null, true) + ); + } +} diff --git a/local/modules/LocalPickup/README.md b/local/modules/LocalPickup/README.md new file mode 100644 index 00000000..c01a932e --- /dev/null +++ b/local/modules/LocalPickup/README.md @@ -0,0 +1,101 @@ +LocalPickup module +================== +author: Thelia + +Summary +------- + +fr_FR: +1. Installation +2. Utilisation +3. Boucles +4. Intégration + +en_US: +1. Install notes +2. How to use +3. Loops +4. Integration + +fr_FR +----- + +### Installation + +#### Manually + +* Copiez le module dans le dossier ```/local/modules/``` et assurez-vous que le nom du module est bien LocalPickup. +* Activez le depuis votre interface d'administration Thelia. + +#### Composer + +Ajoutez le module à votre fichier composer.json principal : + +``` +composer require thelia/local-pickup-module:~1.0 +``` + +### Utilisation + +Pour utiliser le module de retrait sur place, allez dans le back-office, onglet Modules, et activez le, +puis cliquez sur "Configurer" sur la ligne du module. Renseignez le prix que vous souhaitez donner au retrait sur place +et enregistrez. + +### Boucles + +1. `address.local` + Même sorties que la boucle `address`, mais avec l'adresse du magasin au lieu de celle du client. + - Arguments: + 1. id | obligatoire | id de l'adresse du client + - Sorties: + Les mêmes variables que la boucle address, mais l'adresse donnée est celle du magasin. + - Utilisation: + ``` + {loop type="address.local" name="yourloopname" id="1"} + + {/loop}``` + +### Intégration + +L'integration utilise les hooks et ne nécessite pas de travaux particuliers. + +en_US +----- + +### Installation notes + +#### Manually + +* Copy the module into ```/local/modules/``` directory and be sure that the name of the module is LocalPickup. +* Activate it in your thelia administration panel + +#### Composer + +Add it in your main thelia composer.json file: + +``` +composer require thelia/local-pickup-module:~1.0 +``` + +### Usage + +To use the module, you first need to activate it in the back-office, tab Modules, and click on "Configure" on the line +of the module. Enter the price you want for local pickup and save. + +### Loops +1. `address.local` + Same output as the `address` loop, with the store adresse instead of the customer address. + - Arguments: + 1. id | mandatory | id of the customer's address + - Output: + The same variables as address loop, but the given address is the store's address. + - Usage: + ``` + {loop type="address.local" name="yourloopname" id="1"} + + {/loop} + ``` + +### Integration + +The modules uses hooks, and does not require specific work. diff --git a/local/modules/LocalPickup/composer.json b/local/modules/LocalPickup/composer.json new file mode 100644 index 00000000..5527cbf0 --- /dev/null +++ b/local/modules/LocalPickup/composer.json @@ -0,0 +1,11 @@ +{ + "name": "thelia/local-pickup-module", + "license": "LGPL-3.0+", + "type": "thelia-module", + "require": { + "thelia/installer": "~1.1" + }, + "extra": { + "installer-name": "LocalPickup" + } +} \ No newline at end of file diff --git a/local/modules/LocalPickup/templates/backOffice/default/module_configuration.html b/local/modules/LocalPickup/templates/backOffice/default/module_configuration.html new file mode 100644 index 00000000..abab6836 --- /dev/null +++ b/local/modules/LocalPickup/templates/backOffice/default/module_configuration.html @@ -0,0 +1,37 @@ +
    +
    +
    + {intl l='Configure local pickup price' d='localpickup.bo.default'} +
    + +
    +
    + + {form name="localpickup.form"} + {if isset($smarty.get.errmes) and !empty($smarty.get.errmes)} +
    + {$smarty.get.errmes} +
    + {/if} + + {form_hidden_fields form=$form} + + {custom_render_form_field field="price"} +
    + + + {currency attr="symbol"} + +
    + {/custom_render_form_field} + +
    + {intl l="Close" d='localpickup.bo.default'} + +
    + {/form} + +
    +
    +
    +
    diff --git a/local/modules/LocalPickup/templates/frontOffice/default/localpickup/order-invoice-delivery-address.html b/local/modules/LocalPickup/templates/frontOffice/default/localpickup/order-invoice-delivery-address.html new file mode 100644 index 00000000..cabe86a9 --- /dev/null +++ b/local/modules/LocalPickup/templates/frontOffice/default/localpickup/order-invoice-delivery-address.html @@ -0,0 +1,25 @@ +
    + {loop type="address.local" name="local-delivery-address" id={order attr="delivery_address"}} +
    {intl l="Retrait en magasin"}
    +
    + {loop type="title" name="customer.title.info" id=$TITLE}{$SHORT}{/loop} {$LASTNAME|upper} {$FIRSTNAME|ucwords} + {$COMPANY} +
    + {$ADDRESS1}
    + {if $ADDRESS2 != ""} + {$ADDRESS2}
    + {/if} + {if $ADDRESS3 != ""} + {$ADDRESS3}
    + {/if} + {$ZIPCODE} + + {$CITY}, + {loop type="country" name="customer.country.info" id=$COUNTRY}{$TITLE}{/loop}{if $STATE}, + {loop type="state" name="customer.state.info" id=$STATE}{$TITLE}{/loop} + {/if} + +
    +
    + {/loop} +
    diff --git a/local/modules/MondialRelay/Config/config-data.json b/local/modules/MondialRelay/Config/config-data.json new file mode 100644 index 00000000..badcd50d --- /dev/null +++ b/local/modules/MondialRelay/Config/config-data.json @@ -0,0 +1,269 @@ +{ + "shippingZones": [ + { + "name": "Mondial Relay - Relay delivery Zone 1", + "delivery_time_in_days": 3, + "delivery_type": 1, + "countries": [ + "FRA", + "BEL", + "LUX", + "MCO" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 4.55 + }, + { + "up_to": 1, + "price_euro": 5.25 + }, + { + "up_to": 2, + "price_euro": 5.95 + }, + { + "up_to": 3, + "price_euro": 6.80 + }, + { + "up_to": 5, + "price_euro": 8 + }, + { + "up_to": 7, + "price_euro": 10.50 + }, + { + "up_to": 10, + "price_euro": 12.75 + }, + { + "up_to": 15, + "price_euro": 15.35 + }, + { + "up_to": 30, + "price_euro": 19.10 + } + ] + }, + { + "name": "Mondial Relay - Relay delivery Zone 2", + "delivery_time_in_days": 5, + "delivery_type": 1, + "countries": [ + "ESP" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 8.40 + }, + { + "up_to": 1, + "price_euro": 9 + }, + { + "up_to": 2, + "price_euro": 9.80 + }, + { + "up_to": 3, + "price_euro": 10.50 + }, + { + "up_to": 5, + "price_euro": 12.80 + }, + { + "up_to": 7, + "price_euro": 15.20 + }, + { + "up_to": 10, + "price_euro": 17.40 + }, + { + "up_to": 15, + "price_euro": 22.80 + }, + { + "up_to": 30, + "price_euro": 27.50 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 1", + "delivery_time_in_days": 3, + "delivery_type": 2, + "countries": [ + "DEU", + "BEL", + "LUX" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 9.50 + }, + { + "up_to": 1, + "price_euro": 9.50 + }, + { + "up_to": 2, + "price_euro": 10.20 + }, + { + "up_to": 3, + "price_euro": 10.90 + }, + { + "up_to": 5, + "price_euro": 12.30 + }, + { + "up_to": 7, + "price_euro": 13.70 + }, + { + "up_to": 10, + "price_euro": 15.80 + }, + { + "up_to": 15, + "price_euro": 19.30 + }, + { + "up_to": 30, + "price_euro": 29.80 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 2", + "delivery_time_in_days": 5, + "delivery_type": 2, + "countries": [ + "GBR", + "ESP" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 10.20 + }, + { + "up_to": 1, + "price_euro": 10.20 + }, + { + "up_to": 2, + "price_euro": 11.30 + }, + { + "up_to": 3, + "price_euro": 12.40 + }, + { + "up_to": 5, + "price_euro": 14.60 + }, + { + "up_to": 7, + "price_euro": 16.80 + }, + { + "up_to": 10, + "price_euro": 20.10 + }, + { + "up_to": 15, + "price_euro": 25.60 + }, + { + "up_to": 30, + "price_euro": 36.60 + } + ] + }, + { + "name": "Mondial Relay - Home delivery Zone 3", + "delivery_time_in_days": 6, + "delivery_type": 2, + "countries": [ + "ITA", + "PRT", + "AUT" + ], + "prices": [ + { + "up_to": 0.5, + "price_euro": 11.20 + }, + { + "up_to": 1, + "price_euro": 11.20 + }, + { + "up_to": 2, + "price_euro": 12.30 + }, + { + "up_to": 3, + "price_euro": 13.40 + }, + { + "up_to": 5, + "price_euro": 15.60 + }, + { + "up_to": 7, + "price_euro": 17.80 + }, + { + "up_to": 10, + "price_euro": 21.10 + }, + { + "up_to": 15, + "price_euro": 26.60 + }, + { + "up_to": 30, + "price_euro": 37.60 + } + ] + } + ], + "insurances": [ + { + "level": 1, + "value": 50, + "price_with_tax_euro": 2 + }, + { + "level": 2, + "value": 125, + "price_with_tax_euro": 3.50 + }, + { + "level": 3, + "value": 250, + "price_with_tax_euro": 5 + }, + { + "level": 4, + "value": 375, + "price_with_tax_euro": 6.50 + }, + { + "level": 5, + "value": 500, + "price_with_tax_euro": 8 + } + ] +} diff --git a/local/modules/MondialRelay/Config/config.xml b/local/modules/MondialRelay/Config/config.xml new file mode 100644 index 00000000..da38c0d4 --- /dev/null +++ b/local/modules/MondialRelay/Config/config.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/MondialRelay/Config/drop.sql b/local/modules/MondialRelay/Config/drop.sql new file mode 100644 index 00000000..1bc8e1d5 --- /dev/null +++ b/local/modules/MondialRelay/Config/drop.sql @@ -0,0 +1,8 @@ +SET FOREIGN_KEY_CHECKS = 0; + +DROP TABLE IF EXISTS `mondial_relay_pickup_address`; +DROP TABLE IF EXISTS `mondial_relay_delivery_price`; +DROP TABLE IF EXISTS `mondial_relay_delivery_insurance`; +DROP TABLE IF EXISTS `mondial_relay_zone_configuration`; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/MondialRelay/Config/module.xml b/local/modules/MondialRelay/Config/module.xml new file mode 100644 index 00000000..21a86e95 --- /dev/null +++ b/local/modules/MondialRelay/Config/module.xml @@ -0,0 +1,26 @@ + + + MondialRelay\MondialRelay + + Mondial Relay delivery + + + Livraison avec Mondial Relay + + + en_US + fr_FR + + 1.0.7 + + Franck Allimant + CQFDev + thelia@cqfdev.fr + www.cqfdev.fr + + delivery + 2.3.0 + prod + diff --git a/local/modules/MondialRelay/Config/routing.xml b/local/modules/MondialRelay/Config/routing.xml new file mode 100644 index 00000000..6038551b --- /dev/null +++ b/local/modules/MondialRelay/Config/routing.xml @@ -0,0 +1,64 @@ + + + + + + + + + MondialRelay\Controller\BackOffice\ConfigurationController::saveAction + + + + + + + MondialRelay\Controller\BackOffice\AreaAttributesController::saveAction + \d+ + \d+ + + + + + + MondialRelay\Controller\BackOffice\PriceController::saveAction + \d+ + \d+ + + + + MondialRelay\Controller\BackOffice\PriceController::createAction + \d+ + \d+ + + + + MondialRelay\Controller\BackOffice\PriceController::deleteAction + \d+ + \d+ + + + + + + MondialRelay\Controller\BackOffice\InsuranceController::saveAction + + + + MondialRelay\Controller\BackOffice\InsuranceController::createAction + + + + MondialRelay\Controller\BackOffice\InsuranceController::deleteAction + \d+ + + + + + + MondialRelay\Controller\FrontOffice\MapManagement::getRelayMapAction + + + diff --git a/local/modules/MondialRelay/Config/schema.xml b/local/modules/MondialRelay/Config/schema.xml new file mode 100644 index 00000000..9fe7b73d --- /dev/null +++ b/local/modules/MondialRelay/Config/schema.xml @@ -0,0 +1,42 @@ + + + + + + + +
    + + + + + + + + + + +
    + + + + + + +
    + + + + + + + + + + +
    + + +
    diff --git a/local/modules/MondialRelay/Config/thelia.sql b/local/modules/MondialRelay/Config/thelia.sql new file mode 100644 index 00000000..59ad01ba --- /dev/null +++ b/local/modules/MondialRelay/Config/thelia.sql @@ -0,0 +1,78 @@ + +# This is a fix for InnoDB in MySQL >= 4.1.x +# It "suspends judgement" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; + +-- --------------------------------------------------------------------- +-- mondial_relay_pickup_address +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_pickup_address`; + +CREATE TABLE `mondial_relay_pickup_address` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `json_relay_data` LONGTEXT NOT NULL, + `order_address_id` INTEGER NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_delivery_price +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_delivery_price`; + +CREATE TABLE `mondial_relay_delivery_price` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `max_weight` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `price_with_tax` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `area_id` INTEGER NOT NULL, + PRIMARY KEY (`id`), + INDEX `fi_mondial_relay_delivery_price_area_id` (`area_id`), + CONSTRAINT `fk_mondial_relay_delivery_price_area_id` + FOREIGN KEY (`area_id`) + REFERENCES `area` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_delivery_insurance +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_delivery_insurance`; + +CREATE TABLE `mondial_relay_delivery_insurance` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `level` INTEGER NOT NULL, + `max_value` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + `price_with_tax` DECIMAL(16,6) DEFAULT 0.000000 NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- mondial_relay_zone_configuration +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `mondial_relay_zone_configuration`; + +CREATE TABLE `mondial_relay_zone_configuration` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `delivery_time` INTEGER NOT NULL, + `delivery_type` INTEGER(1) NOT NULL, + `area_id` INTEGER NOT NULL, + PRIMARY KEY (`id`), + INDEX `fi_mondial_relay_zone_configuration_area_id` (`area_id`), + CONSTRAINT `fk_mondial_relay_zone_configuration_area_id` + FOREIGN KEY (`area_id`) + REFERENCES `area` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php b/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php new file mode 100644 index 00000000..5f76b0fa --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/AreaAttributesController.php @@ -0,0 +1,61 @@ + + */ +class AreaAttributesController extends BaseAdminController +{ + public function saveAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.area_attributes_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + if (null === $zoneConfig = MondialRelayZoneConfigurationQuery::create()->findOneByAreaId($areaId)) { + $zoneConfig = new MondialRelayZoneConfiguration(); + } + + $zoneConfig + ->setAreaId($areaId) + ->setDeliveryTime($data['delivery_time']) + ->setDeliveryType($data['delivery_type']) + ->save(); + + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate area attributes form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php b/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php new file mode 100644 index 00000000..21c941d6 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/ConfigurationController.php @@ -0,0 +1,50 @@ + + */ +class ConfigurationController extends BaseAdminController +{ + public function saveAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.settings_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + foreach ($data as $name => $value) { + MondialRelay::setConfigValue($name, $value); + } + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate configuration form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/general', [ 'error_message' => $errorMessage ]); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php b/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php new file mode 100644 index 00000000..7447ace0 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/InsuranceController.php @@ -0,0 +1,102 @@ + + */ +class InsuranceController extends BaseAdminController +{ + public function saveAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.insurances_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + foreach ($data['max_value'] as $key => $value) { + if (null !== $insurance = MondialRelayDeliveryInsuranceQuery::create()->findPk($key)) { + $insurance + ->setMaxValue($value) + ->setPriceWithTax($data['price_with_tax'][$key]) + ->save(); + } + } + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate insurances form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/insurances', [ 'error_message' => $errorMessage ]); + } + + public function createAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.insurance_create_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryInsuranceQuery::create()->filterByMaxValue($data['max_value'])->delete(); + + (new MondialRelayDeliveryInsurance()) + ->setPriceWithTax($data['price_with_tax']) + ->setMaxValue($data['max_value']) + ->save(); + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate insurances form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/insurances', [ 'error_message' => $errorMessage ]); + } + + /** + * @param $insuranceId + * @return mixed|\Thelia\Core\HttpFoundation\Response + * @throws \Propel\Runtime\Exception\PropelException + */ + public function deleteAction($insuranceId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::DELETE)) { + return $response; + } + + MondialRelayDeliveryInsuranceQuery::create()->filterById($insuranceId)->delete(); + + return $this->render('mondialrelay/ajax/insurances'); + } +} diff --git a/local/modules/MondialRelay/Controller/BackOffice/PriceController.php b/local/modules/MondialRelay/Controller/BackOffice/PriceController.php new file mode 100644 index 00000000..807446c2 --- /dev/null +++ b/local/modules/MondialRelay/Controller/BackOffice/PriceController.php @@ -0,0 +1,111 @@ + + */ +class PriceController extends BaseAdminController +{ + public function saveAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.prices_update_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryPriceQuery::create()->filterByAreaId($areaId)->delete(); + + foreach ($data['max_weight'] as $key => $value) { + (new MondialRelayDeliveryPrice()) + ->setAreaId($areaId) + ->setMaxWeight($value) + ->setPriceWithTax($data['price'][$key]) + ->save(); + } + + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate price form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } + + public function createAction($areaId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::UPDATE)) { + return $response; + } + + $form = $this->createForm('mondialrelay.price_form'); + + $errorMessage = false; + + try { + $viewForm = $this->validateForm($form); + + $data = $viewForm->getData(); + + MondialRelayDeliveryPriceQuery::create()->filterByMaxWeight($data['max_weight'])->delete(); + + (new MondialRelayDeliveryPrice()) + ->setAreaId($areaId) + ->setPriceWithTax($data['price']) + ->setMaxWeight($data['max_weight']) + ->save(); + } catch (\Exception $ex) { + $errorMessage = $ex->getMessage(); + + Tlog::getInstance()->error("Failed to validate price form: $errorMessage"); + } + + return $this->render('mondialrelay/ajax/prices', [ + 'module_id' => $moduleId, + 'error_message' => $errorMessage + ]); + } + + /** + * @param $insuranceId + * @return mixed|\Thelia\Core\HttpFoundation\Response + * @throws \Propel\Runtime\Exception\PropelException + */ + public function deleteAction($priceId, $moduleId) + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'MondialRelay', AccessManager::DELETE)) { + return $response; + } + + MondialRelayDeliveryPriceQuery::create()->filterById($priceId)->delete(); + + return $this->render('mondialrelay/ajax/prices', [ 'module_id' => $moduleId ]); + } +} diff --git a/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php b/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php new file mode 100644 index 00000000..00411c98 --- /dev/null +++ b/local/modules/MondialRelay/Controller/FrontOffice/MapManagement.php @@ -0,0 +1,44 @@ + + * Date: 12/03/2018 10:41 + */ + +namespace MondialRelay\Controller\FrontOffice; + +use MondialRelay\Event\FindRelayEvent; +use MondialRelay\Event\MondialRelayEvents; +use Thelia\Controller\Front\BaseFrontController; +use Thelia\Core\HttpFoundation\JsonResponse; + +require __DIR__ . "/../../vendor/autoload.php"; + +class MapManagement extends BaseFrontController +{ + public function getRelayMapAction() + { + $event = new FindRelayEvent( + intval($this->getRequest()->get('country_id', 0)), + $this->getRequest()->get('city', ''), + $this->getRequest()->get('zipcode', ''), + floatval($this->getRequest()->get('radius', 10)) + ); + + $this->getDispatcher()->dispatch(MondialRelayEvents::FIND_RELAYS, $event); + + + return new JsonResponse([ + 'points' => $event->getPoints(), + 'error' => $event->getError() + ]); + } +} diff --git a/local/modules/MondialRelay/Event/FindRelayEvent.php b/local/modules/MondialRelay/Event/FindRelayEvent.php new file mode 100644 index 00000000..31693538 --- /dev/null +++ b/local/modules/MondialRelay/Event/FindRelayEvent.php @@ -0,0 +1,151 @@ + + * Date: 28/04/2016 14:41 + */ +namespace MondialRelay\Event; + +use Thelia\Core\Event\ActionEvent; + +class FindRelayEvent extends ActionEvent +{ + /** @var int */ + protected $countryId; + + /** @var string */ + protected $city; + + /** @var string */ + protected $zipcode; + + /** @var float */ + protected $searchRadius; + + /** @var array */ + protected $points; + + /** @var string */ + protected $numPointRelais = ''; + + /** @var bool */ + protected $error = ''; + + /** + * FindRelayEvent constructor. + * @param int $countryId + * @param string $city + * @param string $zipcode + * @param float $searchRadius + */ + public function __construct($countryId, $city, $zipcode, $searchRadius) + { + $this->countryId = $countryId; + $this->city = $city; + $this->zipcode = $zipcode; + $this->searchRadius = $searchRadius; + } + + /** + * @return int + */ + public function getCountryId() + { + return $this->countryId; + } + + /** + * @return string + */ + public function getCity() + { + return $this->city; + } + + /** + * @return string + */ + public function getZipcode() + { + return $this->zipcode; + } + + /** + * @return float + */ + public function getSearchRadius() + { + return $this->searchRadius; + } + + /** + * @return array + */ + public function getPoints() + { + return $this->points; + } + + /** + * @param array $points + * @return $this + */ + public function setPoints($points) + { + $this->points = $points; + return $this; + } + + /** + * @return string + */ + public function getNumPointRelais() + { + return $this->numPointRelais; + } + + /** + * @param string $numPointRelais + * @return $this + */ + public function setNumPointRelais($numPointRelais) + { + $this->numPointRelais = $numPointRelais; + return $this; + } + + /** + * @return bool + */ + public function hasError() + { + return ! empty($this->error); + } + + /** + * @param string $error + * @return $this + */ + public function setError($error) + { + $this->error = $error; + return $this; + } + + /** + * @return string $error + */ + public function getError() + { + return $this->error; + } +} diff --git a/local/modules/MondialRelay/Event/MondialRelayEvents.php b/local/modules/MondialRelay/Event/MondialRelayEvents.php new file mode 100644 index 00000000..8dbb215d --- /dev/null +++ b/local/modules/MondialRelay/Event/MondialRelayEvents.php @@ -0,0 +1,21 @@ + + * Date: 12/03/2018 19:39 + */ + +namespace MondialRelay\Event; + +class MondialRelayEvents +{ + const FIND_RELAYS = "mondialrelay.event.find-relays"; +} diff --git a/local/modules/MondialRelay/EventListeners/DeliveryListener.php b/local/modules/MondialRelay/EventListeners/DeliveryListener.php new file mode 100644 index 00000000..a3e26ab6 --- /dev/null +++ b/local/modules/MondialRelay/EventListeners/DeliveryListener.php @@ -0,0 +1,432 @@ +requestStack = $requestStack; + } + + /** + * @return ApiClient + * @throws \SoapFault + */ + protected function getWebServiceClient() + { + return new ApiClient( + new \SoapClient( + MondialRelay::getConfigValue(MondialRelay::WEBSERVICE_URL) + ), + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY) + ); + } + + /** + * @param DeliveryPostageEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function processDeliveryPostageEvent(DeliveryPostageEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $valid = false; + + /** @var Request $session */ + $request = $this->requestStack->getCurrentRequest(); + + /** @var Session $session */ + $session = $request->getSession(); + + // Get and store selected delivery type, if it is defined + switch($request->get('mondial-relay-selected-delivery-mode')) { + case 'pickup': + $selectedDeliveryType = MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE; + break; + case 'home': + $selectedDeliveryType = MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE; + break; + default: + $selectedDeliveryType = $session->get(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + } + + if (null !== $selectedDeliveryType) { + $session->set(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE, $selectedDeliveryType); + } + + // Use the minimum weight if the cart is below this minimum. + $weight = max(MondialRelay::MIN_WEIGHT_KG, $session->getSessionCart($dispatcher)->getWeight()); + + if ($weight <= MondialRelay::MAX_WEIGHT_KG) { + $moduleModel = ModuleQuery::create()->findOneByCode(MondialRelay::getModuleCode()); + + // Find all allowed delivery types for the destination country + $countryHasRelay = $countryHasHome = false; + + $countryInAreaList = CountryAreaQuery::findByCountryAndState($event->getCountry(), $event->getState()); + + $price = PHP_INT_MAX; + + /** @var CountryArea $countryInArea */ + foreach ($countryInAreaList as $countryInArea) { + $areas = AreaDeliveryModuleQuery::create()->filterByAreaId($countryInArea->getAreaId()) + ->filterByModule($moduleModel) + ->find(); + + /** @var AreaDeliveryModule $area */ + foreach ($areas as $area) { + if (null !== $zoneConfig = MondialRelayZoneConfigurationQuery::create()->findOneByAreaId($area->getAreaId())) { + $zoneDeliveryType = $zoneConfig->getDeliveryType(); + + switch ($zoneDeliveryType) { + case MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE: + $countryHasRelay = $countryHasHome = true; + break; + case MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE: + $countryHasHome = true; + break; + case MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE: + $countryHasRelay = true; + break; + } + + // If the area delivery type matches the selected one, or if no zone is selected + if (null === $selectedDeliveryType || $zoneDeliveryType === $selectedDeliveryType) { + // Check if we have a price slice + if (null !== $deliveryPrice = MondialRelayDeliveryPriceQuery::create() + ->filterByAreaId($area->getAreaId()) + ->filterByMaxWeight($weight, Criteria::GREATER_EQUAL) + ->orderByMaxWeight(Criteria::ASC) + ->findOne()) { + $price = min($price, $deliveryPrice->getPriceWithTax()); + + $deliveryDelay = $zoneConfig->getDeliveryTime(); + } + } + } + } + } + + $relayAllowed = MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY, true); + $homeAllowed = MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY, true); + + if (($countryHasHome && $homeAllowed) || ($countryHasRelay && $relayAllowed) && $price !== PHP_INT_MAX) { + // The module could be used ! + $valid = true; + + $deliveryDate = (new \DateTime())->add(new \DateInterval("P" . $deliveryDelay . "D")); + + $event + ->setPostage($price) + ->setDeliveryDate($deliveryDate); + } + } + + $event->setValidModule($valid); + + $event->stopPropagation(); + } + + protected function makeHoraire($str) + { + return substr($str, 0, 2) . ':' . substr($str, 2); + } + + /** + * @param FindRelayEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + * @throws \Exception + */ + public function findRelays(FindRelayEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $days = [ + 'monday' => Translator::getInstance()->trans("Monday"), + 'tuesday' => Translator::getInstance()->trans("Tuesday"), + 'wednesday' => Translator::getInstance()->trans("Wednesday"), + 'thursday' => Translator::getInstance()->trans("Thursday"), + 'friday' => Translator::getInstance()->trans("Friday"), + 'saturday' => Translator::getInstance()->trans("Saturday"), + 'sunday' => Translator::getInstance()->trans("Sunday") + ]; + + $points = []; + + if (null !== $country = CountryQuery::create()->findPk($event->getCountryId())) { + $apiClient = new ApiClient( + new \SoapClient(MondialRelay::getConfigValue(MondialRelay::WEBSERVICE_URL)), + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY) + ); + + $cartWeightInGrammes = 1000 * $this->requestStack + ->getCurrentRequest() + ->getSession() + ->getSessionCart($dispatcher) + ->getWeight(); + + $requestParams = [ + 'NumPointRelais' => $event->getNumPointRelais(), + 'Pays' => strtoupper($country->getIsoalpha2()), + 'Ville' => $event->getCity(), + 'CP' => $event->getZipcode(), + //'Latitude' => "", + //'Longitude' => "", + //'Taille' => "", + 'Poids' => $cartWeightInGrammes, + //'Action' => "", + //'DelaiEnvoi' => "0", + 'RayonRecherche' => $event->getSearchRadius() + ]; + + try { + $points = $apiClient->findDeliveryPoints($requestParams); + } catch (\Exception $ex) { + $points = []; + + $event->setError($ex->getMessage()); + } + } + + $normalizedPoints = []; + + /** @var Point $point */ + foreach ($points as $point) { + $normalizedPoint = [ + 'id' => $point->id(), + 'latitude' => $point->latitude(), + 'longitude' => $point->longitude(), + 'zipcode' => $point->cp(), + 'city' => $point->city(), + 'country' => $point->country(), + 'distance' => $point->distance(), + 'distance_km' => round($point->distance() / 1000, 1) + ]; + + $addresses = $point->address(); + + $nom = $addresses[0]; + if (! empty($adresses[1])) { + $nom .= '
    ' . $addresses[1]; + } + + $normalizedPoint["name"] = $nom; + + $address = $addresses[2]; + if (! empty($adresses[3])) { + $address .= '
    ' . $addresses[3]; + } + + $normalizedPoint["address"] = $address; + + + $horaires = []; + + /** @var BussinessHours $horaire */ + foreach ($point->business_hours() as $horaire) { + if ($horaire->openingTime1() != '0000' && $horaire->openingTime2() !== '0000') { + $data = [ 'day' => $days[$horaire->day()]]; + + $o1 = $horaire->openingTime1(); + $o2 = $horaire->openingTime2(); + + if (! empty($o1) && $o1 != '0000') { + $data['opening_time_1'] = $this->makeHoraire($horaire->openingTime1()); + $data['closing_time_1'] = $this->makeHoraire($horaire->closingTime1()); + } + + if (! empty($o2) && $o2 != '0000') { + $data['opening_time_2'] = $this->makeHoraire($horaire->openingTime2()); + $data['closing_time_2'] = $this->makeHoraire($horaire->closingTime2()); + } + + $horaires[] = $data; + } + } + + $normalizedPoint["openings"] = $horaires; + + $normalizedPoints[] = $normalizedPoint; + } + + $event->setPoints($normalizedPoints); + } + + /** + * Update the order delivery address with MondialRelay point data + * + * @param OrderEvent $event + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateOrderDeliveryAddress(OrderEvent $event) + { + /** @var Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + + if (null !== $mrAddressId = $session->get(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + if (null !== $mrRelayPickup = MondialRelayPickupAddressQuery::create()->findPk($mrAddressId)) { + if (false !== $relayData = json_decode($mrRelayPickup->getJsonRelayData(), true)) { + if (null !== $orderAddress = OrderAddressQuery::create()->findPK($event->getOrder()->getDeliveryOrderAddressId())) { + $orderAddress + ->setCompany($relayData['name']) + ->setFirstname( + Translator::getInstance()->trans( + "Pickup relay #%number", + [ '%number' => $relayData['id']], + MondialRelay::DOMAIN_NAME + ) + ) + ->setLastname('') + ->setAddress1($relayData['address']) + ->setAddress2('') + ->setAddress3('') + ->setZipcode($relayData['zipcode']) + ->setCity($relayData['city']) + ->setCountry(CountryQuery::create()->findOneByIsoalpha2($relayData['country'])) + ->save(); + + $mrRelayPickup + ->setOrderAddressId($orderAddress->getId()) + ->save(); + } + } + } + } + } + + /** + * @param OrderEvent $event + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateCurrentDeliveryAddress(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + /** @var Request $request */ + $request = $this->requestStack->getCurrentRequest(); + + /** @var Session $session */ + $session = $request->getSession(); + + // Reset stored pickup address, if any + if (null !== $mrAddressId = $session->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + // Do not delete, as the customer may have do a back, and restart another order + // MondialRelayPickupAddressQuery::create()->filterById($mrAddressId)->delete(); + } + + if ($event->getDeliveryModule() == MondialRelay::getModuleId()) { + // Check selected MondialRlay mode + $mode = $request->get('mondial-relay-selected-delivery-mode'); + + if ($mode == 'pickup') { + // Get the selected pickup relay + if (null !== $relayId = $request->get('mondialrelay_relay', null)) { + $countryId = $request->get('mondial_relay_country_id', 0); + + // Load pickup data for the selected point + $relayDataEvent = new FindRelayEvent($countryId, '', '', 0); + $relayDataEvent->setNumPointRelais($relayId); + + $dispatcher->dispatch(MondialRelayEvents::FIND_RELAYS, $relayDataEvent); + + // We're supposed to get only one point + $points = $relayDataEvent->getPoints(); + + if (isset($points[0])) { + // Create a new record to store the pickup data + $pickupAddress = new MondialRelayPickupAddress(); + $pickupAddress + ->setJsonRelayData(json_encode($points[0])) + ->save(); + + $session->set(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID, $pickupAddress->getId()); + } + } else { + throw new TheliaProcessException("No Mondial Relay pickeup relay selected."); + } + } elseif ($mode !== 'home') { + throw new TheliaProcessException("Mondial Relay delivery mode was not selected."); + } + } + } + + /** + * Clear stored information once the order has been processed. + * + * @param OrderEvent $event + * @param $eventName + * @param EventDispatcherInterface $dispatcher + */ + public function clearDeliveryData(OrderEvent $event, $eventName, EventDispatcherInterface $dispatcher) + { + $session = $this->requestStack->getCurrentRequest()->getSession(); + + // Clear the session context + $session->remove(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + $session->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID); + } + + public static function getSubscribedEvents() + { + return [ + TheliaEvents::getModuleEvent( + TheliaEvents::MODULE_DELIVERY_GET_POSTAGE, + MondialRelay::getModuleCode() + ) => [ "processDeliveryPostageEvent", 128 ], + TheliaEvents::ORDER_SET_DELIVERY_MODULE => ['updateCurrentDeliveryAddress', 64], + TheliaEvents::ORDER_BEFORE_PAYMENT => ['updateOrderDeliveryAddress', 256], + TheliaEvents::ORDER_CART_CLEAR => ['clearDeliveryData', 256], + + MondialRelayEvents::FIND_RELAYS => [ "findRelays" , 128] + ]; + } +} diff --git a/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php b/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php new file mode 100644 index 00000000..165f9314 --- /dev/null +++ b/local/modules/MondialRelay/EventListeners/SendDeliveryEmail.php @@ -0,0 +1,68 @@ +mailer = $mailer; + } + + /** + * @param OrderEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function updateStatus(OrderEvent $event) + { + $order = $event->getOrder(); + + $deliveryRef = $order->getDeliveryRef(); + + if ($order->isSent() + && + ! empty($deliveryRef) + && + $order->getDeliveryModuleId() == MondialRelay::getModuleId() + ) { + if (null !== $contactEmail = ConfigQuery::read('store_email')) { + $this->mailer->sendEmailToCustomer( + MondialRelay::TRACKING_MESSAGE_NAME, + $order->getCustomer(), + [ + 'order_id' => $order->getId(), + ] + ); + } + } + } + + public static function getSubscribedEvents() + { + return array( + TheliaEvents::ORDER_UPDATE_STATUS => array("updateStatus", 128) + ); + } +} diff --git a/local/modules/MondialRelay/Form/InsuranceCreateForm.php b/local/modules/MondialRelay/Form/InsuranceCreateForm.php new file mode 100644 index 00000000..9460cc94 --- /dev/null +++ b/local/modules/MondialRelay/Form/InsuranceCreateForm.php @@ -0,0 +1,42 @@ + + */ +class InsuranceCreateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_value', + 'number', + [ + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Cart value', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'price_with_tax', + 'number', + [ + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Insurance price', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/InsurancesUpdateForm.php b/local/modules/MondialRelay/Form/InsurancesUpdateForm.php new file mode 100644 index 00000000..2f2c8d51 --- /dev/null +++ b/local/modules/MondialRelay/Form/InsurancesUpdateForm.php @@ -0,0 +1,50 @@ + + */ +class InsurancesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_value', + 'collection', + [ + "type" => 'number', + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Cart value', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ ], + 'allow_add' => true, + 'allow_delete' => true, + ] + )->add( + 'price_with_tax', + 'collection', + [ + "type" => 'number', + "constraints" => [new GreaterThanOrEqual([ 'value' => 0 ])], + 'label' => $this->translator->trans('Insurance price', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ ], + 'allow_add' => true, + 'allow_delete' => true, + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php b/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php new file mode 100644 index 00000000..21d85ded --- /dev/null +++ b/local/modules/MondialRelay/Form/PriceAttributesUpdateForm.php @@ -0,0 +1,47 @@ + + */ +class PriceAttributesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'delivery_time', + 'integer', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Delivery delay', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'delivery_type', + 'choice', + [ + "choices" => [ + MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE => $this->translator->trans('Relay delivery', [], MondialRelay::DOMAIN_NAME), + MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE => $this->translator->trans('Home delivery', [], MondialRelay::DOMAIN_NAME), + MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE => $this->translator->trans('Home and relay delivery', [], MondialRelay::DOMAIN_NAME) + ], + 'label' => $this->translator->trans('Delivery type', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PriceCreateForm.php b/local/modules/MondialRelay/Form/PriceCreateForm.php new file mode 100644 index 00000000..cd9cd2d8 --- /dev/null +++ b/local/modules/MondialRelay/Form/PriceCreateForm.php @@ -0,0 +1,42 @@ + + */ +class PriceCreateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_weight', + 'number', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Weight up to...', [], MondialRelay::DOMAIN_NAME), + ] + )->add( + 'price', + 'number', + [ + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Price', [], MondialRelay::DOMAIN_NAME), + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/PricesUpdateForm.php b/local/modules/MondialRelay/Form/PricesUpdateForm.php new file mode 100644 index 00000000..f92ede49 --- /dev/null +++ b/local/modules/MondialRelay/Form/PricesUpdateForm.php @@ -0,0 +1,48 @@ + + */ +class PricesUpdateForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'max_weight', + 'collection', + [ + "type" => "number", + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Weight up to...', [], MondialRelay::DOMAIN_NAME), + 'allow_add' => true, + 'allow_delete' => true, + ] + )->add( + 'price', + 'collection', + [ + "type" => "number", + "constraints" => [new GreaterThan([ 'value' => 0 ])], + 'label' => $this->translator->trans('Price', [], MondialRelay::DOMAIN_NAME), + 'allow_add' => true, + 'allow_delete' => true, + ] + ) + ; + } +} diff --git a/local/modules/MondialRelay/Form/SettingsForm.php b/local/modules/MondialRelay/Form/SettingsForm.php new file mode 100644 index 00000000..259aedca --- /dev/null +++ b/local/modules/MondialRelay/Form/SettingsForm.php @@ -0,0 +1,105 @@ + + */ +class SettingsForm extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + MondialRelay::CODE_ENSEIGNE, + 'text', + [ + "constraints" => [new NotBlank()], + 'label' => $this->translator->trans('Mondial Relay store code', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('This is the store code, as provided by Mondial Relay.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::PRIVATE_KEY, + 'text', + [ + "constraints" => [new NotBlank()], + 'label' => $this->translator->trans('Private key', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your private key, as provided by Mondial Relay.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_HOME_DELIVERY, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow home delivery', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow delivery at customer address in supported countries.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_RELAY_DELIVERY, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow relay delivery', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow delivery in relays in supported countries.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::ALLOW_INSURANCE, + 'checkbox', + [ + 'required' => false, + 'label' => $this->translator->trans('Allow optional insurance', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Check this box to allow an optionnal insurance selection depending on cart value.', [], MondialRelay::DOMAIN_NAME) + ] + + ] + )->add( + MondialRelay::WEBSERVICE_URL, + 'text', + [ + 'label' => $this->translator->trans('Mondial Relay Web service WSDL URL', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('This is the URL of the Mondial Relay web service WSDL.', [], MondialRelay::DOMAIN_NAME) + ] + ] + )->add( + MondialRelay::GOOGLE_MAPS_API_KEY, + 'text', + [ + 'label' => $this->translator->trans('Google Map API Key', [], MondialRelay::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'This key is required to display relays map. Click here to get one.', + [ "%get_key_url" => "https://developers.google.com/maps/documentation/javascript/get-api-key" ], + MondialRelay::DOMAIN_NAME + ) + ] + ] + ); + ; + } +} diff --git a/local/modules/MondialRelay/Hook/AdminHookManager.php b/local/modules/MondialRelay/Hook/AdminHookManager.php new file mode 100644 index 00000000..788b9bcc --- /dev/null +++ b/local/modules/MondialRelay/Hook/AdminHookManager.php @@ -0,0 +1,57 @@ + MondialRelay::getConfigValue(MondialRelay::CODE_ENSEIGNE), + 'private_key' => MondialRelay::getConfigValue(MondialRelay::PRIVATE_KEY), + 'allow_relay_delivery' => MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY), + 'allow_home_delivery' => MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY), + 'allow_insurance' => MondialRelay::getConfigValue(MondialRelay::ALLOW_INSURANCE), + + 'module_id' => MondialRelay::getModuleId() + ]; + + $event->add( + $this->render('mondialrelay/module-configuration.html', $vars) + ); + } + + public function onMainTopMenuTools(HookRenderBlockEvent $event) + { + $event->add( + [ + 'id' => 'tools_mondial_relay', + 'class' => '', + 'url' => URL::getInstance()->absoluteUrl('/admin/module/MondialRelay'), + 'title' => $this->trans('Mondial Relay', [], MondialRelay::DOMAIN_NAME) + ] + ); + } + + public function onModuleConfigureJs(HookRenderEvent $event) + { + $event + ->add($this->render("mondialrelay/assets/js/mondialrelay.js.html")) + ->add($this->addJS("mondialrelay/assets/js/bootstrap-notify.min.js")) + ; + } +} diff --git a/local/modules/MondialRelay/Hook/EmailHookManager.php b/local/modules/MondialRelay/Hook/EmailHookManager.php new file mode 100644 index 00000000..f9f3a169 --- /dev/null +++ b/local/modules/MondialRelay/Hook/EmailHookManager.php @@ -0,0 +1,65 @@ +add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + 'html_mode' => $htmlMode ? '1' : '0' + ] + ) + ); + } + + public function onDeliveryAddressText(HookRenderEvent $event) + { + $this->renderAddressTemplate($event, false); + } + + public function onDeliveryAddressHtml(HookRenderEvent $event) + { + $this->renderAddressTemplate($event, true); + } + + public function onAfterProductsText(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours-text.html', + [ + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } + + public function onAfterProductsHtml(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours-html.html', + [ + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } +} diff --git a/local/modules/MondialRelay/Hook/FrontHookManager.php b/local/modules/MondialRelay/Hook/FrontHookManager.php new file mode 100644 index 00000000..a034fbb1 --- /dev/null +++ b/local/modules/MondialRelay/Hook/FrontHookManager.php @@ -0,0 +1,53 @@ +getSession()->remove(MondialRelay::SESSION_SELECTED_DELIVERY_TYPE); + $this->getSession()->remove(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID); + + // Get the address id from the request, as the hook don(t give it to us. + $addressId = $this->getRequest()->get('address_id', 0); + + $event->add( + $this->render( + 'mondialrelay/order-delivery-extra.html', + [ + 'module_id' => MondialRelay::getModuleId(), + 'address_id' => $addressId + ] + ) + ); + } + + public function onAccountOrderDeliveryAddress(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'order_id' => $event->getArgument('order'), + 'module_id' => $event->getArgument('module') + ] + ) + ); + } +} + + diff --git a/local/modules/MondialRelay/Hook/PdfHookManager.php b/local/modules/MondialRelay/Hook/PdfHookManager.php new file mode 100644 index 00000000..6f368513 --- /dev/null +++ b/local/modules/MondialRelay/Hook/PdfHookManager.php @@ -0,0 +1,42 @@ +add( + $this->render( + 'mondialrelay/order-delivery-address.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } + public function onAfterDeliveryModule(HookRenderEvent $event) + { + $event->add( + $this->render( + 'mondialrelay/opening-hours.html', + [ + 'module_id' => $event->getArgument('module'), + 'order_id' => $event->getArgument('order'), + ] + ) + ); + } +} diff --git a/local/modules/MondialRelay/I18n/backOffice/default/en_US.php b/local/modules/MondialRelay/I18n/backOffice/default/en_US.php new file mode 100644 index 00000000..7b00e1b8 --- /dev/null +++ b/local/modules/MondialRelay/I18n/backOffice/default/en_US.php @@ -0,0 +1,30 @@ + 'Add a new insurance', + 'Add a new price' => 'Add a new price', + 'Add new insurance' => 'Add new insurance', + 'Add this price' => 'Add this price', + 'Area properties' => 'Area properties', + 'Cart value' => 'Cart value', + 'Cart weight up to...' => 'Cart weight up to...', + 'Configuration' => 'Configuration', + 'Delete this insurance' => 'Delete this insurance', + 'Delete this price' => 'Delete this price', + 'Delivery prices' => 'Delivery prices', + 'Development of this module is sponsored by you\'Nivers web and communication agency in Roanne.' => 'Development of this module is sponsored by you\'Nivers, web and communication agency in Roanne.', + 'Insurance price with tax' => 'Insurance price with tax', + 'Insurances' => 'Insurances', + 'Mondial Relay delivery configuration' => 'Mondial Relay delivery configuration', + 'Price with tax' => 'Price with tax', + 'Prices' => 'Prices', + 'Save' => 'Save', + 'Save changes' => 'Save changes', + 'Saving data, please wait...' => 'Saving data, please wait...', + 'Shipping zone "%name"' => 'Shipping zone "%name"', + 'Sorry, something goes wrong. Please try again.' => 'Sorry, something goes wrong. Please try again.', + 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' => 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.', + 'Update finished.' => 'Update finished.', + 'days' => 'days', + 'kg' => 'kg', +); diff --git a/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php b/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php new file mode 100644 index 00000000..c3d6f922 --- /dev/null +++ b/local/modules/MondialRelay/I18n/backOffice/default/fr_FR.php @@ -0,0 +1,30 @@ + 'Ajouter une assurance', + 'Add a new price' => 'Ajouter un prix', + 'Add new insurance' => 'Ajouter une assurance', + 'Add this price' => 'Ajouter ce prix', + 'Area properties' => 'Propriétés de la zone', + 'Cart value' => 'Montant du panier', + 'Cart weight up to...' => 'Jusqu\'au poids...', + 'Configuration' => 'Configuration', + 'Delete this insurance' => 'Supprimer cette assurance', + 'Delete this price' => 'Supprimer ce prix', + 'Delivery prices' => 'Prix de livraison', + 'Development of this module is sponsored by you\'Nivers web and communication agency in Roanne.' => 'Le développement de ce module est financé par you\'Nivers, créateurs de site Internet à Roanne.', + 'Insurance price with tax' => 'Prix de l\'assurance TTC', + 'Insurances' => 'Assurances', + 'Mondial Relay delivery configuration' => 'Configuration des livraisons avec Mondial Relay', + 'Price with tax' => 'Prix TTC', + 'Prices' => 'Prix', + 'Save' => 'Enregistrer', + 'Save changes' => 'Enregistrer', + 'Saving data, please wait...' => 'Enregistrement en cours, merci de patienter...', + 'Shipping zone "%name"' => 'Zone de livraison "%name"', + 'Sorry, something goes wrong. Please try again.' => 'Quelque chose s\'est mal passé, merdi de ré-essayer.', + 'There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' => 'Il n\'y a pas de zone de livraison attaché à Mondial Relay. Cliquez ici pour configurer les zones de livraison du module', + 'Update finished.' => 'Enregistrement terminé.', + 'days' => 'jours', + 'kg' => 'kg', +); diff --git a/local/modules/MondialRelay/I18n/email/default/en_US.php b/local/modules/MondialRelay/I18n/email/default/en_US.php new file mode 100644 index 00000000..21a492c1 --- /dev/null +++ b/local/modules/MondialRelay/I18n/email/default/en_US.php @@ -0,0 +1,15 @@ + 'Dear %first %last', + 'Details about this order are available in your customer account.' => 'Details about this order are available in your customer account.', + 'Details about this order are available in your customer account: %account_url.' => 'Details about this order are available in your customer account: %account_url.', + 'Mondial Relay pickup location #%num' => 'Mondial Relay pickup location #%num', + 'Pickup relay opening hours:' => 'Pickup relay opening hours:', + 'See you soon at %store at the following address: %url' => 'See you soon at %store at the following address: %url', + 'See you soon at %store' => 'See you soon at %store', + 'The %store team.' => 'The %store team.', + 'Your %ref order has been shipped' => 'Your %ref order has been shipped', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.' => 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis' => 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis', +); diff --git a/local/modules/MondialRelay/I18n/email/default/fr_FR.php b/local/modules/MondialRelay/I18n/email/default/fr_FR.php new file mode 100644 index 00000000..c3955ff7 --- /dev/null +++ b/local/modules/MondialRelay/I18n/email/default/fr_FR.php @@ -0,0 +1,15 @@ + 'Bonjour %first %last', + 'Details about this order are available in your customer account.' => 'Les détails de cette commande sont disponibles dans votre compte client.', + 'Details about this order are available in your customer account: %account_url.' => 'Les détails de cette commande sont disponibles dans votre compte client: %account_url.', + 'Mondial Relay pickup location #%num' => 'Point relais Mondial Relay No. %num', + 'Pickup relay opening hours:' => 'Horaires d\'ouverture du relais', + 'See you soon at %store at the following address: %url' => 'A bientôt sur %store en suivant ce lien: %url', + 'See you soon at %store' => 'A bientôt sur %store', + 'The %store team.' => 'L\'équipe %store.', + 'Your %ref order has been shipped' => 'Votre commande %ref a été expédiée.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery.' => 'Votre commande %order_ref vient de quitter nos entrepôts. Le numéro de suivi est %tracking_ref. Merci de cliquer ici pour obtenir les informations de suivi.', + 'Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis' => 'Votre commande %order_ref vient de quitter nos entrepôts. Le numéro de suivi est %tracking_ref. Pour obtenir des informations sur l\'avancement de votre commande, merci de suivre ce lien: https://www.mondialrelay.fr/suivi-de-colis', +); diff --git a/local/modules/MondialRelay/I18n/en_US.php b/local/modules/MondialRelay/I18n/en_US.php new file mode 100644 index 00000000..074bad18 --- /dev/null +++ b/local/modules/MondialRelay/I18n/en_US.php @@ -0,0 +1,38 @@ + 'Allow home delivery', + 'Allow optional insurance' => 'Allow optional insurance', + 'Allow relay delivery' => 'Allow relay delivery', + 'Cart value' => 'Cart value', + 'Check this box to allow an optionnal insurance selection depending on cart value.' => 'Check this box to allow an optionnal insurance selection depending on cart value.', + 'Check this box to allow delivery at customer address in supported countries.' => 'Check this box to allow delivery at customer address in supported countries.', + 'Check this box to allow delivery in relays in supported countries.' => 'Check this box to allow delivery in relays in supported countries.', + 'Delivery delay' => 'Delivery delay', + 'Delivery type' => 'Delivery type', + 'Friday' => 'Friday', + 'Google Map API Key' => 'Google Map API Key', + 'Home and relay delivery' => 'Home and relay delivery', + 'Home delivery' => 'Home delivery', + 'Insurance price' => 'Insurance price', + 'Monday' => 'Monday', + 'Mondial Relay' => 'Mondial Relay', + 'Mondial Relay Web service WSDL URL' => 'Mondial Relay Web service WSDL URL', + 'Mondial Relay store code' => 'Mondial Relay store code', + 'Mondial Relay tracking information' => 'Mondial Relay tracking information', + 'Pickup relay #%number' => 'Pickup relay #%number', + 'Price' => 'Price', + 'Private key' => 'Private key', + 'Relay delivery' => 'Relay delivery', + 'Saturday' => 'Saturday', + 'Sunday' => 'Sunday', + 'This is the URL of the Mondial Relay web service WSDL.' => 'This is the URL of the Mondial Relay web service WSDL.', + 'This is the store code, as provided by Mondial Relay.' => 'This is the store code, as provided by Mondial Relay.', + 'This key is required to display relays map. Click here to get one.' => 'This key is required to display relays map. Click here to get one.', + 'Thursday' => 'Thursday', + 'Tuesday' => 'Tuesday', + 'Wednesday' => 'Wednesday', + 'Weight up to...' => 'Weight up to...', + 'Your order has been shipped' => 'Your order has been shipped', + 'Your private key, as provided by Mondial Relay.' => 'Your private key, as provided by Mondial Relay.', +); diff --git a/local/modules/MondialRelay/I18n/fr_FR.php b/local/modules/MondialRelay/I18n/fr_FR.php new file mode 100644 index 00000000..15b66128 --- /dev/null +++ b/local/modules/MondialRelay/I18n/fr_FR.php @@ -0,0 +1,38 @@ + 'Autoriser la livraison à domicile', + 'Allow optional insurance' => 'Proposer une assurance optionnelle', + 'Allow relay delivery' => 'Autoriser la livraison en point relais', + 'Cart value' => 'Valeur du panier', + 'Check this box to allow an optionnal insurance selection depending on cart value.' => 'Cochez cette case pour proposer à vos client une assurance optionnelle, fonction du montant du panier', + 'Check this box to allow delivery at customer address in supported countries.' => 'Cochez cette case pour autoriser les livraison à domicile dans les pays ou Mondial Relay le propose', + 'Check this box to allow delivery in relays in supported countries.' => 'Cochez cette case pour autoriser les livraison en pojt relais dans les pays ou Mondial Relay le propose', + 'Delivery delay' => 'Délai de livraison', + 'Delivery type' => 'Type de livraison', + 'Friday' => 'Vendredi', + 'Google Map API Key' => 'Clef d\'API Google Maps', + 'Home and relay delivery' => 'Livraison en point relais ou à domicile', + 'Home delivery' => 'Livraison à mon domicile', + 'Insurance price' => 'Montant de l\'assurance', + 'Monday' => 'Lundi', + 'Mondial Relay' => 'Mondial Relay', + 'Mondial Relay Web service WSDL URL' => 'URL du WSDL du web service Mondial Relay', + 'Mondial Relay store code' => 'Code magasin Mondial Relay', + 'Mondial Relay tracking information' => 'Informations de suivi Mondial Relay', + 'Pickup relay #%number' => 'Point relais No. %number', + 'Price' => 'Prix', + 'Private key' => 'Clef privée', + 'Relay delivery' => 'Livraison en point relais', + 'Saturday' => 'Samedi', + 'Sunday' => 'Dimanche', + 'This is the URL of the Mondial Relay web service WSDL.' => 'Il s\'agit de l\'URL du descripteur du web service Mondial Relay, qui sera appelée par le module', + 'This is the store code, as provided by Mondial Relay.' => 'Il s\'agit du code magasin fourni par Mondial Relay', + 'This key is required to display relays map. Click here to get one.' => 'Cette clef est indispensable pour afficher la carte des points relais. Cliquez ici pour en obtenir une.', + 'Thursday' => 'Jeudi', + 'Tuesday' => 'Mardi', + 'Wednesday' => 'Mercredi', + 'Weight up to...' => 'Jusqu\'au poids...', + 'Your order has been shipped' => 'Votre commande a été expédiée', + 'Your private key, as provided by Mondial Relay.' => 'Votre clef privée, fournie par Mondial Relay', +); diff --git a/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php b/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php new file mode 100644 index 00000000..2e19908b --- /dev/null +++ b/local/modules/MondialRelay/I18n/frontOffice/default/en_US.php @@ -0,0 +1,23 @@ + 'City', + 'Current address can\'t be geolocated' => 'Current address can\'t be geolocated', + 'Expected delivery date: %delivery_date' => 'Expected delivery date: %delivery_date', + 'Find' => 'Find', + 'Find a pickup location around you' => 'Find a pickup location around you', + 'Loading...' => 'Loading...', + 'Mondial Relay home delivery' => 'Mondial Relay home delivery', + 'Mondial Relay pickup location' => 'Mondial Relay pickup location', + 'Mondial Relay pickup location #%num' => 'Mondial Relay pickup #%num', + 'No pickup locations were found for this address.' => 'No pickup locations were found for this address.', + 'Oops, something goes wrong, please try again.' => 'Oops, something goes wrong, please try again.', + 'Pickup location #%number' => 'Pickup location #%number', + 'Pickup location address' => 'Pickup location address', + 'Pickup location opening hours' => 'Pickup location opening hours', + 'Please select a pickup location.' => 'Please select a pickup location.', + 'Search radius' => 'Search radius', + 'Sorry, we failed to get pickup locations. Error is : __ERR__.' => 'Sorry, we failed to get pickup locations. Error is : __ERR__.', + 'Zip code' => 'Zip code', + 'km' => 'km', +); diff --git a/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php b/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php new file mode 100644 index 00000000..bea0ef5b --- /dev/null +++ b/local/modules/MondialRelay/I18n/frontOffice/default/fr_FR.php @@ -0,0 +1,23 @@ + 'Ville', + 'Current address can\'t be geolocated' => 'L\'adresse sélectionné ne peut être géolocalisée, merci de vérifier qu\'elle est correcte.', + 'Expected delivery date: %delivery_date' => 'Date de livraison estimée: %delivery_date', + 'Find' => 'Go', + 'Find a pickup location around you' => 'Trouver un point relais autour de vous', + 'Loading...' => 'Chargement...', + 'Mondial Relay home delivery' => 'Livraison Mondial Relay à mon domicile', + 'Mondial Relay pickup location' => 'Adresse du point relais Mondial Relay', + 'Mondial Relay pickup location #%num' => 'Point relais Mondial Relay No. %num', + 'No pickup locations were found for this address.' => 'Nous n\'avons pas trouvé de point relais autour de cette adresse.', + 'Oops, something goes wrong, please try again.' => 'Oups, quelque chose n\'a pas fonctionné correctement. Merci de recommencer.', + 'Pickup location #%number' => 'Point relais No. %number', + 'Pickup location address' => 'Adresse du point relais', + 'Pickup location opening hours' => 'Horaires d\'ouverture du relais', + 'Please select a pickup location.' => 'Merci de choisir un point relais.', + 'Search radius' => 'Rayon de recherche', + 'Sorry, we failed to get pickup locations. Error is : __ERR__.' => 'Impossible d\'obtenir les points relais. L\'erreur est : __ERR__.', + 'Zip code' => 'Code postal', + 'km' => 'km', +); diff --git a/local/modules/MondialRelay/I18n/pdf/default/en_US.php b/local/modules/MondialRelay/I18n/pdf/default/en_US.php new file mode 100644 index 00000000..9285719e --- /dev/null +++ b/local/modules/MondialRelay/I18n/pdf/default/en_US.php @@ -0,0 +1,6 @@ + 'Mondial Relay pickup location #%num', + 'Pickup relay opening hours:' => 'Pickup relay opening hours:', +); diff --git a/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php b/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php new file mode 100644 index 00000000..9f8033cd --- /dev/null +++ b/local/modules/MondialRelay/I18n/pdf/default/fr_FR.php @@ -0,0 +1,6 @@ + 'Point relais Mondial Relay No. %num', + 'Pickup relay opening hours:' => 'Horaires d\'ouverture du relais', +); diff --git a/local/modules/MondialRelay/LICENSE b/local/modules/MondialRelay/LICENSE new file mode 100644 index 00000000..65c5ca88 --- /dev/null +++ b/local/modules/MondialRelay/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/local/modules/MondialRelay/Loop/AreaAttributes.php b/local/modules/MondialRelay/Loop/AreaAttributes.php new file mode 100644 index 00000000..01a597b7 --- /dev/null +++ b/local/modules/MondialRelay/Loop/AreaAttributes.php @@ -0,0 +1,76 @@ +getAreaId()) { + $query->filterByAreaId($areaId, Criteria::IN); + } + + if (null !== $delivTypes = $this->getDeliveryType()) { + $query->filterByDeliveryType($delivTypes, Criteria::IN); + } + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayZoneConfiguration $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('DELIVERY_TYPE', $item->getDeliveryType()) + ->set('DELIVERY_TIME', $item->getDeliveryTime()) + ->set('AREA_ID', $item->getAreaId()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/DeliveryPrice.php b/local/modules/MondialRelay/Loop/DeliveryPrice.php new file mode 100644 index 00000000..72b28e47 --- /dev/null +++ b/local/modules/MondialRelay/Loop/DeliveryPrice.php @@ -0,0 +1,209 @@ +findPk($this->getCountryId())) { + if (null !== $stateId = $this->getStateId()) { + $state = StateQuery::create()->findPk($this->$stateId()); + } else { + $state = null; + } + + $mode = $this->getMode(); + + switch ($mode) { + case 'home': + $deliveryType = MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE; + + if (! MondialRelay::getConfigValue(MondialRelay::ALLOW_HOME_DELIVERY, true)) { + return []; + } + break; + + case 'relay': + $deliveryType = MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE; + + if (! MondialRelay::getConfigValue(MondialRelay::ALLOW_RELAY_DELIVERY, true)) { + return []; + } + break; + + case 'all': + $deliveryType = MondialRelayZoneConfiguration::ALL_DELIVERY_TYPE; + break; + } + + + // Find all areas which contains this country + $countryInAreaList = CountryAreaQuery::findByCountryAndState($country, $state); + + $areaIdList = []; + + $module = ModuleQuery::create()->findOneByCode(MondialRelay::getModuleCode()); + + /** @var CountryArea $countryInArea */ + foreach ($countryInAreaList as $countryInArea) { + // Check if module is attached to the area + if (AreaDeliveryModuleQuery::create() + ->filterByAreaId($countryInArea->getAreaId()) + ->filterByModule($module) + ->count() > 0) { + $areaIdList[] = $countryInArea->getAreaId(); + } + } + + // Find zones with the required delivery type + $zones = MondialRelayZoneConfigurationQuery::create() + ->filterByAreaId($areaIdList, Criteria::IN) + ->filterByDeliveryType($deliveryType) + ->find(); + + /** @var Cart $cart */ + $cart = $this->requestStack + ->getCurrentRequest() + ->getSession() + ->getSessionCart($this->dispatcher) + ; + + $cartWeight = $cart->getWeight(); + $cartValue = $cart->getTaxedAmount($country); + + /** @var MondialRelayZoneConfiguration $zone */ + foreach ($zones as $zone) { + $result = []; + + if (null !== $deliveryPrice = MondialRelayDeliveryPriceQuery::create() + ->filterByAreaId($zone->getAreaId()) + ->filterByMaxWeight($cartWeight, Criteria::GREATER_EQUAL) + ->orderByMaxWeight(Criteria::ASC) + ->findOne()) { + $deliveryDate = (new \DateTime())->add(new \DateInterval("P" . $zone->getDeliveryTime() . "D")); + + // We have a price + $result['PRICE'] = $deliveryPrice->getPriceWithTax(); + $result['MAX_WEIGHT'] = $deliveryPrice->getMaxWeight(); + $result['AREA_ID'] = $deliveryPrice->getAreaId(); + $result['DELIVERY_DELAY'] = $zone->getDeliveryTime(); + $result['DELIVERY_DATE'] = $deliveryDate; + switch ($zone->getDeliveryType()) { + case MondialRelayZoneConfiguration::HOME_DELIVERY_TYPE: + $result['ZONE_TYPE'] = 'home'; + break; + + case MondialRelayZoneConfiguration::RELAY_DELIVERY_TYPE: + $result['ZONE_TYPE'] = 'relay'; + break; + + default: + $result['ZONE_TYPE'] = '?'; + } + + $result['TYPE'] = $zone->getDeliveryType(); + + // Get insurance cost + if (null !== $insurance = MondialRelayDeliveryInsuranceQuery::create() + ->filterByMaxValue($cartValue, Criteria::GREATER_EQUAL) + ->orderByMaxValue(Criteria::ASC) + ->findOne() + ) { + $result['INSURANCE_AVAILABLE'] = true; + $result['INSURANCE_PRICE'] = $insurance->getPriceWithTax(); + $result['INSURANCE_REF_VALUE'] = $insurance->getMaxValue(); + } else { + $result['INSURANCE_AVAILABLE'] = false; + } + + $results[] = $result; + } + } + } + + return $results; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryPrice $item */ + foreach ($loopResult->getResultDataCollection() as $resultItem) { + $loopResultRow = new LoopResultRow($item); + + foreach ($resultItem as $name => $value) { + $loopResultRow->set($name, $value); + } + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/Insurances.php b/local/modules/MondialRelay/Loop/Insurances.php new file mode 100644 index 00000000..49eafcc8 --- /dev/null +++ b/local/modules/MondialRelay/Loop/Insurances.php @@ -0,0 +1,64 @@ +orderByMaxValue(); + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryInsurance $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('MAX_VALUE', $item->getMaxValue()) + ->set('PRICE', $item->getPriceWithTax()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/PickupPoints.php b/local/modules/MondialRelay/Loop/PickupPoints.php new file mode 100644 index 00000000..0940d0fa --- /dev/null +++ b/local/modules/MondialRelay/Loop/PickupPoints.php @@ -0,0 +1,90 @@ +getCountryId(), + $this->getCity(), + $this->getZipcode(), + $this->getSearchRadius() + ); + + $this->dispatcher->dispatch(MondialRelayEvents::FIND_RELAYS, $event); + + return $event->getPoints(); + } + + public function parseResults(LoopResult $loopResult) + { + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set("ID", $item['id']) + ->set("LATITUDE", $item['latitude']) + ->set("LONGITUDE", $item['longitude']) + ->set("ZIPCODE", $item['zipcode']) + ->set("CITY", $item['city']) + ->set("COUNTRY", $item['country']) + ->set("NAME", $item['name']) + ->set("ADDRESS", $item['address']) + ->set("DISTANCE", $item['distance']) + ->set("OPENINGS", $item['openings']) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/Prices.php b/local/modules/MondialRelay/Loop/Prices.php new file mode 100644 index 00000000..c954a023 --- /dev/null +++ b/local/modules/MondialRelay/Loop/Prices.php @@ -0,0 +1,72 @@ +getAreaId()) { + $query->filterByAreaId($areaId, Criteria::IN); + } + + $query->orderByMaxWeight(); + + return $query; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayDeliveryPrice $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set('ID', $item->getId()) + ->set('MAX_WEIGHT', $item->getMaxWeight()) + ->set('PRICE', $item->getPriceWithTax()) + ->set('AREA_ID', $item->getAreaId()) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Loop/SelectedPickupPoint.php b/local/modules/MondialRelay/Loop/SelectedPickupPoint.php new file mode 100644 index 00000000..869089c1 --- /dev/null +++ b/local/modules/MondialRelay/Loop/SelectedPickupPoint.php @@ -0,0 +1,89 @@ +getCurrentRequest()->getSession()->get(MondialRelay::SESSION_SELECTED_PICKUP_RELAY_ID)) { + return MondialRelayPickupAddressQuery::create()->filterById($relayId); + } elseif (null !== $orderAddressId = $this->getOrderAddressId()) { + return MondialRelayPickupAddressQuery::create()->filterByOrderAddressId($orderAddressId); + } elseif (null !== $orderId = $this->getOrderId()) { + if (null !== $order = OrderQuery::create()->findPk($orderId)) { + return MondialRelayPickupAddressQuery::create() + ->filterByOrderAddressId($order->getDeliveryOrderAddressId()); + } + } + + return null; + } + + public function parseResults(LoopResult $loopResult) + { + /** @var MondialRelayPickupAddress $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + $loopResultRow = new LoopResultRow($item); + + $relayData = json_decode($item->getJsonRelayData(), true); + + $loopResultRow + ->set("ID", $relayData['id']) + ->set("LATITUDE", $relayData['latitude']) + ->set("LONGITUDE", $relayData['longitude']) + ->set("ZIPCODE", $relayData['zipcode']) + ->set("CITY", $relayData['city']) + ->set("COUNTRY", $relayData['country']) + ->set("NAME", $relayData['name']) + ->set("ADDRESS", $relayData['address']) + ->set("DISTANCE", $relayData['distance']) + ->set("OPENINGS", $relayData['openings']) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php new file mode 100644 index 00000000..18f4707d --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsurance.php @@ -0,0 +1,1251 @@ +max_value = '0.000000'; + $this->price_with_tax = '0.000000'; + } + + /** + * Initializes internal state of MondialRelay\Model\Base\MondialRelayDeliveryInsurance object. + * @see applyDefaults() + */ + public function __construct() + { + $this->applyDefaultValues(); + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !!$this->modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayDeliveryInsurance instance. If + * obj is an instance of MondialRelayDeliveryInsurance, delegates to + * equals(MondialRelayDeliveryInsurance). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayDeliveryInsurance The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayDeliveryInsurance The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [level] column value. + * + * @return int + */ + public function getLevel() + { + + return $this->level; + } + + /** + * Get the [max_value] column value. + * + * @return string + */ + public function getMaxValue() + { + + return $this->max_value; + } + + /** + * Get the [price_with_tax] column value. + * + * @return string + */ + public function getPriceWithTax() + { + + return $this->price_with_tax; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [level] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setLevel($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->level !== $v) { + $this->level = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::LEVEL] = true; + } + + + return $this; + } // setLevel() + + /** + * Set the value of [max_value] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setMaxValue($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->max_value !== $v) { + $this->max_value = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::MAX_VALUE] = true; + } + + + return $this; + } // setMaxValue() + + /** + * Set the value of [price_with_tax] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance The current object (for fluent API support) + */ + public function setPriceWithTax($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->price_with_tax !== $v) { + $this->price_with_tax = $v; + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX] = true; + } + + + return $this; + } // setPriceWithTax() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + if ($this->max_value !== '0.000000') { + return false; + } + + if ($this->price_with_tax !== '0.000000') { + return false; + } + + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('Level', TableMap::TYPE_PHPNAME, $indexType)]; + $this->level = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('MaxValue', TableMap::TYPE_PHPNAME, $indexType)]; + $this->max_value = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayDeliveryInsuranceTableMap::translateFieldName('PriceWithTax', TableMap::TYPE_PHPNAME, $indexType)]; + $this->price_with_tax = (null !== $col) ? (string) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayDeliveryInsuranceTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayDeliveryInsurance object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayDeliveryInsuranceQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayDeliveryInsurance::setDeleted() + * @see MondialRelayDeliveryInsurance::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayDeliveryInsuranceQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayDeliveryInsuranceTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayDeliveryInsuranceTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::LEVEL)) { + $modifiedColumns[':p' . $index++] = 'LEVEL'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE)) { + $modifiedColumns[':p' . $index++] = 'MAX_VALUE'; + } + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX)) { + $modifiedColumns[':p' . $index++] = 'PRICE_WITH_TAX'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_delivery_insurance (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'LEVEL': + $stmt->bindValue($identifier, $this->level, PDO::PARAM_INT); + break; + case 'MAX_VALUE': + $stmt->bindValue($identifier, $this->max_value, PDO::PARAM_STR); + break; + case 'PRICE_WITH_TAX': + $stmt->bindValue($identifier, $this->price_with_tax, PDO::PARAM_STR); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryInsuranceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getLevel(); + break; + case 2: + return $this->getMaxValue(); + break; + case 3: + return $this->getPriceWithTax(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array()) + { + if (isset($alreadyDumpedObjects['MondialRelayDeliveryInsurance'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayDeliveryInsurance'][$this->getPrimaryKey()] = true; + $keys = MondialRelayDeliveryInsuranceTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getLevel(), + $keys[2] => $this->getMaxValue(), + $keys[3] => $this->getPriceWithTax(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryInsuranceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setLevel($value); + break; + case 2: + $this->setMaxValue($value); + break; + case 3: + $this->setPriceWithTax($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayDeliveryInsuranceTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setLevel($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setMaxValue($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setPriceWithTax($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::ID)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::LEVEL)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::LEVEL, $this->level); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $this->max_value); + if ($this->isColumnModified(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX)) $criteria->add(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $this->price_with_tax); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayDeliveryInsurance (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setLevel($this->getLevel()); + $copyObj->setMaxValue($this->getMaxValue()); + $copyObj->setPriceWithTax($this->getPriceWithTax()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayDeliveryInsurance Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->level = null; + $this->max_value = null; + $this->price_with_tax = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->applyDefaultValues(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayDeliveryInsuranceTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php new file mode 100644 index 00000000..192f7d36 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryInsuranceQuery.php @@ -0,0 +1,479 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayDeliveryInsurance|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryInsurance A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, LEVEL, MAX_VALUE, PRICE_WITH_TAX FROM mondial_relay_delivery_insurance WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayDeliveryInsurance(); + $obj->hydrate($row); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryInsurance|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the level column + * + * Example usage: + * + * $query->filterByLevel(1234); // WHERE level = 1234 + * $query->filterByLevel(array(12, 34)); // WHERE level IN (12, 34) + * $query->filterByLevel(array('min' => 12)); // WHERE level > 12 + * + * + * @param mixed $level The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByLevel($level = null, $comparison = null) + { + if (is_array($level)) { + $useMinMax = false; + if (isset($level['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($level['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::LEVEL, $level, $comparison); + } + + /** + * Filter the query on the max_value column + * + * Example usage: + * + * $query->filterByMaxValue(1234); // WHERE max_value = 1234 + * $query->filterByMaxValue(array(12, 34)); // WHERE max_value IN (12, 34) + * $query->filterByMaxValue(array('min' => 12)); // WHERE max_value > 12 + * + * + * @param mixed $maxValue The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByMaxValue($maxValue = null, $comparison = null) + { + if (is_array($maxValue)) { + $useMinMax = false; + if (isset($maxValue['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($maxValue['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, $maxValue, $comparison); + } + + /** + * Filter the query on the price_with_tax column + * + * Example usage: + * + * $query->filterByPriceWithTax(1234); // WHERE price_with_tax = 1234 + * $query->filterByPriceWithTax(array(12, 34)); // WHERE price_with_tax IN (12, 34) + * $query->filterByPriceWithTax(array('min' => 12)); // WHERE price_with_tax > 12 + * + * + * @param mixed $priceWithTax The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function filterByPriceWithTax($priceWithTax = null, $comparison = null) + { + if (is_array($priceWithTax)) { + $useMinMax = false; + if (isset($priceWithTax['min'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($priceWithTax['max'])) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, $priceWithTax, $comparison); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayDeliveryInsurance $mondialRelayDeliveryInsurance Object to remove from the list of results + * + * @return ChildMondialRelayDeliveryInsuranceQuery The current query, for fluid interface + */ + public function prune($mondialRelayDeliveryInsurance = null) + { + if ($mondialRelayDeliveryInsurance) { + $this->addUsingAlias(MondialRelayDeliveryInsuranceTableMap::ID, $mondialRelayDeliveryInsurance->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_delivery_insurance table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayDeliveryInsuranceTableMap::clearInstancePool(); + MondialRelayDeliveryInsuranceTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayDeliveryInsurance or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayDeliveryInsurance object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayDeliveryInsuranceTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayDeliveryInsuranceTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayDeliveryInsuranceQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php new file mode 100644 index 00000000..3065dc16 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPrice.php @@ -0,0 +1,1336 @@ +max_weight = '0.000000'; + $this->price_with_tax = '0.000000'; + } + + /** + * Initializes internal state of MondialRelay\Model\Base\MondialRelayDeliveryPrice object. + * @see applyDefaults() + */ + public function __construct() + { + $this->applyDefaultValues(); + } + + /** + * Returns whether the object has been modified. + * + * @return boolean True if the object has been modified. + */ + public function isModified() + { + return !!$this->modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayDeliveryPrice instance. If + * obj is an instance of MondialRelayDeliveryPrice, delegates to + * equals(MondialRelayDeliveryPrice). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayDeliveryPrice The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayDeliveryPrice The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [max_weight] column value. + * + * @return string + */ + public function getMaxWeight() + { + + return $this->max_weight; + } + + /** + * Get the [price_with_tax] column value. + * + * @return string + */ + public function getPriceWithTax() + { + + return $this->price_with_tax; + } + + /** + * Get the [area_id] column value. + * + * @return int + */ + public function getAreaId() + { + + return $this->area_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [max_weight] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setMaxWeight($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->max_weight !== $v) { + $this->max_weight = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::MAX_WEIGHT] = true; + } + + + return $this; + } // setMaxWeight() + + /** + * Set the value of [price_with_tax] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setPriceWithTax($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->price_with_tax !== $v) { + $this->price_with_tax = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX] = true; + } + + + return $this; + } // setPriceWithTax() + + /** + * Set the value of [area_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + */ + public function setAreaId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->area_id !== $v) { + $this->area_id = $v; + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::AREA_ID] = true; + } + + if ($this->aArea !== null && $this->aArea->getId() !== $v) { + $this->aArea = null; + } + + + return $this; + } // setAreaId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + if ($this->max_weight !== '0.000000') { + return false; + } + + if ($this->price_with_tax !== '0.000000') { + return false; + } + + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('MaxWeight', TableMap::TYPE_PHPNAME, $indexType)]; + $this->max_weight = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('PriceWithTax', TableMap::TYPE_PHPNAME, $indexType)]; + $this->price_with_tax = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayDeliveryPriceTableMap::translateFieldName('AreaId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->area_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayDeliveryPriceTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayDeliveryPrice object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + if ($this->aArea !== null && $this->area_id !== $this->aArea->getId()) { + $this->aArea = null; + } + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayDeliveryPriceQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + $this->aArea = null; + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayDeliveryPrice::setDeleted() + * @see MondialRelayDeliveryPrice::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayDeliveryPriceQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + // We call the save method on the following object(s) if they + // were passed to this object by their corresponding set + // method. This object relates to these object(s) by a + // foreign key reference. + + if ($this->aArea !== null) { + if ($this->aArea->isModified() || $this->aArea->isNew()) { + $affectedRows += $this->aArea->save($con); + } + $this->setArea($this->aArea); + } + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayDeliveryPriceTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayDeliveryPriceTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT)) { + $modifiedColumns[':p' . $index++] = 'MAX_WEIGHT'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX)) { + $modifiedColumns[':p' . $index++] = 'PRICE_WITH_TAX'; + } + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::AREA_ID)) { + $modifiedColumns[':p' . $index++] = 'AREA_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_delivery_price (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'MAX_WEIGHT': + $stmt->bindValue($identifier, $this->max_weight, PDO::PARAM_STR); + break; + case 'PRICE_WITH_TAX': + $stmt->bindValue($identifier, $this->price_with_tax, PDO::PARAM_STR); + break; + case 'AREA_ID': + $stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryPriceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getMaxWeight(); + break; + case 2: + return $this->getPriceWithTax(); + break; + case 3: + return $this->getAreaId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE. + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) + { + if (isset($alreadyDumpedObjects['MondialRelayDeliveryPrice'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayDeliveryPrice'][$this->getPrimaryKey()] = true; + $keys = MondialRelayDeliveryPriceTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getMaxWeight(), + $keys[2] => $this->getPriceWithTax(), + $keys[3] => $this->getAreaId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + if ($includeForeignObjects) { + if (null !== $this->aArea) { + $result['Area'] = $this->aArea->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true); + } + } + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayDeliveryPriceTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setMaxWeight($value); + break; + case 2: + $this->setPriceWithTax($value); + break; + case 3: + $this->setAreaId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayDeliveryPriceTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setMaxWeight($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setPriceWithTax($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setAreaId($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::ID)) $criteria->add(MondialRelayDeliveryPriceTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT)) $criteria->add(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $this->max_weight); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX)) $criteria->add(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $this->price_with_tax); + if ($this->isColumnModified(MondialRelayDeliveryPriceTableMap::AREA_ID)) $criteria->add(MondialRelayDeliveryPriceTableMap::AREA_ID, $this->area_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryPriceTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayDeliveryPrice (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setMaxWeight($this->getMaxWeight()); + $copyObj->setPriceWithTax($this->getPriceWithTax()); + $copyObj->setAreaId($this->getAreaId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayDeliveryPrice Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Declares an association between this object and a ChildArea object. + * + * @param ChildArea $v + * @return \MondialRelay\Model\MondialRelayDeliveryPrice The current object (for fluent API support) + * @throws PropelException + */ + public function setArea(ChildArea $v = null) + { + if ($v === null) { + $this->setAreaId(NULL); + } else { + $this->setAreaId($v->getId()); + } + + $this->aArea = $v; + + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the ChildArea object, it will not be re-added. + if ($v !== null) { + $v->addMondialRelayDeliveryPrice($this); + } + + + return $this; + } + + + /** + * Get the associated ChildArea object + * + * @param ConnectionInterface $con Optional Connection object. + * @return ChildArea The associated ChildArea object. + * @throws PropelException + */ + public function getArea(ConnectionInterface $con = null) + { + if ($this->aArea === null && ($this->area_id !== null)) { + $this->aArea = AreaQuery::create()->findPk($this->area_id, $con); + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + $this->aArea->addMondialRelayDeliveryPrices($this); + */ + } + + return $this->aArea; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->max_weight = null; + $this->price_with_tax = null; + $this->area_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->applyDefaultValues(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + $this->aArea = null; + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayDeliveryPriceTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php new file mode 100644 index 00000000..48b6c3dc --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayDeliveryPriceQuery.php @@ -0,0 +1,564 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayDeliveryPrice|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryPrice A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, MAX_WEIGHT, PRICE_WITH_TAX, AREA_ID FROM mondial_relay_delivery_price WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayDeliveryPrice(); + $obj->hydrate($row); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayDeliveryPrice|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the max_weight column + * + * Example usage: + * + * $query->filterByMaxWeight(1234); // WHERE max_weight = 1234 + * $query->filterByMaxWeight(array(12, 34)); // WHERE max_weight IN (12, 34) + * $query->filterByMaxWeight(array('min' => 12)); // WHERE max_weight > 12 + * + * + * @param mixed $maxWeight The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByMaxWeight($maxWeight = null, $comparison = null) + { + if (is_array($maxWeight)) { + $useMinMax = false; + if (isset($maxWeight['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($maxWeight['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, $maxWeight, $comparison); + } + + /** + * Filter the query on the price_with_tax column + * + * Example usage: + * + * $query->filterByPriceWithTax(1234); // WHERE price_with_tax = 1234 + * $query->filterByPriceWithTax(array(12, 34)); // WHERE price_with_tax IN (12, 34) + * $query->filterByPriceWithTax(array('min' => 12)); // WHERE price_with_tax > 12 + * + * + * @param mixed $priceWithTax The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByPriceWithTax($priceWithTax = null, $comparison = null) + { + if (is_array($priceWithTax)) { + $useMinMax = false; + if (isset($priceWithTax['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($priceWithTax['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, $priceWithTax, $comparison); + } + + /** + * Filter the query on the area_id column + * + * Example usage: + * + * $query->filterByAreaId(1234); // WHERE area_id = 1234 + * $query->filterByAreaId(array(12, 34)); // WHERE area_id IN (12, 34) + * $query->filterByAreaId(array('min' => 12)); // WHERE area_id > 12 + * + * + * @see filterByArea() + * + * @param mixed $areaId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByAreaId($areaId = null, $comparison = null) + { + if (is_array($areaId)) { + $useMinMax = false; + if (isset($areaId['min'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($areaId['max'])) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $areaId, $comparison); + } + + /** + * Filter the query by a related \Thelia\Model\Area object + * + * @param \Thelia\Model\Area|ObjectCollection $area The related object(s) to use as filter + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function filterByArea($area, $comparison = null) + { + if ($area instanceof \Thelia\Model\Area) { + return $this + ->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $area->getId(), $comparison); + } elseif ($area instanceof ObjectCollection) { + if (null === $comparison) { + $comparison = Criteria::IN; + } + + return $this + ->addUsingAlias(MondialRelayDeliveryPriceTableMap::AREA_ID, $area->toKeyValue('PrimaryKey', 'Id'), $comparison); + } else { + throw new PropelException('filterByArea() only accepts arguments of type \Thelia\Model\Area or Collection'); + } + } + + /** + * Adds a JOIN clause to the query using the Area relation + * + * @param string $relationAlias optional alias for the relation + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function joinArea($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + $tableMap = $this->getTableMap(); + $relationMap = $tableMap->getRelation('Area'); + + // create a ModelJoin object for this join + $join = new ModelJoin(); + $join->setJoinType($joinType); + $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias); + if ($previousJoin = $this->getPreviousJoin()) { + $join->setPreviousJoin($previousJoin); + } + + // add the ModelJoin to the current object + if ($relationAlias) { + $this->addAlias($relationAlias, $relationMap->getRightTable()->getName()); + $this->addJoinObject($join, $relationAlias); + } else { + $this->addJoinObject($join, 'Area'); + } + + return $this; + } + + /** + * Use the Area relation Area object + * + * @see useQuery() + * + * @param string $relationAlias optional alias for the relation, + * to be used as main alias in the secondary query + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return \Thelia\Model\AreaQuery A secondary query class using the current class as primary query + */ + public function useAreaQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + return $this + ->joinArea($relationAlias, $joinType) + ->useQuery($relationAlias ? $relationAlias : 'Area', '\Thelia\Model\AreaQuery'); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayDeliveryPrice $mondialRelayDeliveryPrice Object to remove from the list of results + * + * @return ChildMondialRelayDeliveryPriceQuery The current query, for fluid interface + */ + public function prune($mondialRelayDeliveryPrice = null) + { + if ($mondialRelayDeliveryPrice) { + $this->addUsingAlias(MondialRelayDeliveryPriceTableMap::ID, $mondialRelayDeliveryPrice->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_delivery_price table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayDeliveryPriceTableMap::clearInstancePool(); + MondialRelayDeliveryPriceTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayDeliveryPrice or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayDeliveryPrice object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayDeliveryPriceTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayDeliveryPriceTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayDeliveryPriceQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php new file mode 100644 index 00000000..197cea4e --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddress.php @@ -0,0 +1,1168 @@ +modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayPickupAddress instance. If + * obj is an instance of MondialRelayPickupAddress, delegates to + * equals(MondialRelayPickupAddress). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayPickupAddress The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayPickupAddress The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [json_relay_data] column value. + * + * @return string + */ + public function getJsonRelayData() + { + + return $this->json_relay_data; + } + + /** + * Get the [order_address_id] column value. + * + * @return int + */ + public function getOrderAddressId() + { + + return $this->order_address_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [json_relay_data] column. + * + * @param string $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setJsonRelayData($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->json_relay_data !== $v) { + $this->json_relay_data = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::JSON_RELAY_DATA] = true; + } + + + return $this; + } // setJsonRelayData() + + /** + * Set the value of [order_address_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayPickupAddress The current object (for fluent API support) + */ + public function setOrderAddressId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->order_address_id !== $v) { + $this->order_address_id = $v; + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID] = true; + } + + + return $this; + } // setOrderAddressId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('JsonRelayData', TableMap::TYPE_PHPNAME, $indexType)]; + $this->json_relay_data = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayPickupAddressTableMap::translateFieldName('OrderAddressId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->order_address_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 3; // 3 = MondialRelayPickupAddressTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayPickupAddress object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayPickupAddressQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayPickupAddress::setDeleted() + * @see MondialRelayPickupAddress::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayPickupAddressQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayPickupAddressTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayPickupAddressTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayPickupAddressTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA)) { + $modifiedColumns[':p' . $index++] = 'JSON_RELAY_DATA'; + } + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID)) { + $modifiedColumns[':p' . $index++] = 'ORDER_ADDRESS_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_pickup_address (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'JSON_RELAY_DATA': + $stmt->bindValue($identifier, $this->json_relay_data, PDO::PARAM_STR); + break; + case 'ORDER_ADDRESS_ID': + $stmt->bindValue($identifier, $this->order_address_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayPickupAddressTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getJsonRelayData(); + break; + case 2: + return $this->getOrderAddressId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array()) + { + if (isset($alreadyDumpedObjects['MondialRelayPickupAddress'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayPickupAddress'][$this->getPrimaryKey()] = true; + $keys = MondialRelayPickupAddressTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getJsonRelayData(), + $keys[2] => $this->getOrderAddressId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayPickupAddressTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setJsonRelayData($value); + break; + case 2: + $this->setOrderAddressId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayPickupAddressTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setJsonRelayData($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setOrderAddressId($arr[$keys[2]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ID)) $criteria->add(MondialRelayPickupAddressTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA)) $criteria->add(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, $this->json_relay_data); + if ($this->isColumnModified(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID)) $criteria->add(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $this->order_address_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + $criteria->add(MondialRelayPickupAddressTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayPickupAddress (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setJsonRelayData($this->getJsonRelayData()); + $copyObj->setOrderAddressId($this->getOrderAddressId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayPickupAddress Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->json_relay_data = null; + $this->order_address_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayPickupAddressTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php new file mode 100644 index 00000000..7bbaff95 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayPickupAddressQuery.php @@ -0,0 +1,422 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayPickupAddress|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayPickupAddress A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, JSON_RELAY_DATA, ORDER_ADDRESS_ID FROM mondial_relay_pickup_address WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayPickupAddress(); + $obj->hydrate($row); + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayPickupAddress|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the json_relay_data column + * + * Example usage: + * + * $query->filterByJsonRelayData('fooValue'); // WHERE json_relay_data = 'fooValue' + * $query->filterByJsonRelayData('%fooValue%'); // WHERE json_relay_data LIKE '%fooValue%' + * + * + * @param string $jsonRelayData The value to use as filter. + * Accepts wildcards (* and % trigger a LIKE) + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByJsonRelayData($jsonRelayData = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($jsonRelayData)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $jsonRelayData)) { + $jsonRelayData = str_replace('*', '%', $jsonRelayData); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, $jsonRelayData, $comparison); + } + + /** + * Filter the query on the order_address_id column + * + * Example usage: + * + * $query->filterByOrderAddressId(1234); // WHERE order_address_id = 1234 + * $query->filterByOrderAddressId(array(12, 34)); // WHERE order_address_id IN (12, 34) + * $query->filterByOrderAddressId(array('min' => 12)); // WHERE order_address_id > 12 + * + * + * @param mixed $orderAddressId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function filterByOrderAddressId($orderAddressId = null, $comparison = null) + { + if (is_array($orderAddressId)) { + $useMinMax = false; + if (isset($orderAddressId['min'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($orderAddressId['max'])) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, $orderAddressId, $comparison); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayPickupAddress $mondialRelayPickupAddress Object to remove from the list of results + * + * @return ChildMondialRelayPickupAddressQuery The current query, for fluid interface + */ + public function prune($mondialRelayPickupAddress = null) + { + if ($mondialRelayPickupAddress) { + $this->addUsingAlias(MondialRelayPickupAddressTableMap::ID, $mondialRelayPickupAddress->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_pickup_address table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayPickupAddressTableMap::clearInstancePool(); + MondialRelayPickupAddressTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayPickupAddress or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayPickupAddress object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayPickupAddressTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayPickupAddressTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayPickupAddressTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayPickupAddressQuery diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php new file mode 100644 index 00000000..b0e14075 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfiguration.php @@ -0,0 +1,1311 @@ +modifiedColumns; + } + + /** + * Has specified column been modified? + * + * @param string $col column fully qualified name (TableMap::TYPE_COLNAME), e.g. Book::AUTHOR_ID + * @return boolean True if $col has been modified. + */ + public function isColumnModified($col) + { + return $this->modifiedColumns && isset($this->modifiedColumns[$col]); + } + + /** + * Get the columns that have been modified in this object. + * @return array A unique list of the modified column names for this object. + */ + public function getModifiedColumns() + { + return $this->modifiedColumns ? array_keys($this->modifiedColumns) : []; + } + + /** + * Returns whether the object has ever been saved. This will + * be false, if the object was retrieved from storage or was created + * and then saved. + * + * @return boolean true, if the object has never been persisted. + */ + public function isNew() + { + return $this->new; + } + + /** + * Setter for the isNew attribute. This method will be called + * by Propel-generated children and objects. + * + * @param boolean $b the state of the object. + */ + public function setNew($b) + { + $this->new = (Boolean) $b; + } + + /** + * Whether this object has been deleted. + * @return boolean The deleted state of this object. + */ + public function isDeleted() + { + return $this->deleted; + } + + /** + * Specify whether this object has been deleted. + * @param boolean $b The deleted state of this object. + * @return void + */ + public function setDeleted($b) + { + $this->deleted = (Boolean) $b; + } + + /** + * Sets the modified state for the object to be false. + * @param string $col If supplied, only the specified column is reset. + * @return void + */ + public function resetModified($col = null) + { + if (null !== $col) { + if (isset($this->modifiedColumns[$col])) { + unset($this->modifiedColumns[$col]); + } + } else { + $this->modifiedColumns = array(); + } + } + + /** + * Compares this with another MondialRelayZoneConfiguration instance. If + * obj is an instance of MondialRelayZoneConfiguration, delegates to + * equals(MondialRelayZoneConfiguration). Otherwise, returns false. + * + * @param mixed $obj The object to compare to. + * @return boolean Whether equal to the object specified. + */ + public function equals($obj) + { + $thisclazz = get_class($this); + if (!is_object($obj) || !($obj instanceof $thisclazz)) { + return false; + } + + if ($this === $obj) { + return true; + } + + if (null === $this->getPrimaryKey() + || null === $obj->getPrimaryKey()) { + return false; + } + + return $this->getPrimaryKey() === $obj->getPrimaryKey(); + } + + /** + * If the primary key is not null, return the hashcode of the + * primary key. Otherwise, return the hash code of the object. + * + * @return int Hashcode + */ + public function hashCode() + { + if (null !== $this->getPrimaryKey()) { + return crc32(serialize($this->getPrimaryKey())); + } + + return crc32(serialize(clone $this)); + } + + /** + * Get the associative array of the virtual columns in this object + * + * @return array + */ + public function getVirtualColumns() + { + return $this->virtualColumns; + } + + /** + * Checks the existence of a virtual column in this object + * + * @param string $name The virtual column name + * @return boolean + */ + public function hasVirtualColumn($name) + { + return array_key_exists($name, $this->virtualColumns); + } + + /** + * Get the value of a virtual column in this object + * + * @param string $name The virtual column name + * @return mixed + * + * @throws PropelException + */ + public function getVirtualColumn($name) + { + if (!$this->hasVirtualColumn($name)) { + throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name)); + } + + return $this->virtualColumns[$name]; + } + + /** + * Set the value of a virtual column in this object + * + * @param string $name The virtual column name + * @param mixed $value The value to give to the virtual column + * + * @return MondialRelayZoneConfiguration The current object, for fluid interface + */ + public function setVirtualColumn($name, $value) + { + $this->virtualColumns[$name] = $value; + + return $this; + } + + /** + * Logs a message using Propel::log(). + * + * @param string $msg + * @param int $priority One of the Propel::LOG_* logging levels + * @return boolean + */ + protected function log($msg, $priority = Propel::LOG_INFO) + { + return Propel::log(get_class($this) . ': ' . $msg, $priority); + } + + /** + * Populate the current object from a string, using a given parser format + * + * $book = new Book(); + * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, + * or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param string $data The source data to import from + * + * @return MondialRelayZoneConfiguration The current object, for fluid interface + */ + public function importFrom($parser, $data) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + $this->fromArray($parser->toArray($data), TableMap::TYPE_PHPNAME); + + return $this; + } + + /** + * Export the current object properties to a string, using a given parser format + * + * $book = BookQuery::create()->findPk(9012); + * echo $book->exportTo('JSON'); + * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); + * + * + * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV') + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE. + * @return string The exported data + */ + public function exportTo($parser, $includeLazyLoadColumns = true) + { + if (!$parser instanceof AbstractParser) { + $parser = AbstractParser::getParser($parser); + } + + return $parser->fromArray($this->toArray(TableMap::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true)); + } + + /** + * Clean up internal collections prior to serializing + * Avoids recursive loops that turn into segmentation faults when serializing + */ + public function __sleep() + { + $this->clearAllReferences(); + + return array_keys(get_object_vars($this)); + } + + /** + * Get the [id] column value. + * + * @return int + */ + public function getId() + { + + return $this->id; + } + + /** + * Get the [delivery_time] column value. + * + * @return int + */ + public function getDeliveryTime() + { + + return $this->delivery_time; + } + + /** + * Get the [delivery_type] column value. + * + * @return int + */ + public function getDeliveryType() + { + + return $this->delivery_type; + } + + /** + * Get the [area_id] column value. + * + * @return int + */ + public function getAreaId() + { + + return $this->area_id; + } + + /** + * Set the value of [id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->id !== $v) { + $this->id = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::ID] = true; + } + + + return $this; + } // setId() + + /** + * Set the value of [delivery_time] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setDeliveryTime($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->delivery_time !== $v) { + $this->delivery_time = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::DELIVERY_TIME] = true; + } + + + return $this; + } // setDeliveryTime() + + /** + * Set the value of [delivery_type] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setDeliveryType($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->delivery_type !== $v) { + $this->delivery_type = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE] = true; + } + + + return $this; + } // setDeliveryType() + + /** + * Set the value of [area_id] column. + * + * @param int $v new value + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + */ + public function setAreaId($v) + { + if ($v !== null) { + $v = (int) $v; + } + + if ($this->area_id !== $v) { + $this->area_id = $v; + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::AREA_ID] = true; + } + + if ($this->aArea !== null && $this->aArea->getId() !== $v) { + $this->aArea = null; + } + + + return $this; + } // setAreaId() + + /** + * Indicates whether the columns in this object are only set to default values. + * + * This method can be used in conjunction with isModified() to indicate whether an object is both + * modified _and_ has some values set which are non-default. + * + * @return boolean Whether the columns in this object are only been set with default values. + */ + public function hasOnlyDefaultValues() + { + // otherwise, everything was equal, so return TRUE + return true; + } // hasOnlyDefaultValues() + + /** + * Hydrates (populates) the object variables with values from the database resultset. + * + * An offset (0-based "start column") is specified so that objects can be hydrated + * with a subset of the columns in the resultset rows. This is needed, for example, + * for results of JOIN queries where the resultset row includes columns from two or + * more tables. + * + * @param array $row The row returned by DataFetcher->fetch(). + * @param int $startcol 0-based offset column which indicates which restultset column to start with. + * @param boolean $rehydrate Whether this object is being re-hydrated from the database. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @return int next starting column + * @throws PropelException - Any caught Exception will be rewrapped as a PropelException. + */ + public function hydrate($row, $startcol = 0, $rehydrate = false, $indexType = TableMap::TYPE_NUM) + { + try { + + + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $this->id = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('DeliveryTime', TableMap::TYPE_PHPNAME, $indexType)]; + $this->delivery_time = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('DeliveryType', TableMap::TYPE_PHPNAME, $indexType)]; + $this->delivery_type = (null !== $col) ? (int) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : MondialRelayZoneConfigurationTableMap::translateFieldName('AreaId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->area_id = (null !== $col) ? (int) $col : null; + $this->resetModified(); + + $this->setNew(false); + + if ($rehydrate) { + $this->ensureConsistency(); + } + + return $startcol + 4; // 4 = MondialRelayZoneConfigurationTableMap::NUM_HYDRATE_COLUMNS. + + } catch (Exception $e) { + throw new PropelException("Error populating \MondialRelay\Model\MondialRelayZoneConfiguration object", 0, $e); + } + } + + /** + * Checks and repairs the internal consistency of the object. + * + * This method is executed after an already-instantiated object is re-hydrated + * from the database. It exists to check any foreign keys to make sure that + * the objects related to the current object are correct based on foreign key. + * + * You can override this method in the stub class, but you should always invoke + * the base method from the overridden method (i.e. parent::ensureConsistency()), + * in case your model changes. + * + * @throws PropelException + */ + public function ensureConsistency() + { + if ($this->aArea !== null && $this->area_id !== $this->aArea->getId()) { + $this->aArea = null; + } + } // ensureConsistency + + /** + * Reloads this object from datastore based on primary key and (optionally) resets all associated objects. + * + * This will only work if the object has been saved and has a valid primary key set. + * + * @param boolean $deep (optional) Whether to also de-associated any related objects. + * @param ConnectionInterface $con (optional) The ConnectionInterface connection to use. + * @return void + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db + */ + public function reload($deep = false, ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("Cannot reload a deleted object."); + } + + if ($this->isNew()) { + throw new PropelException("Cannot reload an unsaved object."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + // We don't need to alter the object instance pool; we're just modifying this instance + // already in the pool. + + $dataFetcher = ChildMondialRelayZoneConfigurationQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $row = $dataFetcher->fetch(); + $dataFetcher->close(); + if (!$row) { + throw new PropelException('Cannot find matching row in the database to reload object values.'); + } + $this->hydrate($row, 0, true, $dataFetcher->getIndexType()); // rehydrate + + if ($deep) { // also de-associate any related objects? + + $this->aArea = null; + } // if (deep) + } + + /** + * Removes this object from datastore and sets delete attribute. + * + * @param ConnectionInterface $con + * @return void + * @throws PropelException + * @see MondialRelayZoneConfiguration::setDeleted() + * @see MondialRelayZoneConfiguration::isDeleted() + */ + public function delete(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("This object has already been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + try { + $deleteQuery = ChildMondialRelayZoneConfigurationQuery::create() + ->filterByPrimaryKey($this->getPrimaryKey()); + $ret = $this->preDelete($con); + if ($ret) { + $deleteQuery->delete($con); + $this->postDelete($con); + $con->commit(); + $this->setDeleted(true); + } else { + $con->commit(); + } + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Persists this object to the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All modified related objects will also be persisted in the doSave() + * method. This method wraps all precipitate database operations in a + * single transaction. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see doSave() + */ + public function save(ConnectionInterface $con = null) + { + if ($this->isDeleted()) { + throw new PropelException("You cannot save an object that has been deleted."); + } + + if ($con === null) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $con->beginTransaction(); + $isInsert = $this->isNew(); + try { + $ret = $this->preSave($con); + if ($isInsert) { + $ret = $ret && $this->preInsert($con); + } else { + $ret = $ret && $this->preUpdate($con); + } + if ($ret) { + $affectedRows = $this->doSave($con); + if ($isInsert) { + $this->postInsert($con); + } else { + $this->postUpdate($con); + } + $this->postSave($con); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($this); + } else { + $affectedRows = 0; + } + $con->commit(); + + return $affectedRows; + } catch (Exception $e) { + $con->rollBack(); + throw $e; + } + } + + /** + * Performs the work of inserting or updating the row in the database. + * + * If the object is new, it inserts it; otherwise an update is performed. + * All related objects are also updated in this method. + * + * @param ConnectionInterface $con + * @return int The number of rows affected by this insert/update and any referring fk objects' save() operations. + * @throws PropelException + * @see save() + */ + protected function doSave(ConnectionInterface $con) + { + $affectedRows = 0; // initialize var to track total num of affected rows + if (!$this->alreadyInSave) { + $this->alreadyInSave = true; + + // We call the save method on the following object(s) if they + // were passed to this object by their corresponding set + // method. This object relates to these object(s) by a + // foreign key reference. + + if ($this->aArea !== null) { + if ($this->aArea->isModified() || $this->aArea->isNew()) { + $affectedRows += $this->aArea->save($con); + } + $this->setArea($this->aArea); + } + + if ($this->isNew() || $this->isModified()) { + // persist changes + if ($this->isNew()) { + $this->doInsert($con); + } else { + $this->doUpdate($con); + } + $affectedRows += 1; + $this->resetModified(); + } + + $this->alreadyInSave = false; + + } + + return $affectedRows; + } // doSave() + + /** + * Insert the row in the database. + * + * @param ConnectionInterface $con + * + * @throws PropelException + * @see doSave() + */ + protected function doInsert(ConnectionInterface $con) + { + $modifiedColumns = array(); + $index = 0; + + $this->modifiedColumns[MondialRelayZoneConfigurationTableMap::ID] = true; + if (null !== $this->id) { + throw new PropelException('Cannot insert a value for auto-increment primary key (' . MondialRelayZoneConfigurationTableMap::ID . ')'); + } + + // check the columns in natural order for more readable SQL queries + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::ID)) { + $modifiedColumns[':p' . $index++] = 'ID'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME)) { + $modifiedColumns[':p' . $index++] = 'DELIVERY_TIME'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE)) { + $modifiedColumns[':p' . $index++] = 'DELIVERY_TYPE'; + } + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::AREA_ID)) { + $modifiedColumns[':p' . $index++] = 'AREA_ID'; + } + + $sql = sprintf( + 'INSERT INTO mondial_relay_zone_configuration (%s) VALUES (%s)', + implode(', ', $modifiedColumns), + implode(', ', array_keys($modifiedColumns)) + ); + + try { + $stmt = $con->prepare($sql); + foreach ($modifiedColumns as $identifier => $columnName) { + switch ($columnName) { + case 'ID': + $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); + break; + case 'DELIVERY_TIME': + $stmt->bindValue($identifier, $this->delivery_time, PDO::PARAM_INT); + break; + case 'DELIVERY_TYPE': + $stmt->bindValue($identifier, $this->delivery_type, PDO::PARAM_INT); + break; + case 'AREA_ID': + $stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT); + break; + } + } + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), 0, $e); + } + + try { + $pk = $con->lastInsertId(); + } catch (Exception $e) { + throw new PropelException('Unable to get autoincrement id.', 0, $e); + } + $this->setId($pk); + + $this->setNew(false); + } + + /** + * Update the row in the database. + * + * @param ConnectionInterface $con + * + * @return Integer Number of updated rows + * @see doSave() + */ + protected function doUpdate(ConnectionInterface $con) + { + $selectCriteria = $this->buildPkeyCriteria(); + $valuesCriteria = $this->buildCriteria(); + + return $selectCriteria->doUpdate($valuesCriteria, $con); + } + + /** + * Retrieves a field from the object by name passed in as a string. + * + * @param string $name name + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return mixed Value of field. + */ + public function getByName($name, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayZoneConfigurationTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $field = $this->getByPosition($pos); + + return $field; + } + + /** + * Retrieves a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @return mixed Value of field at $pos + */ + public function getByPosition($pos) + { + switch ($pos) { + case 0: + return $this->getId(); + break; + case 1: + return $this->getDeliveryTime(); + break; + case 2: + return $this->getDeliveryType(); + break; + case 3: + return $this->getAreaId(); + break; + default: + return null; + break; + } // switch() + } + + /** + * Exports the object as an array. + * + * You can specify the key type of the array by passing one of the class + * type constants. + * + * @param string $keyType (optional) One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy loaded columns. Defaults to TRUE. + * @param array $alreadyDumpedObjects List of objects to skip to avoid recursion + * @param boolean $includeForeignObjects (optional) Whether to include hydrated related objects. Default to FALSE. + * + * @return array an associative array containing the field names (as keys) and field values + */ + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) + { + if (isset($alreadyDumpedObjects['MondialRelayZoneConfiguration'][$this->getPrimaryKey()])) { + return '*RECURSION*'; + } + $alreadyDumpedObjects['MondialRelayZoneConfiguration'][$this->getPrimaryKey()] = true; + $keys = MondialRelayZoneConfigurationTableMap::getFieldNames($keyType); + $result = array( + $keys[0] => $this->getId(), + $keys[1] => $this->getDeliveryTime(), + $keys[2] => $this->getDeliveryType(), + $keys[3] => $this->getAreaId(), + ); + $virtualColumns = $this->virtualColumns; + foreach ($virtualColumns as $key => $virtualColumn) { + $result[$key] = $virtualColumn; + } + + if ($includeForeignObjects) { + if (null !== $this->aArea) { + $result['Area'] = $this->aArea->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true); + } + } + + return $result; + } + + /** + * Sets a field from the object by name passed in as a string. + * + * @param string $name + * @param mixed $value field value + * @param string $type The type of fieldname the $name is of: + * one of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * Defaults to TableMap::TYPE_PHPNAME. + * @return void + */ + public function setByName($name, $value, $type = TableMap::TYPE_PHPNAME) + { + $pos = MondialRelayZoneConfigurationTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + + return $this->setByPosition($pos, $value); + } + + /** + * Sets a field from the object by Position as specified in the xml schema. + * Zero-based. + * + * @param int $pos position in xml schema + * @param mixed $value field value + * @return void + */ + public function setByPosition($pos, $value) + { + switch ($pos) { + case 0: + $this->setId($value); + break; + case 1: + $this->setDeliveryTime($value); + break; + case 2: + $this->setDeliveryType($value); + break; + case 3: + $this->setAreaId($value); + break; + } // switch() + } + + /** + * Populates the object using an array. + * + * This is particularly useful when populating an object from one of the + * request arrays (e.g. $_POST). This method goes through the column + * names, checking to see whether a matching key exists in populated + * array. If so the setByName() method is called for that column. + * + * You can specify the key type of the array by additionally passing one + * of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME, + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * The default key type is the column's TableMap::TYPE_PHPNAME. + * + * @param array $arr An array to populate the object from. + * @param string $keyType The type of keys the array uses. + * @return void + */ + public function fromArray($arr, $keyType = TableMap::TYPE_PHPNAME) + { + $keys = MondialRelayZoneConfigurationTableMap::getFieldNames($keyType); + + if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); + if (array_key_exists($keys[1], $arr)) $this->setDeliveryTime($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setDeliveryType($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setAreaId($arr[$keys[3]]); + } + + /** + * Build a Criteria object containing the values of all modified columns in this object. + * + * @return Criteria The Criteria object containing all modified values. + */ + public function buildCriteria() + { + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::ID)) $criteria->add(MondialRelayZoneConfigurationTableMap::ID, $this->id); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME)) $criteria->add(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $this->delivery_time); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE)) $criteria->add(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $this->delivery_type); + if ($this->isColumnModified(MondialRelayZoneConfigurationTableMap::AREA_ID)) $criteria->add(MondialRelayZoneConfigurationTableMap::AREA_ID, $this->area_id); + + return $criteria; + } + + /** + * Builds a Criteria object containing the primary key for this object. + * + * Unlike buildCriteria() this method includes the primary key values regardless + * of whether or not they have been modified. + * + * @return Criteria The Criteria object containing value(s) for primary key(s). + */ + public function buildPkeyCriteria() + { + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + $criteria->add(MondialRelayZoneConfigurationTableMap::ID, $this->id); + + return $criteria; + } + + /** + * Returns the primary key for this object (row). + * @return int + */ + public function getPrimaryKey() + { + return $this->getId(); + } + + /** + * Generic method to set the primary key (id column). + * + * @param int $key Primary key. + * @return void + */ + public function setPrimaryKey($key) + { + $this->setId($key); + } + + /** + * Returns true if the primary key for this object is null. + * @return boolean + */ + public function isPrimaryKeyNull() + { + + return null === $this->getId(); + } + + /** + * Sets contents of passed object to values from current object. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param object $copyObj An object of \MondialRelay\Model\MondialRelayZoneConfiguration (or compatible) type. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @param boolean $makeNew Whether to reset autoincrement PKs and make the object new. + * @throws PropelException + */ + public function copyInto($copyObj, $deepCopy = false, $makeNew = true) + { + $copyObj->setDeliveryTime($this->getDeliveryTime()); + $copyObj->setDeliveryType($this->getDeliveryType()); + $copyObj->setAreaId($this->getAreaId()); + if ($makeNew) { + $copyObj->setNew(true); + $copyObj->setId(NULL); // this is a auto-increment column, so set to default value + } + } + + /** + * Makes a copy of this object that will be inserted as a new row in table when saved. + * It creates a new object filling in the simple attributes, but skipping any primary + * keys that are defined for the table. + * + * If desired, this method can also make copies of all associated (fkey referrers) + * objects. + * + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \MondialRelay\Model\MondialRelayZoneConfiguration Clone of current object. + * @throws PropelException + */ + public function copy($deepCopy = false) + { + // we use get_class(), because this might be a subclass + $clazz = get_class($this); + $copyObj = new $clazz(); + $this->copyInto($copyObj, $deepCopy); + + return $copyObj; + } + + /** + * Declares an association between this object and a ChildArea object. + * + * @param ChildArea $v + * @return \MondialRelay\Model\MondialRelayZoneConfiguration The current object (for fluent API support) + * @throws PropelException + */ + public function setArea(ChildArea $v = null) + { + if ($v === null) { + $this->setAreaId(NULL); + } else { + $this->setAreaId($v->getId()); + } + + $this->aArea = $v; + + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the ChildArea object, it will not be re-added. + if ($v !== null) { + $v->addMondialRelayZoneConfiguration($this); + } + + + return $this; + } + + + /** + * Get the associated ChildArea object + * + * @param ConnectionInterface $con Optional Connection object. + * @return ChildArea The associated ChildArea object. + * @throws PropelException + */ + public function getArea(ConnectionInterface $con = null) + { + if ($this->aArea === null && ($this->area_id !== null)) { + $this->aArea = AreaQuery::create()->findPk($this->area_id, $con); + /* The following can be used additionally to + guarantee the related object contains a reference + to this object. This level of coupling may, however, be + undesirable since it could result in an only partially populated collection + in the referenced object. + $this->aArea->addMondialRelayZoneConfigurations($this); + */ + } + + return $this->aArea; + } + + /** + * Clears the current object and sets all attributes to their default values + */ + public function clear() + { + $this->id = null; + $this->delivery_time = null; + $this->delivery_type = null; + $this->area_id = null; + $this->alreadyInSave = false; + $this->clearAllReferences(); + $this->resetModified(); + $this->setNew(true); + $this->setDeleted(false); + } + + /** + * Resets all references to other model objects or collections of model objects. + * + * This method is a user-space workaround for PHP's inability to garbage collect + * objects with circular references (even in PHP 5.3). This is currently necessary + * when using Propel in certain daemon or large-volume/high-memory operations. + * + * @param boolean $deep Whether to also clear the references on all referrer objects. + */ + public function clearAllReferences($deep = false) + { + if ($deep) { + } // if ($deep) + + $this->aArea = null; + } + + /** + * Return the string representation of this object + * + * @return string + */ + public function __toString() + { + return (string) $this->exportTo(MondialRelayZoneConfigurationTableMap::DEFAULT_STRING_FORMAT); + } + + /** + * Code to be run before persisting the object + * @param ConnectionInterface $con + * @return boolean + */ + public function preSave(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after persisting the object + * @param ConnectionInterface $con + */ + public function postSave(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before inserting to database + * @param ConnectionInterface $con + * @return boolean + */ + public function preInsert(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after inserting to database + * @param ConnectionInterface $con + */ + public function postInsert(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before updating the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preUpdate(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after updating the object in database + * @param ConnectionInterface $con + */ + public function postUpdate(ConnectionInterface $con = null) + { + + } + + /** + * Code to be run before deleting the object in database + * @param ConnectionInterface $con + * @return boolean + */ + public function preDelete(ConnectionInterface $con = null) + { + return true; + } + + /** + * Code to be run after deleting the object in database + * @param ConnectionInterface $con + */ + public function postDelete(ConnectionInterface $con = null) + { + + } + + + /** + * Derived method to catches calls to undefined methods. + * + * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.). + * Allows to define default __call() behavior if you overwrite __call() + * + * @param string $name + * @param mixed $params + * + * @return array|string + */ + public function __call($name, $params) + { + if (0 === strpos($name, 'get')) { + $virtualColumn = substr($name, 3); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + + $virtualColumn = lcfirst($virtualColumn); + if ($this->hasVirtualColumn($virtualColumn)) { + return $this->getVirtualColumn($virtualColumn); + } + } + + if (0 === strpos($name, 'from')) { + $format = substr($name, 4); + + return $this->importFrom($format, reset($params)); + } + + if (0 === strpos($name, 'to')) { + $format = substr($name, 2); + $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true; + + return $this->exportTo($format, $includeLazyLoadColumns); + } + + throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name)); + } + +} diff --git a/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php new file mode 100644 index 00000000..982569d6 --- /dev/null +++ b/local/modules/MondialRelay/Model/Base/MondialRelayZoneConfigurationQuery.php @@ -0,0 +1,564 @@ +setModelAlias($modelAlias); + } + if ($criteria instanceof Criteria) { + $query->mergeWith($criteria); + } + + return $query; + } + + /** + * Find object by primary key. + * Propel uses the instance pool to skip the database if the object exists. + * Go fast if the query is untouched. + * + * + * $obj = $c->findPk(12, $con); + * + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ChildMondialRelayZoneConfiguration|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + $this->basePreSelect($con); + if ($this->formatter || $this->modelAlias || $this->with || $this->select + || $this->selectColumns || $this->asColumns || $this->selectModifiers + || $this->map || $this->having || $this->joins) { + return $this->findPkComplex($key, $con); + } else { + return $this->findPkSimple($key, $con); + } + } + + /** + * Find object by primary key using raw SQL to go fast. + * Bypass doSelect() and the object formatter by using generated code. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayZoneConfiguration A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, DELIVERY_TIME, DELIVERY_TYPE, AREA_ID FROM mondial_relay_zone_configuration WHERE ID = :p0'; + try { + $stmt = $con->prepare($sql); + $stmt->bindValue(':p0', $key, PDO::PARAM_INT); + $stmt->execute(); + } catch (Exception $e) { + Propel::log($e->getMessage(), Propel::LOG_ERR); + throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e); + } + $obj = null; + if ($row = $stmt->fetch(\PDO::FETCH_NUM)) { + $obj = new ChildMondialRelayZoneConfiguration(); + $obj->hydrate($row); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, (string) $key); + } + $stmt->closeCursor(); + + return $obj; + } + + /** + * Find object by primary key. + * + * @param mixed $key Primary key to use for the query + * @param ConnectionInterface $con A connection object + * + * @return ChildMondialRelayZoneConfiguration|array|mixed the result, formatted by the current formatter + */ + protected function findPkComplex($key, $con) + { + // As the query uses a PK condition, no limit(1) is necessary. + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKey($key) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher); + } + + /** + * Find objects by primary key + * + * $objs = $c->findPks(array(12, 56, 832), $con); + * + * @param array $keys Primary keys to use for the query + * @param ConnectionInterface $con an optional connection object + * + * @return ObjectCollection|array|mixed the list of results, formatted by the current formatter + */ + public function findPks($keys, $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getReadConnection($this->getDbName()); + } + $this->basePreSelect($con); + $criteria = $this->isKeepQuery() ? clone $this : $this; + $dataFetcher = $criteria + ->filterByPrimaryKeys($keys) + ->doSelect($con); + + return $criteria->getFormatter()->init($criteria)->format($dataFetcher); + } + + /** + * Filter the query by primary key + * + * @param mixed $key Primary key to use for the query + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $key, Criteria::EQUAL); + } + + /** + * Filter the query by a list of primary keys + * + * @param array $keys The list of primary key to use for the query + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $keys, Criteria::IN); + } + + /** + * Filter the query on the id column + * + * Example usage: + * + * $query->filterById(1234); // WHERE id = 1234 + * $query->filterById(array(12, 34)); // WHERE id IN (12, 34) + * $query->filterById(array('min' => 12)); // WHERE id > 12 + * + * + * @param mixed $id The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterById($id = null, $comparison = null) + { + if (is_array($id)) { + $useMinMax = false; + if (isset($id['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the delivery_time column + * + * Example usage: + * + * $query->filterByDeliveryTime(1234); // WHERE delivery_time = 1234 + * $query->filterByDeliveryTime(array(12, 34)); // WHERE delivery_time IN (12, 34) + * $query->filterByDeliveryTime(array('min' => 12)); // WHERE delivery_time > 12 + * + * + * @param mixed $deliveryTime The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByDeliveryTime($deliveryTime = null, $comparison = null) + { + if (is_array($deliveryTime)) { + $useMinMax = false; + if (isset($deliveryTime['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($deliveryTime['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, $deliveryTime, $comparison); + } + + /** + * Filter the query on the delivery_type column + * + * Example usage: + * + * $query->filterByDeliveryType(1234); // WHERE delivery_type = 1234 + * $query->filterByDeliveryType(array(12, 34)); // WHERE delivery_type IN (12, 34) + * $query->filterByDeliveryType(array('min' => 12)); // WHERE delivery_type > 12 + * + * + * @param mixed $deliveryType The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByDeliveryType($deliveryType = null, $comparison = null) + { + if (is_array($deliveryType)) { + $useMinMax = false; + if (isset($deliveryType['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($deliveryType['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, $deliveryType, $comparison); + } + + /** + * Filter the query on the area_id column + * + * Example usage: + * + * $query->filterByAreaId(1234); // WHERE area_id = 1234 + * $query->filterByAreaId(array(12, 34)); // WHERE area_id IN (12, 34) + * $query->filterByAreaId(array('min' => 12)); // WHERE area_id > 12 + * + * + * @see filterByArea() + * + * @param mixed $areaId The value to use as filter. + * Use scalar values for equality. + * Use array values for in_array() equivalent. + * Use associative array('min' => $minValue, 'max' => $maxValue) for intervals. + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByAreaId($areaId = null, $comparison = null) + { + if (is_array($areaId)) { + $useMinMax = false; + if (isset($areaId['min'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($areaId['max'])) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $areaId, $comparison); + } + + /** + * Filter the query by a related \Thelia\Model\Area object + * + * @param \Thelia\Model\Area|ObjectCollection $area The related object(s) to use as filter + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function filterByArea($area, $comparison = null) + { + if ($area instanceof \Thelia\Model\Area) { + return $this + ->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $area->getId(), $comparison); + } elseif ($area instanceof ObjectCollection) { + if (null === $comparison) { + $comparison = Criteria::IN; + } + + return $this + ->addUsingAlias(MondialRelayZoneConfigurationTableMap::AREA_ID, $area->toKeyValue('PrimaryKey', 'Id'), $comparison); + } else { + throw new PropelException('filterByArea() only accepts arguments of type \Thelia\Model\Area or Collection'); + } + } + + /** + * Adds a JOIN clause to the query using the Area relation + * + * @param string $relationAlias optional alias for the relation + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function joinArea($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + $tableMap = $this->getTableMap(); + $relationMap = $tableMap->getRelation('Area'); + + // create a ModelJoin object for this join + $join = new ModelJoin(); + $join->setJoinType($joinType); + $join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias); + if ($previousJoin = $this->getPreviousJoin()) { + $join->setPreviousJoin($previousJoin); + } + + // add the ModelJoin to the current object + if ($relationAlias) { + $this->addAlias($relationAlias, $relationMap->getRightTable()->getName()); + $this->addJoinObject($join, $relationAlias); + } else { + $this->addJoinObject($join, 'Area'); + } + + return $this; + } + + /** + * Use the Area relation Area object + * + * @see useQuery() + * + * @param string $relationAlias optional alias for the relation, + * to be used as main alias in the secondary query + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return \Thelia\Model\AreaQuery A secondary query class using the current class as primary query + */ + public function useAreaQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + return $this + ->joinArea($relationAlias, $joinType) + ->useQuery($relationAlias ? $relationAlias : 'Area', '\Thelia\Model\AreaQuery'); + } + + /** + * Exclude object from result + * + * @param ChildMondialRelayZoneConfiguration $mondialRelayZoneConfiguration Object to remove from the list of results + * + * @return ChildMondialRelayZoneConfigurationQuery The current query, for fluid interface + */ + public function prune($mondialRelayZoneConfiguration = null) + { + if ($mondialRelayZoneConfiguration) { + $this->addUsingAlias(MondialRelayZoneConfigurationTableMap::ID, $mondialRelayZoneConfiguration->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the mondial_relay_zone_configuration table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public function doDeleteAll(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + $affectedRows = 0; // initialize var to track total num of affected rows + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + $affectedRows += parent::doDeleteAll($con); + // Because this db requires some delete cascade/set null emulation, we have to + // clear the cached instance *after* the emulation has happened (since + // instances get re-added by the select statement contained therein). + MondialRelayZoneConfigurationTableMap::clearInstancePool(); + MondialRelayZoneConfigurationTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildMondialRelayZoneConfiguration or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildMondialRelayZoneConfiguration object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public function delete(ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + + $affectedRows = 0; // initialize var to track total num of affected rows + + try { + // use transaction because $criteria could contain info + // for more than one table or we could emulating ON DELETE CASCADE, etc. + $con->beginTransaction(); + + + MondialRelayZoneConfigurationTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + MondialRelayZoneConfigurationTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + +} // MondialRelayZoneConfigurationQuery diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php new file mode 100644 index 00000000..8271f1c8 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryInsuranceTableMap.php @@ -0,0 +1,426 @@ + array('Id', 'Level', 'MaxValue', 'PriceWithTax', ), + self::TYPE_STUDLYPHPNAME => array('id', 'level', 'maxValue', 'priceWithTax', ), + self::TYPE_COLNAME => array(MondialRelayDeliveryInsuranceTableMap::ID, MondialRelayDeliveryInsuranceTableMap::LEVEL, MondialRelayDeliveryInsuranceTableMap::MAX_VALUE, MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX, ), + self::TYPE_RAW_COLNAME => array('ID', 'LEVEL', 'MAX_VALUE', 'PRICE_WITH_TAX', ), + self::TYPE_FIELDNAME => array('id', 'level', 'max_value', 'price_with_tax', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'Level' => 1, 'MaxValue' => 2, 'PriceWithTax' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'level' => 1, 'maxValue' => 2, 'priceWithTax' => 3, ), + self::TYPE_COLNAME => array(MondialRelayDeliveryInsuranceTableMap::ID => 0, MondialRelayDeliveryInsuranceTableMap::LEVEL => 1, MondialRelayDeliveryInsuranceTableMap::MAX_VALUE => 2, MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'LEVEL' => 1, 'MAX_VALUE' => 2, 'PRICE_WITH_TAX' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'level' => 1, 'max_value' => 2, 'price_with_tax' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_delivery_insurance'); + $this->setPhpName('MondialRelayDeliveryInsurance'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayDeliveryInsurance'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('LEVEL', 'Level', 'INTEGER', true, null, null); + $this->addColumn('MAX_VALUE', 'MaxValue', 'DECIMAL', true, 16, 0); + $this->addColumn('PRICE_WITH_TAX', 'PriceWithTax', 'DECIMAL', true, 16, 0); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayDeliveryInsuranceTableMap::CLASS_DEFAULT : MondialRelayDeliveryInsuranceTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayDeliveryInsurance object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayDeliveryInsuranceTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayDeliveryInsuranceTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayDeliveryInsuranceTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayDeliveryInsuranceTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayDeliveryInsuranceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayDeliveryInsuranceTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::ID); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::LEVEL); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::MAX_VALUE); + $criteria->addSelectColumn(MondialRelayDeliveryInsuranceTableMap::PRICE_WITH_TAX); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.LEVEL'); + $criteria->addSelectColumn($alias . '.MAX_VALUE'); + $criteria->addSelectColumn($alias . '.PRICE_WITH_TAX'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME)->getTable(MondialRelayDeliveryInsuranceTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayDeliveryInsuranceTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayDeliveryInsuranceTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayDeliveryInsurance or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayDeliveryInsurance object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayDeliveryInsurance) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryInsuranceTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayDeliveryInsuranceQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayDeliveryInsuranceTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayDeliveryInsuranceTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_delivery_insurance table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayDeliveryInsuranceQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayDeliveryInsurance or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayDeliveryInsurance object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryInsuranceTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayDeliveryInsurance object + } + + if ($criteria->containsKey(MondialRelayDeliveryInsuranceTableMap::ID) && $criteria->keyContainsValue(MondialRelayDeliveryInsuranceTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayDeliveryInsuranceTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayDeliveryInsuranceQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayDeliveryInsuranceTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayDeliveryInsuranceTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php new file mode 100644 index 00000000..d2b4cb26 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayDeliveryPriceTableMap.php @@ -0,0 +1,427 @@ + array('Id', 'MaxWeight', 'PriceWithTax', 'AreaId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'maxWeight', 'priceWithTax', 'areaId', ), + self::TYPE_COLNAME => array(MondialRelayDeliveryPriceTableMap::ID, MondialRelayDeliveryPriceTableMap::MAX_WEIGHT, MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX, MondialRelayDeliveryPriceTableMap::AREA_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'MAX_WEIGHT', 'PRICE_WITH_TAX', 'AREA_ID', ), + self::TYPE_FIELDNAME => array('id', 'max_weight', 'price_with_tax', 'area_id', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'MaxWeight' => 1, 'PriceWithTax' => 2, 'AreaId' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'maxWeight' => 1, 'priceWithTax' => 2, 'areaId' => 3, ), + self::TYPE_COLNAME => array(MondialRelayDeliveryPriceTableMap::ID => 0, MondialRelayDeliveryPriceTableMap::MAX_WEIGHT => 1, MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX => 2, MondialRelayDeliveryPriceTableMap::AREA_ID => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'MAX_WEIGHT' => 1, 'PRICE_WITH_TAX' => 2, 'AREA_ID' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'max_weight' => 1, 'price_with_tax' => 2, 'area_id' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_delivery_price'); + $this->setPhpName('MondialRelayDeliveryPrice'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayDeliveryPrice'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('MAX_WEIGHT', 'MaxWeight', 'DECIMAL', true, 16, 0); + $this->addColumn('PRICE_WITH_TAX', 'PriceWithTax', 'DECIMAL', true, 16, 0); + $this->addForeignKey('AREA_ID', 'AreaId', 'INTEGER', 'area', 'ID', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + $this->addRelation('Area', '\\Thelia\\Model\\Area', RelationMap::MANY_TO_ONE, array('area_id' => 'id', ), 'CASCADE', 'RESTRICT'); + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayDeliveryPriceTableMap::CLASS_DEFAULT : MondialRelayDeliveryPriceTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayDeliveryPrice object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayDeliveryPriceTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayDeliveryPriceTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayDeliveryPriceTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayDeliveryPriceTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayDeliveryPriceTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayDeliveryPriceTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::ID); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::MAX_WEIGHT); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::PRICE_WITH_TAX); + $criteria->addSelectColumn(MondialRelayDeliveryPriceTableMap::AREA_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.MAX_WEIGHT'); + $criteria->addSelectColumn($alias . '.PRICE_WITH_TAX'); + $criteria->addSelectColumn($alias . '.AREA_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryPriceTableMap::DATABASE_NAME)->getTable(MondialRelayDeliveryPriceTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayDeliveryPriceTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayDeliveryPriceTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayDeliveryPrice or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayDeliveryPrice object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayDeliveryPrice) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + $criteria->add(MondialRelayDeliveryPriceTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayDeliveryPriceQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayDeliveryPriceTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayDeliveryPriceTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_delivery_price table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayDeliveryPriceQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayDeliveryPrice or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayDeliveryPrice object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayDeliveryPriceTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayDeliveryPrice object + } + + if ($criteria->containsKey(MondialRelayDeliveryPriceTableMap::ID) && $criteria->keyContainsValue(MondialRelayDeliveryPriceTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayDeliveryPriceTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayDeliveryPriceQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayDeliveryPriceTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayDeliveryPriceTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php new file mode 100644 index 00000000..9fce2b25 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayPickupAddressTableMap.php @@ -0,0 +1,418 @@ + array('Id', 'JsonRelayData', 'OrderAddressId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'jsonRelayData', 'orderAddressId', ), + self::TYPE_COLNAME => array(MondialRelayPickupAddressTableMap::ID, MondialRelayPickupAddressTableMap::JSON_RELAY_DATA, MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'JSON_RELAY_DATA', 'ORDER_ADDRESS_ID', ), + self::TYPE_FIELDNAME => array('id', 'json_relay_data', 'order_address_id', ), + self::TYPE_NUM => array(0, 1, 2, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'JsonRelayData' => 1, 'OrderAddressId' => 2, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'jsonRelayData' => 1, 'orderAddressId' => 2, ), + self::TYPE_COLNAME => array(MondialRelayPickupAddressTableMap::ID => 0, MondialRelayPickupAddressTableMap::JSON_RELAY_DATA => 1, MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID => 2, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'JSON_RELAY_DATA' => 1, 'ORDER_ADDRESS_ID' => 2, ), + self::TYPE_FIELDNAME => array('id' => 0, 'json_relay_data' => 1, 'order_address_id' => 2, ), + self::TYPE_NUM => array(0, 1, 2, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_pickup_address'); + $this->setPhpName('MondialRelayPickupAddress'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayPickupAddress'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('JSON_RELAY_DATA', 'JsonRelayData', 'CLOB', true, null, null); + $this->addColumn('ORDER_ADDRESS_ID', 'OrderAddressId', 'INTEGER', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayPickupAddressTableMap::CLASS_DEFAULT : MondialRelayPickupAddressTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayPickupAddress object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayPickupAddressTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayPickupAddressTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayPickupAddressTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayPickupAddressTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayPickupAddressTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayPickupAddressTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::ID); + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::JSON_RELAY_DATA); + $criteria->addSelectColumn(MondialRelayPickupAddressTableMap::ORDER_ADDRESS_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.JSON_RELAY_DATA'); + $criteria->addSelectColumn($alias . '.ORDER_ADDRESS_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayPickupAddressTableMap::DATABASE_NAME)->getTable(MondialRelayPickupAddressTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayPickupAddressTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayPickupAddressTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayPickupAddressTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayPickupAddress or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayPickupAddress object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayPickupAddress) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayPickupAddressTableMap::DATABASE_NAME); + $criteria->add(MondialRelayPickupAddressTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayPickupAddressQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayPickupAddressTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayPickupAddressTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_pickup_address table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayPickupAddressQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayPickupAddress or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayPickupAddress object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayPickupAddressTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayPickupAddress object + } + + if ($criteria->containsKey(MondialRelayPickupAddressTableMap::ID) && $criteria->keyContainsValue(MondialRelayPickupAddressTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayPickupAddressTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayPickupAddressQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayPickupAddressTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayPickupAddressTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php b/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php new file mode 100644 index 00000000..45374e38 --- /dev/null +++ b/local/modules/MondialRelay/Model/Map/MondialRelayZoneConfigurationTableMap.php @@ -0,0 +1,427 @@ + array('Id', 'DeliveryTime', 'DeliveryType', 'AreaId', ), + self::TYPE_STUDLYPHPNAME => array('id', 'deliveryTime', 'deliveryType', 'areaId', ), + self::TYPE_COLNAME => array(MondialRelayZoneConfigurationTableMap::ID, MondialRelayZoneConfigurationTableMap::DELIVERY_TIME, MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE, MondialRelayZoneConfigurationTableMap::AREA_ID, ), + self::TYPE_RAW_COLNAME => array('ID', 'DELIVERY_TIME', 'DELIVERY_TYPE', 'AREA_ID', ), + self::TYPE_FIELDNAME => array('id', 'delivery_time', 'delivery_type', 'area_id', ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * holds an array of keys for quick access to the fieldnames array + * + * first dimension keys are the type constants + * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 + */ + protected static $fieldKeys = array ( + self::TYPE_PHPNAME => array('Id' => 0, 'DeliveryTime' => 1, 'DeliveryType' => 2, 'AreaId' => 3, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'deliveryTime' => 1, 'deliveryType' => 2, 'areaId' => 3, ), + self::TYPE_COLNAME => array(MondialRelayZoneConfigurationTableMap::ID => 0, MondialRelayZoneConfigurationTableMap::DELIVERY_TIME => 1, MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE => 2, MondialRelayZoneConfigurationTableMap::AREA_ID => 3, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'DELIVERY_TIME' => 1, 'DELIVERY_TYPE' => 2, 'AREA_ID' => 3, ), + self::TYPE_FIELDNAME => array('id' => 0, 'delivery_time' => 1, 'delivery_type' => 2, 'area_id' => 3, ), + self::TYPE_NUM => array(0, 1, 2, 3, ) + ); + + /** + * Initialize the table attributes and columns + * Relations are not initialized by this method since they are lazy loaded + * + * @return void + * @throws PropelException + */ + public function initialize() + { + // attributes + $this->setName('mondial_relay_zone_configuration'); + $this->setPhpName('MondialRelayZoneConfiguration'); + $this->setClassName('\\MondialRelay\\Model\\MondialRelayZoneConfiguration'); + $this->setPackage('MondialRelay.Model'); + $this->setUseIdGenerator(true); + // columns + $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); + $this->addColumn('DELIVERY_TIME', 'DeliveryTime', 'INTEGER', true, null, null); + $this->addColumn('DELIVERY_TYPE', 'DeliveryType', 'INTEGER', true, 1, null); + $this->addForeignKey('AREA_ID', 'AreaId', 'INTEGER', 'area', 'ID', true, null, null); + } // initialize() + + /** + * Build the RelationMap objects for this table relationships + */ + public function buildRelations() + { + $this->addRelation('Area', '\\Thelia\\Model\\Area', RelationMap::MANY_TO_ONE, array('area_id' => 'id', ), 'CASCADE', 'RESTRICT'); + } // buildRelations() + + /** + * Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table. + * + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, a serialize()d version of the primary key will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + */ + public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + // If the PK cannot be derived from the row, return NULL. + if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) { + return null; + } + + return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + } + + /** + * Retrieves the primary key from the DB resultset row + * For tables with a single-column primary key, that simple pkey value will be returned. For tables with + * a multi-column primary key, an array of the primary key columns will be returned. + * + * @param array $row resultset row. + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM + * + * @return mixed The primary key of the row + */ + public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + + return (int) $row[ + $indexType == TableMap::TYPE_NUM + ? 0 + $offset + : self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType) + ]; + } + + /** + * The class that the tableMap will make instances of. + * + * If $withPrefix is true, the returned path + * uses a dot-path notation which is translated into a path + * relative to a location on the PHP include_path. + * (e.g. path.to.MyClass -> 'path/to/MyClass.php') + * + * @param boolean $withPrefix Whether or not to return the path with the class name + * @return string path.to.ClassName + */ + public static function getOMClass($withPrefix = true) + { + return $withPrefix ? MondialRelayZoneConfigurationTableMap::CLASS_DEFAULT : MondialRelayZoneConfigurationTableMap::OM_CLASS; + } + + /** + * Populates an object of the default type or an object that inherit from the default. + * + * @param array $row row returned by DataFetcher->fetch(). + * @param int $offset The 0-based offset for reading from the resultset row. + * @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType(). + One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM. + * + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + * @return array (MondialRelayZoneConfiguration object, last column rank) + */ + public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) + { + $key = MondialRelayZoneConfigurationTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, $offset, true); // rehydrate + $col = $offset + MondialRelayZoneConfigurationTableMap::NUM_HYDRATE_COLUMNS; + } else { + $cls = MondialRelayZoneConfigurationTableMap::OM_CLASS; + $obj = new $cls(); + $col = $obj->hydrate($row, $offset, false, $indexType); + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, $key); + } + + return array($obj, $col); + } + + /** + * The returned array will contain objects of the default type or + * objects that inherit from the default. + * + * @param DataFetcherInterface $dataFetcher + * @return array + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function populateObjects(DataFetcherInterface $dataFetcher) + { + $results = array(); + + // set the class once to avoid overhead in the loop + $cls = static::getOMClass(false); + // populate the object(s) + while ($row = $dataFetcher->fetch()) { + $key = MondialRelayZoneConfigurationTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = MondialRelayZoneConfigurationTableMap::getInstanceFromPool($key))) { + // We no longer rehydrate the object, since this can cause data loss. + // See http://www.propelorm.org/ticket/509 + // $obj->hydrate($row, 0, true); // rehydrate + $results[] = $obj; + } else { + $obj = new $cls(); + $obj->hydrate($row); + $results[] = $obj; + MondialRelayZoneConfigurationTableMap::addInstanceToPool($obj, $key); + } // if key exists + } + + return $results; + } + /** + * Add all the columns needed to create a new object. + * + * Note: any columns that were marked with lazyLoad="true" in the + * XML schema will not be added to the select list and only loaded + * on demand. + * + * @param Criteria $criteria object containing the columns to add. + * @param string $alias optional table alias + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function addSelectColumns(Criteria $criteria, $alias = null) + { + if (null === $alias) { + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::ID); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::DELIVERY_TIME); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::DELIVERY_TYPE); + $criteria->addSelectColumn(MondialRelayZoneConfigurationTableMap::AREA_ID); + } else { + $criteria->addSelectColumn($alias . '.ID'); + $criteria->addSelectColumn($alias . '.DELIVERY_TIME'); + $criteria->addSelectColumn($alias . '.DELIVERY_TYPE'); + $criteria->addSelectColumn($alias . '.AREA_ID'); + } + } + + /** + * Returns the TableMap related to this object. + * This method is not needed for general use but a specific application could have a need. + * @return TableMap + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function getTableMap() + { + return Propel::getServiceContainer()->getDatabaseMap(MondialRelayZoneConfigurationTableMap::DATABASE_NAME)->getTable(MondialRelayZoneConfigurationTableMap::TABLE_NAME); + } + + /** + * Add a TableMap instance to the database for this tableMap class. + */ + public static function buildTableMap() + { + $dbMap = Propel::getServiceContainer()->getDatabaseMap(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(MondialRelayZoneConfigurationTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new MondialRelayZoneConfigurationTableMap()); + } + } + + /** + * Performs a DELETE on the database, given a MondialRelayZoneConfiguration or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or MondialRelayZoneConfiguration object or primary key or array of primary keys + * which is used to create the DELETE statement + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows + * if supported by native driver or if emulated using Propel. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doDelete($values, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + if ($values instanceof Criteria) { + // rename for clarity + $criteria = $values; + } elseif ($values instanceof \MondialRelay\Model\MondialRelayZoneConfiguration) { // it's a model object + // create criteria based on pk values + $criteria = $values->buildPkeyCriteria(); + } else { // it's a primary key, or an array of pks + $criteria = new Criteria(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + $criteria->add(MondialRelayZoneConfigurationTableMap::ID, (array) $values, Criteria::IN); + } + + $query = MondialRelayZoneConfigurationQuery::create()->mergeWith($criteria); + + if ($values instanceof Criteria) { MondialRelayZoneConfigurationTableMap::clearInstancePool(); + } elseif (!is_object($values)) { // it's a primary key, or an array of pks + foreach ((array) $values as $singleval) { MondialRelayZoneConfigurationTableMap::removeInstanceFromPool($singleval); + } + } + + return $query->delete($con); + } + + /** + * Deletes all rows from the mondial_relay_zone_configuration table. + * + * @param ConnectionInterface $con the connection to use + * @return int The number of affected rows (if supported by underlying database driver). + */ + public static function doDeleteAll(ConnectionInterface $con = null) + { + return MondialRelayZoneConfigurationQuery::create()->doDeleteAll($con); + } + + /** + * Performs an INSERT on the database, given a MondialRelayZoneConfiguration or Criteria object. + * + * @param mixed $criteria Criteria or MondialRelayZoneConfiguration object containing data that is used to create the INSERT statement. + * @param ConnectionInterface $con the ConnectionInterface connection to use + * @return mixed The new primary key. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. + */ + public static function doInsert($criteria, ConnectionInterface $con = null) + { + if (null === $con) { + $con = Propel::getServiceContainer()->getWriteConnection(MondialRelayZoneConfigurationTableMap::DATABASE_NAME); + } + + if ($criteria instanceof Criteria) { + $criteria = clone $criteria; // rename for clarity + } else { + $criteria = $criteria->buildCriteria(); // build Criteria from MondialRelayZoneConfiguration object + } + + if ($criteria->containsKey(MondialRelayZoneConfigurationTableMap::ID) && $criteria->keyContainsValue(MondialRelayZoneConfigurationTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.MondialRelayZoneConfigurationTableMap::ID.')'); + } + + + // Set the correct dbName + $query = MondialRelayZoneConfigurationQuery::create()->mergeWith($criteria); + + try { + // use transaction because $criteria could contain info + // for more than one table (I guess, conceivably) + $con->beginTransaction(); + $pk = $query->doInsert($con); + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $pk; + } + +} // MondialRelayZoneConfigurationTableMap +// This is the static code needed to register the TableMap for this table with the main Propel class. +// +MondialRelayZoneConfigurationTableMap::buildTableMap(); diff --git a/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php b/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php new file mode 100644 index 00000000..25d3f39a --- /dev/null +++ b/local/modules/MondialRelay/Model/MondialRelayDeliveryInsurance.php @@ -0,0 +1,10 @@ +findOne(); + } catch (\Exception $e) { + $database = new Database($con); + $database->insertSql(null, [ __DIR__ . '/Config/thelia.sql' ]); + + // Test Enseigne and private key + self::setConfigValue(self::CODE_ENSEIGNE, "BDTEST13"); + self::setConfigValue(self::PRIVATE_KEY, "PrivateK"); + self::setConfigValue(self::WEBSERVICE_URL, "https://api.mondialrelay.com/Web_Services.asmx?WSDL"); + self::setConfigValue(self::GOOGLE_MAPS_API_KEY, "get_your_own_api_key"); + self::setConfigValue(self::ALLOW_HOME_DELIVERY, true); + self::setConfigValue(self::ALLOW_RELAY_DELIVERY, true); + self::setConfigValue(self::ALLOW_INSURANCE, true); + + // Create mondial relay shipping zones for relay and home delivery + + $moduleId = self::getModuleId(); + + $rateFromEuro = Currency::getDefaultCurrency()->getRate(); + + $moduleConfiguration = json_decode(file_get_contents(__DIR__. '/Config/config-data.json')); + + if (false === $moduleConfiguration) { + throw new TheliaProcessException("Invalid JSON configuration for Mondial Relay module"); + } + + // Create all shipping zones, and associate Mondial relay module with them. + foreach ($moduleConfiguration->shippingZones as $shippingZone) { + AreaQuery::create()->filterByName($shippingZone->name)->delete(); + + $area = new Area(); + + $area + ->setName($shippingZone->name) + ->save(); + + foreach ($shippingZone->countries as $countryIsoCode) { + if (null !== $country = CountryQuery::create()->findOneByIsoalpha3($countryIsoCode)) { + (new CountryArea()) + ->setAreaId($area->getId()) + ->setCountryId($country->getId()) + ->save(); + } + } + + // Define zone attributes + (new MondialRelayZoneConfiguration()) + ->setAreaId($area->getId()) + ->setDeliveryType($shippingZone->delivery_type) + ->setDeliveryTime($shippingZone->delivery_time_in_days) + ->save(); + + // Attach this zone to our module + (new AreaDeliveryModule()) + ->setArea($area) + ->setDeliveryModuleId($moduleId) + ->save(); + + // Create base prices + foreach ($shippingZone->prices as $price) { + (new MondialRelayDeliveryPrice()) + ->setAreaId($area->getId()) + ->setMaxWeight($price->up_to) + ->setPriceWithTax($price->price_euro * $rateFromEuro) + ->save(); + } + } + + // Insurances + foreach ($moduleConfiguration->insurances as $insurance) { + (new MondialRelayDeliveryInsurance()) + ->setMaxValue($insurance->value) + ->setPriceWithTax($insurance->price_with_tax_euro) + ->setLevel($insurance->level) + ->save(); + } + + if (null === MessageQuery::create()->findOneByName(self::TRACKING_MESSAGE_NAME)) { + $message = new Message(); + $message + ->setName(self::TRACKING_MESSAGE_NAME) + ->setHtmlLayoutFileName('') + ->setHtmlTemplateFileName(self::TRACKING_MESSAGE_NAME.'.html') + ->setTextLayoutFileName('') + ->setTextTemplateFileName(self::TRACKING_MESSAGE_NAME.'.txt') + ; + + $languages = LangQuery::create()->find(); + + /** @var Lang $language */ + foreach ($languages as $language) { + $locale = $language->getLocale(); + $message->setLocale($locale); + + $message->setTitle( + Translator::getInstance()->trans('Mondial Relay tracking information', [], self::DOMAIN_NAME, $locale) + ); + + $message->setSubject( + Translator::getInstance()->trans('Your order has been shipped', [], self::DOMAIN_NAME, $locale) + ); + } + + $message->save(); + } + + /* Deploy the module's image */ + $module = $this->getModuleModel(); + if (ModuleImageQuery::create()->filterByModule($module)->count() == 0) { + $this->deployImageFolder($module, sprintf('%s/images', __DIR__), $con); + } + } + } + + /** + * @param ConnectionInterface|null $con + * @param bool $deleteModuleData + * @throws \Propel\Runtime\Exception\PropelException + */ + public function destroy(ConnectionInterface $con = null, $deleteModuleData = false) + { + if ($deleteModuleData) { + // Delete message + MessageQuery::create()->filterByName(self::TRACKING_MESSAGE_NAME)->delete($con); + + // Delete module config data + ModuleConfigQuery::create()->filterByModuleId(self::getModuleId())->delete($con); + + // Delete module tables. + if (null !== $con) { + $database = new Database($con); + $database->insertSql(null, [__DIR__ . '/Config/drop.sql']); + } + } + + parent::destroy($con, $deleteModuleData); + } +} diff --git a/local/modules/MondialRelay/Readme.md b/local/modules/MondialRelay/Readme.md new file mode 100644 index 00000000..8d25067b --- /dev/null +++ b/local/modules/MondialRelay/Readme.md @@ -0,0 +1,39 @@ +# Module de livraison Mondial Relay + +Ce module vous permet de proposer à vos clients une livraison avec le transporteur Mondial Relay, +en point relais ou directement à domicile, en fonction des options disponibles +dans le pays de destination. + +## Installation + +Ajoutez le module depuis la page Modules de votre back-office, ou directement sur votre serveur si vous préférez. Vous +pouvez aussi utiliser composer : + + composer require thelia/mondialrelay:~1.0 + +## Configuration + +Par défaut, le module utilise des identifiants de test. Rendez-vous dans la configuration du module pour indiquer vos +propres identifiants Mondial Relay, et configurer les divers aspects du module. + +Lors de son installation, le module crée cinq zones de livraison, qui correspondent aux zones proposées par +Mondial Relay [sur la page des tarifs](http://www.mondialrelay.fr/envoi-de-colis/premiere-visite/#Tarifs "sur cette page"). + +Chacun de ces zones de livraison peut proposer la livraison en point relais, la livraison à domicile, ou les deux. +Vous pouvez régler ceci dans l'onglet "Prix" de la configuration du module. + +Pour chaque zone, vous pouvez définir des prix par tranche de poids. Ces prix sont initialisés l'installation du module +avec les prix de mars 2018. + +## Intégration + +Le module utilise les hooks de Thelia, aucun travail d'intégration n'est nécessaire. + +Pour une livraison en point relais, les caractéristiques du relais (numéro, coordonnées, horaires d'ouverture) sont +communiquées à vos clients dans les e-mails, documents PDF et historique de commande. + +## Notifications par email + +Si vous avez saisi un numéro de suivi, une notification d'envoi est expédiée à vos clients lorsque la commande passe à + l'état "envoyé". Vous pouvez modifier le contenu de ce mail dans les fichiers + `templates/email/default/mondial-relay-tracking-message.html` et `templates/email/default/mondial-relay-tracking-message.txt` diff --git a/local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf b/local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf new file mode 100644 index 00000000..4c4ed390 Binary files /dev/null and b/local/modules/MondialRelay/Solution-Web-Service-V5.4.pdf differ diff --git a/local/modules/MondialRelay/composer.json b/local/modules/MondialRelay/composer.json new file mode 100644 index 00000000..aeac3166 --- /dev/null +++ b/local/modules/MondialRelay/composer.json @@ -0,0 +1,11 @@ +{ + "name": "thelia/mondial-relay-module", + "license": "LGPL-3.0-or-later", + "type": "thelia-module", + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "extra": { + "installer-name": "MondialRelay" + } +} diff --git a/local/modules/MondialRelay/composer.lock b/local/modules/MondialRelay/composer.lock new file mode 100644 index 00000000..f35aeffa --- /dev/null +++ b/local/modules/MondialRelay/composer.lock @@ -0,0 +1,59 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "9dba6910bb06325dfa941ec161c6c334", + "packages": [ + { + "name": "xaviborja/php-mondialrelay-api", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/xaviborja/php-mondialrelay-api.git", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/xaviborja/php-mondialrelay-api/zipball/b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "shasum": "" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "MondialRelay\\": "src/MondialRelay/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)", + "time": "2017-06-21T12:22:06+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "xaviborja/php-mondialrelay-api": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/local/modules/MondialRelay/images/logo-mr.png b/local/modules/MondialRelay/images/logo-mr.png new file mode 100644 index 00000000..0b887e90 Binary files /dev/null and b/local/modules/MondialRelay/images/logo-mr.png differ diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/general.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/general.html new file mode 100644 index 00000000..6e83d898 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/general.html @@ -0,0 +1,37 @@ +{form name="mondialrelay.settings_form"} + + {include file = "includes/inner-form-toolbar.html" + hide_flags = true + page_url = "{url path='/admin/module/MondialRelay'}" + close_url = "{url path='/admin/modules'}" + hide_save_and_close_button = true + } + + {form_hidden_fields form=$form} + + {if $form_error}
    {$form_error_message}
    {/if} + +
    +
    + {render_form_field field="code_enseigne" value={module_config module="MondialRelay" key='code_enseigne' locale="en_US"}} + {render_form_field field="private_key" value={module_config module="MondialRelay" key='private_key' locale="en_US"}} + {render_form_field field="webservice_url" value={module_config module="MondialRelay" key='webservice_url' locale="en_US"}} + {render_form_field field="google_maps_api_key" value={module_config module="MondialRelay" key='google_maps_api_key' locale="en_US"}} +
    +
    + {render_form_field field="allow_relay_delivery" value={module_config module="MondialRelay" key='allow_relay_delivery' locale="en_US"}} + {render_form_field field="allow_home_delivery" value={module_config module="MondialRelay" key='allow_home_delivery' locale="en_US"}} + {* + {render_form_field field="allow_insurance" value={module_config module="MondialRelay" key='allow_insurance' locale="en_US"}} + *} + +
    +

    +

    {intl l='Development of this module is sponsored by you\'Nivers web and communication agency in Roanne.' d="mondialrelay.bo.default"}

    +
    +
    +
    + +{/form} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html new file mode 100644 index 00000000..1a4e2a7c --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/insurances.html @@ -0,0 +1,98 @@ +{form name="mondialrelay.insurances_update_form"} +
    + {form_hidden_fields form=$form} + + {if $form_error}
    {$form_error_message}
    {/if} + + + + + + + + + + + + {loop type="mondialrelay.insurances" name="insurances"} + + + + + + + + {/loop} + + + + + + +
    {intl l='Cart value' d='mondialrelay.bo.default'}{intl l='Insurance price with tax' d='mondialrelay.bo.default'} 
    + {form_field field="max_value"} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + {form_field field="price_with_tax"} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + + + +
    + +
    +
    +{/form} + +{form name="mondialrelay.insurance_create_form"} +
    + {form_hidden_fields form=$form} + + {if $form_error}
    {$form_error_message}
    {/if} + + + + + + + + + + + + + + +
    {intl l='Add a new insurance' d='mondialrelay.bo.default'}
    + {form_field field="max_value"} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + {form_field field="price_with_tax"} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + +
    +
    +{/form} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html new file mode 100644 index 00000000..e6be0e28 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/ajax/prices.html @@ -0,0 +1,158 @@ +{$module_id = {$smarty.request.module_id|default:$module_id|default:0}} + +{ifloop rel="module-areas"} +

     

    + + {loop type="area" name="module-areas" module_id=$module_id order='id'} +
    +
    + {intl l="Shipping zone \"%name\"" name=$NAME d='mondialrelay.bo.default'} +
    + +
    +
    +
    +
    +
    + {intl l='Delivery prices' d='mondialrelay.bo.default'} +
    + +
    + {form name="mondialrelay.prices_update_form"} +
    + {form_hidden_fields form=$form} + + + + + + + + + + + + {loop type="mondialrelay.prices" name="prices" area_id=$ID} + + + + + + + + {/loop} + + + + + + + +
    {intl l='Cart weight up to...' d='mondialrelay.bo.default'}{intl l='Price with tax' d='mondialrelay.bo.default'} 
    + {form_field field="max_weight" value_key=$ID} +
    + + {intl l='kg' d='mondialrelay.bo.default'} +
    + {/form_field} +
    + {form_field field="price" value_key=$ID} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + +
    + +
    +
    + {/form} + + {form name="mondialrelay.price_form"} +
    + + {form_hidden_fields form=$form} + + + + + + + + + + + + + + +
    {intl l='Add a new price' d='mondialrelay.bo.default'}
    + {form_field field="max_weight"} +
    + + {intl l='kg' d='mondialrelay.bo.default'} +
    + {/form_field} +
    + {form_field field="price"} +
    + + {currency attr="symbol"} +
    + {/form_field} +
    + +
    +
    + {/form} +
    +
    +
    + +
    +
    +
    + {intl l='Area properties' d='mondialrelay.bo.default'} +
    + +
    + {form name="mondialrelay.area_attributes_update_form"} +
    + {form_hidden_fields form=$form} + + {loop type="mondialrelay.area-attributes" name="area-attributes" area_id=$ID} + {custom_render_form_field field="delivery_time"} +
    + + {intl l='days' d='mondialrelay.bo.default'} +
    + {/custom_render_form_field} + + {render_form_field field="delivery_type" value=$DELIVERY_TYPE} + + + {/loop} +
    + {/form} +
    +
    +
    + +
    +
    +
    + {/loop} +{/ifloop} + +{elseloop rel="module-areas"} +
    + {intl l='There\'s no shipping zone defined for Mondial Relay. Please click here to configure module\'s shipping zones.' url={url path='/admin/configuration/shipping_zones'} d='mondialrelay.bo.default'} +
    +{/elseloop} + +{include file="mondialrelay/includes/error-dialog.html"} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png new file mode 100644 index 00000000..9322ffd6 Binary files /dev/null and b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/img/younivers.png differ diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js new file mode 100644 index 00000000..01e7f309 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/bootstrap-notify.min.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function s(s){var e=!1;return t('[data-notify="container"]').each(function(i,n){var a=t(n),o=a.find('[data-notify="title"]').text().trim(),r=a.find('[data-notify="message"]').html().trim(),l=o===t("
    "+s.settings.content.title+"
    ").html().trim(),d=r===t("
    "+s.settings.content.message+"
    ").html().trim(),g=a.hasClass("alert-"+s.settings.type);return l&&d&&g&&(e=!0),!e}),e}function e(e,n,a){var o={content:{message:"object"==typeof n?n.message:n,title:n.title?n.title:"",icon:n.icon?n.icon:"",url:n.url?n.url:"#",target:n.target?n.target:"-"}};a=t.extend(!0,{},o,a),this.settings=t.extend(!0,{},i,a),this._defaults=i,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&!s(this))&&this.init()}var i={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var t=arguments[0],s=1;s .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[n],this.$ele.addClass("alert-"+i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[n]);break;case"icon":var a=this.$ele.find('[data-notify="icon"]');"class"===t.settings.icon_type.toLowerCase()?a.removeClass(t.settings.content.icon).addClass(i[n]):(a.is("img")||a.find("img"),a.attr("src",i[n]));break;case"progress":var o=t.settings.delay-t.settings.delay*(i[n]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[n]).css("width",i[n]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[n]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[n]);break;default:this.$ele.find('[data-notify="'+n+'"]').html(i[n])}var r=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(r)},close:function(){t.close()}}},buildNotify:function(){var s=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,s.title,s.message,s.url,s.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var s=this,e=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){e=Math.max(e,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),this.settings.newest_on_top===!0&&(e=this.settings.offset.y),i[this.settings.placement.from]=e+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit-","moz-","o-","ms-",""),function(t,e){s.$ele[0].style[e+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),this.settings.newest_on_top===!0&&(e=parseInt(e)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(e)),t.isFunction(s.settings.onShow)&&s.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){s.$ele.removeClass(s.settings.animate.enter),t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)},600)},bind:function(){var s=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){s.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){s.$ele.data("notify-delay",s.settings.delay);var e=setInterval(function(){var t=parseInt(s.$ele.data("notify-delay"))-s.settings.timer;if("false"===s.$ele.data("data-hover")&&"pause"===s.settings.mouse_over||"pause"!=s.settings.mouse_over){var i=(s.settings.delay-t)/s.settings.delay*100;s.$ele.data("notify-delay",t),s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-s.settings.timer&&(clearInterval(e),s.close())},s.settings.timer)}},close:function(){var s=this,e=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),s.reposition(e),t.isFunction(s.settings.onClose)&&s.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(s.settings.onClosed)&&s.settings.onClosed.call(this)}),setTimeout(function(){i||(s.$ele.remove(),s.settings.onClosed&&s.settings.onClosed(s.$ele))},600)},reposition:function(s){var e=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);this.settings.newest_on_top===!0&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(e.settings.placement.from,s),s=parseInt(s)+parseInt(e.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(s){return i=t.extend(!0,{},i,s)},t.notifyClose=function(s){"warning"===s&&(s="danger"),"undefined"==typeof s||"all"===s?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===s||"info"===s||"warning"===s||"danger"===s?t(".alert-"+s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):s?t(s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+s+'"]').find('[data-notify="dismiss"]').trigger("click")},t.notifyCloseExcept=function(s){"warning"===s&&(s="danger"),"success"===s||"info"===s||"warning"===s||"danger"===s?t("[data-notify]").not(".alert-"+s).find('[data-notify="dismiss"]').trigger("click"):t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html new file mode 100644 index 00000000..4d1e625d --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/assets/js/mondialrelay.js.html @@ -0,0 +1,53 @@ + diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html new file mode 100644 index 00000000..08b474a5 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/includes/error-dialog.html @@ -0,0 +1,27 @@ +{if $error_message} + + + +{/if} diff --git a/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html new file mode 100644 index 00000000..d0731b13 --- /dev/null +++ b/local/modules/MondialRelay/templates/backOffice/default/mondialrelay/module-configuration.html @@ -0,0 +1,38 @@ +{$current_tab = {$smarty.get.tab|default:'general'}} +
    +
    +
    + {intl l="Mondial Relay delivery configuration" d='mondialrelay.bo.default'} +
    +
    + + + +
    +
    +
    + {include file="mondialrelay/ajax/general.html"} +
    +
    + +
    +
    + {include file="mondialrelay/ajax/prices.html" module_id=$module_id} +
    +
    + + {* +
    +
    + {include file="mondialrelay/ajax/insurances.html"} +
    +
    + *} +
    +
    diff --git a/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html new file mode 100644 index 00000000..19182d50 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.html @@ -0,0 +1,28 @@ +{extends file="email-layout.tpl"} + +{default_translation_domain domain='mondialrelay.email.default'} + +{* Do not provide a "Open in browser" link *} +{block name="browser"}{/block} +{* No pre-header *} +{block name="pre-header"}{/block} + +{* Subject *} +{block name="email-subject"}{intl l="Your %ref order has been shipped" ref=$REF}{/block} + +{* Title *} +{block name="email-title"}{intl l="Your %ref order has been shipped" ref=$REF}{/block} + +{* Content *} +{block name="email-content"} +{loop type="order" name="order" id=$order_id} + {loop type="customer" name="customer.order" current=false id=$CUSTOMER backend_context="1"} +

    {intl l="Dear %first %last" last=$LASTNAME first=$FIRSTNAME},

    + {/loop} + +

    {intl l="Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Please click here to track the delivery." order_ref=$REF tracking_ref=$DELIVERY_REF}

    +

    {intl l="Details about this order are available in your customer account." account_url={url path="/account"}}

    +

    {intl l="See you soon at %store" url={navigate to='index'} store={config key="store_name"}}

    +

    {intl l="The %store team." store={config key="store_name"}}

    +{/loop} +{/block} diff --git a/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt new file mode 100644 index 00000000..2ae098dc --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondial-relay-tracking-message.txt @@ -0,0 +1,11 @@ +{default_translation_domain domain='mondialrelay.email.default'} +{default_locale locale={$locale}} +{loop type="order" name="order" id=$order_id} +{loop type="customer" name="customer.order" current=false id=$CUSTOMER backend_context="1"} +{intl l="Dear %first %last" last=$LASTNAME first=$FIRSTNAME},
    +{/loop} +{intl l="Your order %order_ref has just been shipped from our store. The tracking number for this order is %tracking_ref. Tracking data is available at this address: https://www.mondialrelay.fr/suivi-de-colis" order_ref=$REF tracking_ref=$DELIVERY_REF}
    +{intl l="Details about this order are available in your customer account: %account_url." account_url={url path="/account"}}
    +{intl l="See you soon at %store at the following address: %url" url={navigate to='index'} store={config key="store_name"}}
    +{intl l="The %store team." store={config key="store_name"}} +{/loop} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html new file mode 100644 index 00000000..f5e5cd61 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-html.html @@ -0,0 +1,26 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {if count($OPENINGS) > 0} +
    +

    {intl l="Pickup relay opening hours:" d="mondialrelay.email.default"}

    + + {foreach $OPENINGS as $opening} + + + {if $opening.opening_time_1} + + {else} + + {/if} + {if $opening.opening_time_2} + + {else} + + {/if} + + {/foreach} +
    {$opening.day}{$opening.opening_time_1} - {$opening.closing_time_1} {$opening.opening_time_2} - {$opening.closing_time_2} 
    +
    + {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html new file mode 100644 index 00000000..883169ed --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/opening-hours-text.html @@ -0,0 +1,8 @@ +{strip} +{loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} +{if count($OPENINGS) > 0}{foreach $OPENINGS as $opening} +{intl l="Pickup relay opening hours:" d="mondialrelay.email.default"} +{$opening.day}: {if $opening.opening_time_1}{$opening.opening_time_1} - {$opening.closing_time_1}{/if} {if $opening.opening_time_2}{$opening.opening_time_2} - {$opening.closing_time_2}{/if} +{/foreach}{/if} +{/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..c5752c23 --- /dev/null +++ b/local/modules/MondialRelay/templates/email/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,13 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.email.default"}
    + {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + html=$html_mode + } + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css new file mode 100644 index 00000000..bca5a3a0 --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/css/styles.css @@ -0,0 +1,66 @@ +.location-form { + margin-bottom: 20px; +} + +.location-form button { + padding: 6px 12px !important; +} + +#relay_info { + height: 450px; + overflow-y: scroll; + border: 1px solid #ccc; +} + +#relay_info table { + margin: 0; + width: 100%; +} + +#relay_info table.pickup-points > tbody > tr > td { + border-bottom: 1px solid #ccc; + margin: 0; + padding: 10px; + cursor: pointer; +} +#relay_info table.pickup-points > tbody > tr:hover { + background-color: #f5f5f5; +} + +#relay_info table.pickup-points > tbody > tr > td .name { + font-weight: bold; +} + +#relay_info table.pickup-points > tbody > tr > td .name .numero { + display: inline-block; + border-radius: 2px; + background-color:#e64b62; + color: #fff; + padding: 0 5px; + margin-right: 5px; +} + +#relay_info table.opening-hours { + width: 100%; +} + +#relay_info table.opening-hours tr td { + font-size: 90%; + padding: 3px; +} +#relay_info table.opening-hours tr:nth-child(even) { + background-color:#f5f5f5; +} + +#mondial-relay-pickup { + display: none; +} + +.pickup-home-separator { + margin-top: 20px; + border-top: 1px solid #eee; + padding-top: 30px; + margin-left: -30px; + margin-right: -30px; +} + diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png new file mode 100644 index 00000000..c1685e2e Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/maison.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png new file mode 100644 index 00000000..49ff5906 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_1.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_10.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_10.png new file mode 100644 index 00000000..7c15dacf Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_10.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png new file mode 100644 index 00000000..d6e84978 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_11.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png new file mode 100644 index 00000000..db39e523 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_12.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_13.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_13.png new file mode 100644 index 00000000..8676efc9 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_13.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png new file mode 100644 index 00000000..ef1b5363 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_14.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_15.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_15.png new file mode 100644 index 00000000..1e1af8ec Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_15.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png new file mode 100644 index 00000000..805dfbe5 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_16.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_17.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_17.png new file mode 100644 index 00000000..89991633 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_17.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_18.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_18.png new file mode 100644 index 00000000..8218fbf2 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_18.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png new file mode 100644 index 00000000..f28b9949 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_19.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_2.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_2.png new file mode 100644 index 00000000..94e4c780 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_2.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_20.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_20.png new file mode 100644 index 00000000..78d897f2 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_20.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png new file mode 100644 index 00000000..606c4a6f Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_21.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_22.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_22.png new file mode 100644 index 00000000..8124f359 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_22.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_23.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_23.png new file mode 100644 index 00000000..1b0f4bfa Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_23.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png new file mode 100644 index 00000000..6a52d3df Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_24.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_25.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_25.png new file mode 100644 index 00000000..06ca9a82 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_25.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_26.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_26.png new file mode 100644 index 00000000..27d09819 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_26.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png new file mode 100644 index 00000000..72cb21f3 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_27.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_28.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_28.png new file mode 100644 index 00000000..abefd559 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_28.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_29.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_29.png new file mode 100644 index 00000000..26b16878 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_29.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_3.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_3.png new file mode 100644 index 00000000..d99878e0 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_3.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_30.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_30.png new file mode 100644 index 00000000..66ddc662 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_30.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png new file mode 100644 index 00000000..f9bd4f6a Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_4.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_5.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_5.png new file mode 100644 index 00000000..171756f1 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_5.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png new file mode 100644 index 00000000..7611b81a Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_6.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png new file mode 100644 index 00000000..426ecef5 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_7.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_8.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_8.png new file mode 100644 index 00000000..8ddc2354 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_8.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png new file mode 100644 index 00000000..b0273de2 Binary files /dev/null and b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/assets/img/pins/pointsrelais_pin_9.png differ diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/delivery-address.html b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/delivery-address.html new file mode 100644 index 00000000..8d2d09c3 --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/delivery-address.html @@ -0,0 +1,18 @@ +{strip} + {loop type="module" name="is_mondial_relay" id={order attr="delivery_module"} code="MondialRelay"} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup"} +
    +
    {intl l="Pickup location address" d="mondialrelay.fo.default"}
    +
    + {intl l="Pickup location #%number" number=$ID d="mondialrelay.fo.default"} + {$NAME} +
    + {$ADDRESS}
    + {$ZIPCODE} + {$CITY} - {$COUNTRY} +
    +
    +
    + {/loop} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..d6679e9b --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,26 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.fo.default"}
    + {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + } + {if count($OPENINGS) > 0} +
    +

    {intl l="Pickup location opening hours" d='mondialrelay.fo.default'}

    + + {foreach $OPENINGS as $opening} + + + + + + {/foreach} +
    {$opening.day}{if $opening.opening_time_1}{$opening.opening_time_1} - {$opening.closing_time_1}{else} {/if}{if $opening.opening_time_2}{$opening.opening_time_2} - {$opening.closing_time_2}{else} {/if}
    +
    + {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html new file mode 100644 index 00000000..a0bd8069 --- /dev/null +++ b/local/modules/MondialRelay/templates/frontOffice/default/mondialrelay/order-delivery-extra.html @@ -0,0 +1,347 @@ + + + diff --git a/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html new file mode 100644 index 00000000..badc6e99 --- /dev/null +++ b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/opening-hours.html @@ -0,0 +1,30 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {if count($OPENINGS) > 0} +
    +

    {intl l="Pickup relay opening hours:" d="mondialrelay.pdf.default"}

    + + + + + + {foreach $OPENINGS as $opening} + + + {if $opening.opening_time_1} + + {else} + + {/if} + {if $opening.opening_time_2} + + {else} + + {/if} + + {/foreach} +
    {$opening.day}{$opening.opening_time_1} - {$opening.closing_time_1} {$opening.opening_time_2} - {$opening.closing_time_2} 
    +
    + {/if} + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html new file mode 100644 index 00000000..e88ff372 --- /dev/null +++ b/local/modules/MondialRelay/templates/pdf/default/mondialrelay/order-delivery-address.html @@ -0,0 +1,12 @@ +{strip} + {loop type="mondialrelay.selected-pickup-point" name="avec-pickup" order_id=$order_id} + {intl l="Mondial Relay pickup location #%num" num=$ID d="mondialrelay.pdf.default"}
    + {format_address + country_code=$COUNTRY + locality=$CITY + postal_code=$ZIPCODE + address_line1=$ADDRESS + organization=$NAME + } + {/loop} +{/strip} diff --git a/local/modules/MondialRelay/vendor/autoload.php b/local/modules/MondialRelay/vendor/autoload.php new file mode 100644 index 00000000..abc12a10 --- /dev/null +++ b/local/modules/MondialRelay/vendor/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // 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; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + 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->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * 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 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->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $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-4 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->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * 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; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * 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; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + 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 + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/local/modules/MondialRelay/vendor/composer/LICENSE b/local/modules/MondialRelay/vendor/composer/LICENSE new file mode 100644 index 00000000..f27399a0 --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 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/local/modules/MondialRelay/vendor/composer/autoload_classmap.php b/local/modules/MondialRelay/vendor/composer/autoload_classmap.php new file mode 100644 index 00000000..7a91153b --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_classmap.php @@ -0,0 +1,9 @@ + array($vendorDir . '/xaviborja/php-mondialrelay-api/src/MondialRelay'), +); diff --git a/local/modules/MondialRelay/vendor/composer/autoload_real.php b/local/modules/MondialRelay/vendor/composer/autoload_real.php new file mode 100644 index 00000000..c0faa38f --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_real.php @@ -0,0 +1,52 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::getInitializer($loader)); + } else { + $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); + } + } + + $loader->register(true); + + return $loader; + } +} diff --git a/local/modules/MondialRelay/vendor/composer/autoload_static.php b/local/modules/MondialRelay/vendor/composer/autoload_static.php new file mode 100644 index 00000000..ba624e2a --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/autoload_static.php @@ -0,0 +1,31 @@ + + array ( + 'MondialRelay\\' => 13, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'MondialRelay\\' => + array ( + 0 => __DIR__ . '/..' . '/xaviborja/php-mondialrelay-api/src/MondialRelay', + ), + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitc5f9e4166b08cdd2cfebefc863dd2000::$prefixDirsPsr4; + + }, null, ClassLoader::class); + } +} diff --git a/local/modules/MondialRelay/vendor/composer/installed.json b/local/modules/MondialRelay/vendor/composer/installed.json new file mode 100644 index 00000000..4805743d --- /dev/null +++ b/local/modules/MondialRelay/vendor/composer/installed.json @@ -0,0 +1,43 @@ +[ + { + "name": "xaviborja/php-mondialrelay-api", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/xaviborja/php-mondialrelay-api.git", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/xaviborja/php-mondialrelay-api/zipball/b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "reference": "b57f7da5f3f2ce983c8bea3d8239b7fdbe7ebcbf", + "shasum": "" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "time": "2017-06-21T12:22:06+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-4": { + "MondialRelay\\": "src/MondialRelay/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)" + } +] diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md new file mode 100644 index 00000000..5399f7c4 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/Readme.md @@ -0,0 +1,5 @@ +PHP Library to Wrap Mondial Relay API + +## Installation + +composer require xaviborja/php-mondialrelay-api \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit new file mode 100644 index 00000000..4ba32564 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/bin/phpunit @@ -0,0 +1 @@ +../vendor/phpunit/phpunit/phpunit \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json new file mode 100644 index 00000000..62cd3c2a --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.json @@ -0,0 +1,26 @@ +{ + "name": "xaviborja/php-mondialrelay-api", + "description": "A PHP library for dealing with Mondial Relay API (http://api.mondialrelay.com)", + "license": "MIT", + "authors": [ + { + "name": "Xavier Borja", + "email": "xavibm86@gmail.com" + } + ], + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "autoload": { + "psr-4": {"MondialRelay\\": "src/MondialRelay/"} + }, + "autoload-dev": { + "psr-4": {"MondialRelay\\": "tests/MondialRelay/"} + }, + "config": { + "bin-dir": "bin" + }, + "require": { + "xaviborja/php-mondialrelay-api": "dev-master" + } +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock new file mode 100644 index 00000000..8a888c40 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/composer.lock @@ -0,0 +1,1334 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "8c06eaf6adaabe01bf46a48dc8762f8d", + "content-hash": "8f1695d3c1fcb4d11101af5575b9d8af", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-04-12 18:52:22" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27 11:43:31" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30 07:12:33" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25 06:54:22" + }, + { + "name": "phpspec/prophecy", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02 20:05:34" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2017-04-02 07:44:40" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03 07:40:28" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26 11:10:40" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", + "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-02-27 10:12:30" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.19", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "69c4f49ff376af2692bad9cebd883d17ebaa98a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/69c4f49ff376af2692bad9cebd883d17ebaa98a1", + "reference": "69c4f49ff376af2692bad9cebd883d17ebaa98a1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "~1.2", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-04-03 02:22:27" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "time": "2016-12-08 20:27:08" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04 06:30:41" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29 09:50:25" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08 07:14:41" + }, + { + "name": "sebastian/environment", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-11-26 07:53:53" + }, + { + "name": "sebastian/exporter", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19 08:54:04" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12 03:26:01" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18 15:18:39" + }, + { + "name": "sebastian/recursion-context", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19 07:33:16" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28 20:34:47" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03 07:35:21" + }, + { + "name": "symfony/yaml", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/62b4cdb99d52cb1ff253c465eb1532a80cebb621", + "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2017-03-20 09:45:15" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23 20:04:58" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "xaviborja/php-mondialrelay-api": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist new file mode 100644 index 00000000..44cdcf7c --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/phpunit.xml.dist @@ -0,0 +1,24 @@ + + + + + + + ./tests/ + + + + + + ./src/ + + + \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php new file mode 100644 index 00000000..adcf2091 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/ApiClient.php @@ -0,0 +1,132 @@ +websiteId = $websiteId; + $this->websiteKey = $websiteKey; + $this->client = $soapClient; + } + + public function findDeliveryPoints(array $request) + { + try { + $request = $this->decorateRequest($request); + $result = $this->client->WSI4_PointRelais_Recherche($request); + + $pointFactory = new PointFactory(); + $this->checkResponse('WSI4_PointRelais_Recherche', $result); + $delivery_points = []; + if (!property_exists($result->WSI4_PointRelais_RechercheResult, 'PointsRelais')) { + return $delivery_points; + } + if (!property_exists($result->WSI4_PointRelais_RechercheResult->PointsRelais, 'PointRelais_Details')) { + return $delivery_points; + } + if (is_object($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details)) { + $delivery_points[] = $pointFactory->create($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details); + return $delivery_points; + } + foreach ($result->WSI4_PointRelais_RechercheResult->PointsRelais->PointRelais_Details as $destination_point) { + $delivery_points[] = $pointFactory->create($destination_point); + } + return $delivery_points; + } catch (\SoapFault $e) { + throw new \Exception(); + } + + } + + public function findDeliveryPoint($id, $country) + { + try { + return $this->findDeliveryPoints(array( + 'NumPointRelais' => $id, + 'Pays' => $country + )); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + + private function decorateRequest($request) + { + $key = $this->websiteId; + foreach ($request as $parameter => $value) { + $key .= $value; + } + $key .= $this->websiteKey; + $request['Enseigne'] = $this->websiteId; + $request['Security'] = strtoupper(md5($key)); + return $request; + } + + private function checkResponse($method, $result) + { + $method = $method . "Result"; + if ($result->{$method}->STAT != 0) { + $request = $this->decorateRequest([ + 'STAT_ID' => $result->{$method}->STAT, + 'Langue' => 'FR', + ]); + $error_response = $this->client->WSI2_STAT_Label($request); + throw new \InvalidArgumentException($error_response->WSI2_STAT_LabelResult); + } + } + + public function createExpedition(array $request) + { + try { + + $request = $this->decorateRequest($request); + $result = $this->client->WSI2_CreationExpedition($request); + $this->checkResponse('WSI2_CreationExpedition', $result); + + return (new ExpeditionFactory())->create($result->WSI2_CreationExpeditionResult->STAT, + $result->WSI2_CreationExpeditionResult->ExpeditionNum, + $result->WSI2_CreationExpeditionResult->TRI_AgenceCode, + $result->WSI2_CreationExpeditionResult->TRI_Groupe, + $result->WSI2_CreationExpeditionResult->TRI_Navette, + $result->WSI2_CreationExpeditionResult->TRI_Agence, + $result->WSI2_CreationExpeditionResult->TRI_TourneeCode, + $result->WSI2_CreationExpeditionResult->TRI_LivraisonMode, + $result->WSI2_CreationExpeditionResult->CodesBarres->string); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + + public function generateTickets(array $request) + { + + try { + + $request = $this->decorateRequest($request); + $result = $this->client->WSI3_GetEtiquettes($request); + $this->checkResponse('WSI3_GetEtiquettes', $result); + + return (new TicketFactory())->create($result->WSI3_GetEtiquettesResult->STAT, + $result->WSI3_GetEtiquettesResult->URL_PDF_A4, + $result->WSI3_GetEtiquettesResult->URL_PDF_A5, + $result->WSI3_GetEtiquettesResult->URL_PDF_10x15); + + } catch (\SoapFault $e) { + throw new \Exception(); + } + } + +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php new file mode 100644 index 00000000..2da171c7 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHours.php @@ -0,0 +1,51 @@ +day = $day; + $this->openingTime1 = $openingTime1; + $this->closingTime1 = $closingTime1; + $this->openingTime2 = $openingTime2; + $this->closingTime2 = $closingTime2; + } + + public function day() + { + return $this->day; + } + + public function openingTime1() + { + return $this->openingTime1; + } + + public function closingTime1() + { + return $this->closingTime1; + } + + public function openingTime2() + { + return $this->openingTime2; + } + + public function closingTime2() + { + return $this->closingTime2; + } + + + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php new file mode 100644 index 00000000..94e81ccc --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/BussinessHours/BussinessHoursFactory.php @@ -0,0 +1,39 @@ + 'Horaires_Lundi', + 'tuesday' => 'Horaires_Mardi', + 'wednesday' => 'Horaires_Mercredi', + 'thursday' => 'Horaires_Jeudi', + 'friday' => 'Horaires_Vendredi', + 'saturday' => 'Horaires_Samedi', + 'sunday' => 'Horaires_Dimanche' + ]; + + public function create($response) + { + $bussines_hours = []; + foreach (self::$property_days_name as $day => $property) { + $bussines_hours[] = new BussinessHours( + $day, + $response->$property->string[0], + $response->$property->string[1], + $response->$property->string[2], + $response->$property->string[3] + ); + } + return $bussines_hours; + + } +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php new file mode 100644 index 00000000..42d83146 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/Expedition.php @@ -0,0 +1,124 @@ +stat = $stat; + $this->expeditionNum = $expeditionNum; + $this->triAgenceCode = $triAgenceCode; + $this->triGroupe = $triGroupe; + $this->triNavette = $triNavette; + $this->triAgence = $triAgence; + $this->triTourneeCode = $triTourneeCode; + $this->triLivraisonMode = $triLivraisonMode; + $this->codesBarres = $codesBarres; + } + + /** + * @return mixed + */ + public function stat() + { + return $this->stat; + } + + /** + * @return mixed + */ + public function expeditionNum() + { + return $this->expeditionNum; + } + + /** + * @return mixed + */ + public function triAgenceCode() + { + return $this->triAgenceCode; + } + + /** + * @return mixed + */ + public function triGroupe() + { + return $this->triGroupe; + } + + /** + * @return mixed + */ + public function triNavette() + { + return $this->triNavette; + } + + /** + * @return mixed + */ + public function triAgence() + { + return $this->triAgence; + } + + /** + * @return mixed + */ + public function triTourneeCode() + { + return $this->triTourneeCode; + } + + /** + * @return mixed + */ + public function triLivraisonMode() + { + return $this->triLivraisonMode; + } + + /** + * @return mixed + */ + public function codesBarres() + { + return $this->codesBarres; + } + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php new file mode 100644 index 00000000..62e6f4ea --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Expedition/ExpeditionFactory.php @@ -0,0 +1,34 @@ +id = $id; + $this->latitude = $latitude; + $this->longitude = $longitude; + $this->cp = $cp; + $this->address = $address; + $this->city = $city; + $this->country = $country; + $this->location = $location; + $this->activityType = $activityType; + $this->information = $information; + $this->distance = $distance; + $this->business_hours = $business_hours; + } + + + public function id() + { + return $this->id; + } + + public function address() + { + return $this->address; + } + + public function latitude() + { + return $this->latitude; + } + + public function longitude() + { + return $this->longitude; + } + + public function cp() + { + return $this->cp; + } + + public function city() + { + return $this->city; + } + + public function country() + { + return $this->country; + } + + public function location() + { + return $this->location; + } + + public function activityType() + { + return $this->activityType; + } + + public function information() + { + return $this->information; + } + + public function distance() + { + return $this->distance; + } + + public function business_hours() + { + return $this->business_hours; + } + + +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php new file mode 100644 index 00000000..fb3491ee --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Point/PointFactory.php @@ -0,0 +1,51 @@ +$var)) { + return $response->$var; + } else { + return ''; + } + } + + public function create($response) + { + $bussines_hours = (new BussinessHoursFactory())->create($response); + return new Point( + $response->Num, + str_replace(",", ".", $response->Latitude), + str_replace(",", ".", $response->Longitude), + $response->CP, + [ + trim($this->safeGet($response, 'LgAdr1')), + trim($this->safeGet($response, 'LgAdr2')), + trim($this->safeGet($response, 'LgAdr3')), + trim($this->safeGet($response, 'LgAdr4')), + ], + $response->Ville, + $response->Pays, + [ + $this->safeGet($response, 'Localisation1'), + $this->safeGet($response, 'Localisation2'), + ], + $response->TypeActivite, + $response->Information, + $response->Distance, + $bussines_hours + ); + + } +} diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php new file mode 100644 index 00000000..83a1b0e8 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/Ticket.php @@ -0,0 +1,63 @@ +stat = $stat; + $this->urlPDFA4 = $urlPDFA4; + $this->urlPDFA5 = $urlPDFA5; + $this->url10x15 = $url10x15; + } + + /** + * @return mixed + */ + public function getStat() + { + return $this->stat; + } + + /** + * @return mixed + */ + public function getUrlPDFA4() + { + return $this->urlPDFA4; + } + + /** + * @return mixed + */ + public function getUrlPDFA5() + { + return $this->urlPDFA5; + } + + /** + * @return mixed + */ + public function getUrl10x15() + { + return $this->url10x15; + } + +} \ No newline at end of file diff --git a/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php new file mode 100644 index 00000000..e1965682 --- /dev/null +++ b/local/modules/MondialRelay/vendor/xaviborja/php-mondialrelay-api/src/MondialRelay/Ticket/TicketFactory.php @@ -0,0 +1,13 @@ +client = new ApiClient(new \SoapClient("http://api.mondialrelay.com/Web_Services.asmx?WSDL"), + self::WEBSITEID, self::WEBSITEKEY); + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersAreSent() + { + $this->client->findDeliveryPoints([]); + } + + /** + * @test + */ + public function itShouldReturnAnEmptyStringIfNoPointsAreFound() + { + $points = $this->client->findDeliveryPoints(array( + 'Pays' => "ES", + 'Ville' => "", + 'CP' => '12345', + 'Latitude' => "", + 'Longitude' => "", + 'Taille' => "", + 'Poids' => "", + 'Action' => "", + 'DelaiEnvoi' => "0", + 'RayonRecherche' => "0" + )); + $this->assertEmpty($points); + } + + /** + * @test + */ + public function itShouldReturnAnArrayOfPointsIfParametersMatch() + { + $points = $this->client->findDeliveryPoints(array( + 'Pays' => "ES", + 'Ville' => "", + 'CP' => '08915', + 'Latitude' => "", + 'Longitude' => "", + 'Taille' => "", + 'Poids' => "", + 'Action' => "", + 'DelaiEnvoi' => "0", + 'RayonRecherche' => "20" + )); + foreach ($points as $point) { + $this->assertInstanceOf(Point::class, $point); + } + } + + /** + * @test + */ + public function itShouldReturnAValidPoint() + { + $point = $this->client->findDeliveryPoint('077712', 'ES'); + $this->assertInstanceOf(Point::class, $point); + } + + /** + * @test + */ + public function itShouldReturnAValidExpedition() + { + $expedition = $this->client->createExpedition(array( + 'ModeCol' => 'CCC', /*^(CCC|CDR|CDS|REL)$*/ + 'ModeLiv' => '24R', /*^(LCC|LD1|LDS|24R|24L|24X|ESP|DRI)$*/ + 'NDossier' => '55415', + 'NClient' => '147014', + 'Expe_Langage' => 'ES', + 'Expe_Ad1' => 'Albert', + 'Expe_Ad2' => '', + 'Expe_Ad3' => 'Calle Falsa', + 'Expe_Ad4' => '123', + 'Expe_Ville' => 'Granollers', + 'Expe_CP' => '08402', + 'Expe_Pays' => 'ES', + 'Expe_Tel1' => '+34666234566', + 'Expe_Tel2' => '', + 'Expe_Mail' => 'pepe@test.com', + 'Dest_Langage' => 'ES', + 'Dest_Ad1' => 'Client1', + 'Dest_Ad2' => 'LLIBRERIA CASABELLA', + 'Dest_Ad3' => 'AV PUIG I CADAFALCH', + 'Dest_Ad4' => '10', + 'Dest_Ville' => 'Granollers', + 'Dest_CP' => '08402', + 'Dest_Pays' => 'ES', + 'Dest_Tel1' => '', + 'Dest_Mail' => 'test@test.com', + 'Poids' => '123', + 'Longueur' => '1', + 'Taille' => 'XL', + 'NbColis' => '1', + 'CRT_Valeur' => '1780', + 'CRT_Devise' => 'EUR', + 'Exp_Valeur' => '1780', + 'Exp_Devise' => 'EUR', + 'COL_Rel_Pays' => 'ES', + 'COL_Rel' => '0000', + 'LIV_Rel_Pays' => 'ES', + 'LIV_Rel' => '053589', + 'TAvisage' => 'N', + 'TReprise' => 'N', + 'Montage' => '0', + 'TRDV' => 'N', + 'Instructions' => '0', + 'Assurance' => '' + )); + $this->assertInstanceOf(Expedition::class, $expedition); + } + + /** + * @test + */ + public function itShouldReturnAValidTicket() + { + $ticket = $this->client->generateTickets(array( + 'Expeditions' => '12345678', /*^[0-9]{8}(;[0-9]{8})*$*/ + 'Langue' => 'ES' /*^[A-Z]{2}$*/ + )); + + $this->assertInstanceOf(Ticket::class, $ticket); + } + + + /** + * @test + */ + public function itShouldReturnAnArrayOfValidTickets() + { + $tickets = $this->client->generateTickets(array( + 'Expeditions' => '12345678;87654321', /*^[0-9]{8}(;[0-9]{8})*$*/ + 'Langue' => 'ES' /*^[A-Z]{2}$*/ + )); + + foreach ($tickets as $ticket) { + $this->assertInstanceOf(Ticket::class, $ticket); + } + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersOfTicketsAreSent() + { + $this->client->generateTickets([]); + } + + /** + * @test + * @expectedException \InvalidArgumentException + */ + public function itShouldReturnAnExceptionInvalidParametersOfExpeditionsAreSent() + { + $this->client->createExpedition([]); + } + +} diff --git a/local/modules/PayPal/Config/Update/3.0.2.sql b/local/modules/PayPal/Config/Update/3.0.2.sql new file mode 100644 index 00000000..c3df234a --- /dev/null +++ b/local/modules/PayPal/Config/Update/3.0.2.sql @@ -0,0 +1,234 @@ +# This is a fix for InnoDB in MySQL >= 4.1.x +# It "suspends judgement" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; + +-- --------------------------------------------------------------------- +-- paypal_customer +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_customer` +( + `id` INTEGER NOT NULL, + `paypal_user_id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `name` VARCHAR(255), + `given_name` VARCHAR(255), + `family_name` VARCHAR(255), + `middle_name` VARCHAR(255), + `picture` VARCHAR(255), + `email_verified` TINYINT, + `gender` VARCHAR(255), + `birthday` VARCHAR(255), + `zoneinfo` VARCHAR(255), + `locale` VARCHAR(255), + `language` VARCHAR(255), + `verified` TINYINT, + `phone_number` VARCHAR(255), + `verified_account` VARCHAR(255), + `account_type` VARCHAR(255), + `age_range` VARCHAR(255), + `payer_id` VARCHAR(255), + `postal_code` VARCHAR(255), + `locality` VARCHAR(255), + `region` VARCHAR(255), + `country` VARCHAR(255), + `street_address` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`,`paypal_user_id`), + CONSTRAINT `fk_paypal_payer_customer_id` + FOREIGN KEY (`id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_planified_payment` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `frequency` VARCHAR(255) NOT NULL, + `frequency_interval` INTEGER NOT NULL, + `cycle` INTEGER NOT NULL, + `min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `position` INTEGER DEFAULT 0 NOT NULL, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_cart +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_cart` +( + `id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `planified_payment_id` INTEGER, + `express_payment_id` VARCHAR(255), + `express_payer_id` VARCHAR(255), + `express_token` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `FI_paypal_cart_planified_payment_id` (`planified_payment_id`), + CONSTRAINT `fk_paypal_cart_cart_id` + FOREIGN KEY (`id`) + REFERENCES `cart` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_cart_planified_payment_id` + FOREIGN KEY (`planified_payment_id`) + REFERENCES `paypal_planified_payment` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_order +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_order` +( + `id` INTEGER NOT NULL, + `payment_id` VARCHAR(50), + `agreement_id` VARCHAR(255), + `credit_card_id` VARCHAR(40), + `state` VARCHAR(20), + `amount` DECIMAL(16,6) DEFAULT 0.000000, + `description` LONGTEXT, + `payer_id` VARCHAR(255), + `token` VARCHAR(255), + `planified_title` VARCHAR(255) NOT NULL, + `planified_description` LONGTEXT, + `planified_frequency` VARCHAR(255) NOT NULL, + `planified_frequency_interval` INTEGER NOT NULL, + `planified_cycle` INTEGER NOT NULL, + `planified_actual_cycle` INTEGER DEFAULT 0 NOT NULL, + `planified_min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `planified_max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `created_at` DATETIME, + `updated_at` DATETIME, + `version` INTEGER DEFAULT 0, + `version_created_at` DATETIME, + `version_created_by` VARCHAR(100), + PRIMARY KEY (`id`), + CONSTRAINT `fk_paypal_order_order_id` + FOREIGN KEY (`id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_plan +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_plan` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `paypal_order_id` INTEGER NOT NULL, + `plan_id` VARCHAR(255), + `state` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `FI_paypal_plan_paypal_order_id` (`paypal_order_id`), + CONSTRAINT `fk_paypal_plan_paypal_order_id` + FOREIGN KEY (`paypal_order_id`) + REFERENCES `paypal_order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_log +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_log` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `customer_id` INTEGER, + `order_id` INTEGER, + `hook` VARCHAR(255), + `channel` VARCHAR(255), + `level` INTEGER, + `message` LONGTEXT, + `time` INTEGER, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `FI_paypal_log_customer_id` (`customer_id`), + INDEX `FI_paypal_log_order_id` (`order_id`), + CONSTRAINT `fk_paypal_log_customer_id` + FOREIGN KEY (`customer_id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_log_order_id` + FOREIGN KEY (`order_id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment_i18n +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_planified_payment_i18n` +( + `id` INTEGER NOT NULL, + `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL, + `title` VARCHAR(255) NOT NULL, + `description` LONGTEXT, + PRIMARY KEY (`id`,`locale`), + CONSTRAINT `paypal_planified_payment_i18n_FK_1` + FOREIGN KEY (`id`) + REFERENCES `paypal_planified_payment` (`id`) + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_order_version +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_order_version` +( + `id` INTEGER NOT NULL, + `payment_id` VARCHAR(50), + `agreement_id` VARCHAR(255), + `credit_card_id` VARCHAR(40), + `state` VARCHAR(20), + `amount` DECIMAL(16,6) DEFAULT 0.000000, + `description` LONGTEXT, + `payer_id` VARCHAR(255), + `token` VARCHAR(255), + `planified_title` VARCHAR(255) NOT NULL, + `planified_description` LONGTEXT, + `planified_frequency` VARCHAR(255) NOT NULL, + `planified_frequency_interval` INTEGER NOT NULL, + `planified_cycle` INTEGER NOT NULL, + `planified_actual_cycle` INTEGER DEFAULT 0 NOT NULL, + `planified_min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `planified_max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `created_at` DATETIME, + `updated_at` DATETIME, + `version` INTEGER DEFAULT 0 NOT NULL, + `version_created_at` DATETIME, + `version_created_by` VARCHAR(100), + `id_version` INTEGER DEFAULT 0, + PRIMARY KEY (`id`,`version`), + CONSTRAINT `paypal_order_version_FK_1` + FOREIGN KEY (`id`) + REFERENCES `paypal_order` (`id`) + ON DELETE CASCADE +) ENGINE=InnoDB; + +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/PayPal/Config/config.xml b/local/modules/PayPal/Config/config.xml new file mode 100644 index 00000000..504afefd --- /dev/null +++ b/local/modules/PayPal/Config/config.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/PayPal/Config/create.sql b/local/modules/PayPal/Config/create.sql new file mode 100644 index 00000000..79aba183 --- /dev/null +++ b/local/modules/PayPal/Config/create.sql @@ -0,0 +1,195 @@ +# This is a fix for InnoDB in MySQL >= 4.1.x +# It "suspends judgement" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; + +-- --------------------------------------------------------------------- +-- paypal_customer +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_customer` +( + `id` INTEGER NOT NULL, + `paypal_user_id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `name` VARCHAR(255), + `given_name` VARCHAR(255), + `family_name` VARCHAR(255), + `middle_name` VARCHAR(255), + `picture` VARCHAR(255), + `email_verified` TINYINT, + `gender` VARCHAR(255), + `birthday` VARCHAR(255), + `zoneinfo` VARCHAR(255), + `locale` VARCHAR(255), + `language` VARCHAR(255), + `verified` TINYINT, + `phone_number` VARCHAR(255), + `verified_account` VARCHAR(255), + `account_type` VARCHAR(255), + `age_range` VARCHAR(255), + `payer_id` VARCHAR(255), + `postal_code` VARCHAR(255), + `locality` VARCHAR(255), + `region` VARCHAR(255), + `country` VARCHAR(255), + `street_address` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`,`paypal_user_id`), + CONSTRAINT `fk_paypal_payer_customer_id` + FOREIGN KEY (`id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_planified_payment` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `frequency` VARCHAR(255) NOT NULL, + `frequency_interval` INTEGER NOT NULL, + `cycle` INTEGER NOT NULL, + `min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `position` INTEGER DEFAULT 0 NOT NULL, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_cart +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_cart` +( + `id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `planified_payment_id` INTEGER, + `express_payment_id` VARCHAR(255), + `express_payer_id` VARCHAR(255), + `express_token` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_cart_planified_payment_id` (`planified_payment_id`), + CONSTRAINT `fk_paypal_cart_cart_id` + FOREIGN KEY (`id`) + REFERENCES `cart` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_cart_planified_payment_id` + FOREIGN KEY (`planified_payment_id`) + REFERENCES `paypal_planified_payment` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_order +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_order` +( + `id` INTEGER NOT NULL, + `payment_id` VARCHAR(50), + `agreement_id` VARCHAR(255), + `credit_card_id` VARCHAR(40), + `state` VARCHAR(20), + `amount` DECIMAL(16,6) DEFAULT 0.000000, + `description` LONGTEXT, + `payer_id` VARCHAR(255), + `token` VARCHAR(255), + `planified_title` VARCHAR(255) NOT NULL, + `planified_description` LONGTEXT, + `planified_frequency` VARCHAR(255) NOT NULL, + `planified_frequency_interval` INTEGER NOT NULL, + `planified_cycle` INTEGER NOT NULL, + `planified_actual_cycle` INTEGER DEFAULT 0 NOT NULL, + `planified_min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `planified_max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + CONSTRAINT `fk_paypal_order_order_id` + FOREIGN KEY (`id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_plan +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_plan` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `paypal_order_id` INTEGER NOT NULL, + `plan_id` VARCHAR(255), + `state` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_plan_paypal_order_id` (`paypal_order_id`), + CONSTRAINT `fk_paypal_plan_paypal_order_id` + FOREIGN KEY (`paypal_order_id`) + REFERENCES `paypal_order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_log +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_log` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `customer_id` INTEGER, + `order_id` INTEGER, + `hook` VARCHAR(255), + `channel` VARCHAR(255), + `level` INTEGER, + `message` LONGTEXT, + `time` INTEGER, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_log_customer_id` (`customer_id`), + INDEX `fi_paypal_log_order_id` (`order_id`), + CONSTRAINT `fk_paypal_log_customer_id` + FOREIGN KEY (`customer_id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_log_order_id` + FOREIGN KEY (`order_id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment_i18n +-- --------------------------------------------------------------------- + +CREATE TABLE IF NOT EXISTS `paypal_planified_payment_i18n` +( + `id` INTEGER NOT NULL, + `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL, + `title` VARCHAR(255) NOT NULL, + `description` LONGTEXT, + PRIMARY KEY (`id`,`locale`), + CONSTRAINT `paypal_planified_payment_i18n_fk_c9dfe7` + FOREIGN KEY (`id`) + REFERENCES `paypal_planified_payment` (`id`) + ON DELETE CASCADE +) ENGINE=InnoDB; + +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/PayPal/Config/module.xml b/local/modules/PayPal/Config/module.xml new file mode 100644 index 00000000..be1d316e --- /dev/null +++ b/local/modules/PayPal/Config/module.xml @@ -0,0 +1,41 @@ + + + PayPal\PayPal + + PayPal + + + + PayPal + + + + + en_US + fr_FR + + 4.0.0 + + + gbarral + gbarral@openstudio.fr + + + classic + + 2.4.0 + other + diff --git a/local/modules/PayPal/Config/routing.xml b/local/modules/PayPal/Config/routing.xml new file mode 100644 index 00000000..a99e80cf --- /dev/null +++ b/local/modules/PayPal/Config/routing.xml @@ -0,0 +1,108 @@ + + + + + + PayPal:Configuration:configure + + + + PayPal:Configuration:log + + + + PayPal:Configuration:configure + + + + PayPal:PayPalPlanifiedPayment:default + + + + PayPal:PayPalPlanifiedPayment:create + + + + PayPal:PayPalPlanifiedPayment:delete + + + + PayPal:PayPalPlanifiedPayment:update + \d+ + + + + PayPal:PayPalPlanifiedPayment:processUpdate + \d+ + + + + PayPal:PayPalResponse:cancel + \d+ + + + + PayPal:PayPalResponse:ok + \d+ + + + + PayPal:PayPalResponse:expressCheckout + + + + PayPal:PayPalResponse:expressCheckoutOk + \d+ + + + + PayPal:PayPalResponse:expressCheckoutKo + \d+ + + + + PayPal:PayPalResponse:invoiceExpressCheckout + + + + PayPal:PayPalResponse:invoiceExpressCheckoutOk + \d+ + + + + PayPal:PayPalResponse:invoiceExpressCheckoutKo + \d+ + + + + + PayPal:PayPalResponse:executeExpressCheckout + order-delivery + + + + PayPal:PayPalResponse:loginOk + + + + PayPal:PayPalResponse:agreementOk + \d+ + + + + PayPal:PayPalResponse:agreementKo + \d+ + + + + PayPal:PayPalResponse:ipn + \d+ + + + + PayPal:PayPalWebHook:all + + + diff --git a/local/modules/PayPal/Config/schema.xml b/local/modules/PayPal/Config/schema.xml new file mode 100644 index 00000000..e74df397 --- /dev/null +++ b/local/modules/PayPal/Config/schema.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    diff --git a/local/modules/PayPal/Config/sqldb.map b/local/modules/PayPal/Config/sqldb.map new file mode 100644 index 00000000..63a93baa --- /dev/null +++ b/local/modules/PayPal/Config/sqldb.map @@ -0,0 +1,2 @@ +# Sqlfile -> Database map +thelia.sql=thelia diff --git a/local/modules/PayPal/Config/thelia.sql b/local/modules/PayPal/Config/thelia.sql new file mode 100644 index 00000000..5eb2a2a5 --- /dev/null +++ b/local/modules/PayPal/Config/thelia.sql @@ -0,0 +1,210 @@ + +# This is a fix for InnoDB in MySQL >= 4.1.x +# It "suspends judgement" for fkey relationships until are tables are set. +SET FOREIGN_KEY_CHECKS = 0; + +-- --------------------------------------------------------------------- +-- paypal_customer +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_customer`; + +CREATE TABLE `paypal_customer` +( + `id` INTEGER NOT NULL, + `paypal_user_id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `name` VARCHAR(255), + `given_name` VARCHAR(255), + `family_name` VARCHAR(255), + `middle_name` VARCHAR(255), + `picture` VARCHAR(255), + `email_verified` TINYINT, + `gender` VARCHAR(255), + `birthday` VARCHAR(255), + `zoneinfo` VARCHAR(255), + `locale` VARCHAR(255), + `language` VARCHAR(255), + `verified` TINYINT, + `phone_number` VARCHAR(255), + `verified_account` VARCHAR(255), + `account_type` VARCHAR(255), + `age_range` VARCHAR(255), + `payer_id` VARCHAR(255), + `postal_code` VARCHAR(255), + `locality` VARCHAR(255), + `region` VARCHAR(255), + `country` VARCHAR(255), + `street_address` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`,`paypal_user_id`), + CONSTRAINT `fk_paypal_payer_customer_id` + FOREIGN KEY (`id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_planified_payment`; + +CREATE TABLE `paypal_planified_payment` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `frequency` VARCHAR(255) NOT NULL, + `frequency_interval` INTEGER NOT NULL, + `cycle` INTEGER NOT NULL, + `min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `position` INTEGER DEFAULT 0 NOT NULL, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`) +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_cart +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_cart`; + +CREATE TABLE `paypal_cart` +( + `id` INTEGER NOT NULL, + `credit_card_id` VARCHAR(40), + `planified_payment_id` INTEGER, + `express_payment_id` VARCHAR(255), + `express_payer_id` VARCHAR(255), + `express_token` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_cart_planified_payment_id` (`planified_payment_id`), + CONSTRAINT `fk_paypal_cart_cart_id` + FOREIGN KEY (`id`) + REFERENCES `cart` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_cart_planified_payment_id` + FOREIGN KEY (`planified_payment_id`) + REFERENCES `paypal_planified_payment` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_order +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_order`; + +CREATE TABLE `paypal_order` +( + `id` INTEGER NOT NULL, + `payment_id` VARCHAR(50), + `agreement_id` VARCHAR(255), + `credit_card_id` VARCHAR(40), + `state` VARCHAR(20), + `amount` DECIMAL(16,6) DEFAULT 0.000000, + `description` LONGTEXT, + `payer_id` VARCHAR(255), + `token` VARCHAR(255), + `planified_title` VARCHAR(255) NOT NULL, + `planified_description` LONGTEXT, + `planified_frequency` VARCHAR(255) NOT NULL, + `planified_frequency_interval` INTEGER NOT NULL, + `planified_cycle` INTEGER NOT NULL, + `planified_actual_cycle` INTEGER DEFAULT 0 NOT NULL, + `planified_min_amount` DECIMAL(16,6) DEFAULT 0.000000, + `planified_max_amount` DECIMAL(16,6) DEFAULT 0.000000, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + CONSTRAINT `fk_paypal_order_order_id` + FOREIGN KEY (`id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_plan +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_plan`; + +CREATE TABLE `paypal_plan` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `paypal_order_id` INTEGER NOT NULL, + `plan_id` VARCHAR(255), + `state` VARCHAR(255), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_plan_paypal_order_id` (`paypal_order_id`), + CONSTRAINT `fk_paypal_plan_paypal_order_id` + FOREIGN KEY (`paypal_order_id`) + REFERENCES `paypal_order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_log +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_log`; + +CREATE TABLE `paypal_log` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `customer_id` INTEGER, + `order_id` INTEGER, + `hook` VARCHAR(255), + `channel` VARCHAR(255), + `level` INTEGER, + `message` LONGTEXT, + `time` INTEGER, + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `fi_paypal_log_customer_id` (`customer_id`), + INDEX `fi_paypal_log_order_id` (`order_id`), + CONSTRAINT `fk_paypal_log_customer_id` + FOREIGN KEY (`customer_id`) + REFERENCES `customer` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE, + CONSTRAINT `fk_paypal_log_order_id` + FOREIGN KEY (`order_id`) + REFERENCES `order` (`id`) + ON UPDATE RESTRICT + ON DELETE CASCADE +) ENGINE=InnoDB; + +-- --------------------------------------------------------------------- +-- paypal_planified_payment_i18n +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `paypal_planified_payment_i18n`; + +CREATE TABLE `paypal_planified_payment_i18n` +( + `id` INTEGER NOT NULL, + `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL, + `title` VARCHAR(255) NOT NULL, + `description` LONGTEXT, + PRIMARY KEY (`id`,`locale`), + CONSTRAINT `paypal_planified_payment_i18n_fk_c9dfe7` + FOREIGN KEY (`id`) + REFERENCES `paypal_planified_payment` (`id`) + ON DELETE CASCADE +) ENGINE=InnoDB; + +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/PayPal/Controller/ConfigurationController.php b/local/modules/PayPal/Controller/ConfigurationController.php new file mode 100755 index 00000000..c73a89c8 --- /dev/null +++ b/local/modules/PayPal/Controller/ConfigurationController.php @@ -0,0 +1,113 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Controller; + +use PayPal\Form\ConfigurationForm; +use PayPal\PayPal; +use Thelia\Controller\Admin\BaseAdminController; +use Thelia\Core\Security\AccessManager; +use Thelia\Core\Security\Resource\AdminResources; +use Thelia\Core\Thelia; +use Thelia\Form\Exception\FormValidationException; +use Thelia\Tools\URL; +use Thelia\Tools\Version\Version; + +/** + * Class ConfigurePaypal + * @package Paypal\Controller + */ +class ConfigurationController extends BaseAdminController +{ + /* + * Checks paypal.configure || paypal.configure.sandbox form and save config into json file + */ + /** + * @return mixed|\Symfony\Component\HttpFoundation\Response|\Thelia\Core\HttpFoundation\Response + */ + public function configureAction() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'Paypal', AccessManager::UPDATE)) { + return $response; + } + + $configurationForm = $this->createForm(ConfigurationForm::FORM_NAME); + + try { + $form = $this->validateForm($configurationForm, "POST"); + + // Get the form field values + $data = $form->getData(); + + foreach ($data as $name => $value) { + if (is_array($value)) { + $value = implode(';', $value); + } + + Paypal::setConfigValue($name, $value); + } + + $this->adminLogAppend( + "paypal.configuration.message", + AccessManager::UPDATE, + sprintf("Paypal configuration updated") + ); + + if ($this->getRequest()->get('save_mode') == 'stay') { + // If we have to stay on the same page, redisplay the configuration page/ + $url = '/admin/module/Paypal'; + } else { + // If we have to close the page, go back to the module back-office page. + $url = '/admin/modules'; + } + + return $this->generateRedirect(URL::getInstance()->absoluteUrl($url)); + } catch (FormValidationException $ex) { + $error_msg = $this->createStandardFormValidationErrorMessage($ex); + } catch (\Exception $ex) { + $error_msg = $ex->getMessage(); + } + + $this->setupFormErrorContext( + $this->getTranslator()->trans("Paypal configuration", [], PayPal::DOMAIN_NAME), + $error_msg, + $configurationForm, + $ex + ); + + // Before 2.2, the errored form is not stored in session + if (Version::test(Thelia::THELIA_VERSION, '2.2', false, "<")) { + return $this->render('module-configure', [ 'module_code' => PayPal::getModuleCode()]); + } else { + return $this->generateRedirect(URL::getInstance()->absoluteUrl('/admin/module/PayPal')); + } + } + + /** + * @return \Thelia\Core\HttpFoundation\Response + */ + public function logAction() + { + return $this->render('paypal/paypal-log'); + } +} diff --git a/local/modules/PayPal/Controller/PayPalPlanifiedPaymentController.php b/local/modules/PayPal/Controller/PayPalPlanifiedPaymentController.php new file mode 100644 index 00000000..c84ce1dd --- /dev/null +++ b/local/modules/PayPal/Controller/PayPalPlanifiedPaymentController.php @@ -0,0 +1,315 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Controller; + +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalPlanifiedPaymentEvent; +use PayPal\Form\PayPalFormFields; +use PayPal\Form\PayPalPlanifiedPaymentCreateForm; +use PayPal\Form\PayPalPlanifiedPaymentUpdateForm; +use PayPal\Model\PaypalPlanifiedPayment; +use PayPal\Model\PaypalPlanifiedPaymentQuery; +use PayPal\PayPal; +use Symfony\Component\HttpFoundation\Response; +use Thelia\Controller\Admin\AbstractCrudController; +use Thelia\Core\Security\AccessManager; + +/** + * Class PayPalPlanifiedPaymentController + * @package PayPal\Controller + */ +class PayPalPlanifiedPaymentController extends AbstractCrudController +{ + /** @var string */ + protected $currentRouter = PayPal::ROUTER; + + /** + * PayPalPlanifiedPaymentController constructor. + */ + public function __construct() + { + parent::__construct( + 'team', + 'id', + 'order', + 'paypal.back.planified.payment', + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_CREATE, + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_UPDATE, + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_DELETE + ); + } + + /** + * The default action is displaying the list. + * + * @return Response + */ + public function defaultAction() + { + // Check current user authorization + if (null !== $response = $this->checkAuth($this->resourceCode, $this->getModuleCode(), AccessManager::VIEW)) { + return $response; + } + + return $this->renderList(); + } + + /** + * Return the creation form for this object + * @return PayPalPlanifiedPaymentCreateForm + */ + protected function getCreationForm() + { + return $this->createForm(PayPalPlanifiedPaymentCreateForm::FORM_NAME); + } + + /** + * Return the update form for this object + * @return PayPalPlanifiedPaymentUpdateForm + */ + protected function getUpdateForm() + { + return $this->createForm(PayPalPlanifiedPaymentUpdateForm::FORM_NAME); + } + + /** + * Hydrate the update form for this object, before passing it to the update template + * + * @param PaypalPlanifiedPayment $object + * @return PayPalPlanifiedPaymentUpdateForm + */ + protected function hydrateObjectForm($object) + { + /** @var \Thelia\Model\Lang $lang */ + $lang = $this->getRequest()->getSession()->get('thelia.current.lang'); + $object->getTranslation($lang->getLocale()); + + $data = [ + PayPalFormFields::FIELD_PP_ID => $object->getId(), + PayPalFormFields::FIELD_PP_TITLE => $object->getTitle(), + PayPalFormFields::FIELD_PP_DESCRIPTION => $object->getDescription(), + PayPalFormFields::FIELD_PP_FREQUENCY => $object->getFrequency(), + PayPalFormFields::FIELD_PP_FREQUENCY_INTERVAL => $object->getFrequencyInterval(), + PayPalFormFields::FIELD_PP_CYCLE => $object->getCycle(), + PayPalFormFields::FIELD_PP_MIN_AMOUNT => $object->getMinAmount(), + PayPalFormFields::FIELD_PP_MAX_AMOUNT => $object->getMaxAmount(), + PayPalFormFields::FIELD_PP_POSITION => $object->getPosition() + ]; + + return $this->createForm(PayPalPlanifiedPaymentUpdateForm::FORM_NAME, 'form', $data); + } + + /** + * Creates the creation event with the provided form data + * + * @param mixed $formData + * @return PayPalPlanifiedPaymentEvent + */ + protected function getCreationEvent($formData) + { + $planifiedPayment = new PaypalPlanifiedPayment(); + + $planifiedPayment = $this->fillObjectWithDataForm($planifiedPayment, $formData); + + $planifiedPaymentEvent = new PayPalPlanifiedPaymentEvent($planifiedPayment); + + return $planifiedPaymentEvent; + } + + /** + * Creates the update event with the provided form data + * + * @param mixed $formData + * @return PayPalPlanifiedPaymentEvent + */ + protected function getUpdateEvent($formData) + { + if (null === $planifiedPayment = PaypalPlanifiedPaymentQuery::create()->findOneById($formData[PayPalFormFields::FIELD_PP_ID])) { + throw new \InvalidArgumentException( + $this->getTranslator()->trans( + 'Invalid planified payment id : %id', + ['%id' => $formData[PayPalFormFields::FIELD_PP_ID]], + PayPal::DOMAIN_NAME + ) + ); + } + + $planifiedPayment = $this->fillObjectWithDataForm($planifiedPayment, $formData); + + $planifiedPaymentEvent = new PayPalPlanifiedPaymentEvent($planifiedPayment); + + return $planifiedPaymentEvent; + } + + /** + * @param PaypalPlanifiedPayment $planifiedPayment + * @param $formData + * @return PaypalPlanifiedPayment + */ + protected function fillObjectWithDataForm(PaypalPlanifiedPayment $planifiedPayment, $formData) + { + $planifiedPayment + ->setFrequency($formData[PayPalFormFields::FIELD_PP_FREQUENCY]) + ->setFrequencyInterval($formData[PayPalFormFields::FIELD_PP_FREQUENCY_INTERVAL]) + ->setCycle($formData[PayPalFormFields::FIELD_PP_CYCLE]) + ->setMinAmount($formData[PayPalFormFields::FIELD_PP_MIN_AMOUNT]) + ->setMaxAmount($formData[PayPalFormFields::FIELD_PP_MAX_AMOUNT]) + ->setLocale($formData[PayPalFormFields::FIELD_PP_LOCALE]) + ->setTitle($formData[PayPalFormFields::FIELD_PP_TITLE]) + ->setDescription($formData[PayPalFormFields::FIELD_PP_DESCRIPTION]) + ; + + return $planifiedPayment; + } + + /** + * Creates the delete event with the provided form data + * @return PayPalPlanifiedPaymentEvent + */ + protected function getDeleteEvent() + { + return new PayPalPlanifiedPaymentEvent( + $this->getExistingObject() + ); + } + + /** + * Return true if the event contains the object, e.g. the action has updated the object in the event. + * + * @param PayPalPlanifiedPaymentEvent $event + * @return bool + */ + protected function eventContainsObject($event) + { + return $event->getPayPalPlanifiedPayment() ? true : false; + } + + /** + * Get the created object from an event. + * @param PayPalPlanifiedPaymentEvent $event + * @return PaypalPlanifiedPayment + */ + protected function getObjectFromEvent($event) + { + return $event->getPayPalPlanifiedPayment(); + } + + /** + * Load an existing object from the database + * @return PaypalPlanifiedPayment + */ + protected function getExistingObject() + { + if (null === $planifiedPayment = PaypalPlanifiedPaymentQuery::create()->findOneById((int)$this->getRequest()->get('planifiedPaymentId'))) { + throw new \InvalidArgumentException( + $this->getTranslator()->trans('Invalid planified payment id : %id', + ['%id' => (int)$this->getRequest()->get('planifiedPaymentId')], PayPal::DOMAIN_NAME) + ); + } + + return $planifiedPayment; + } + + /** + * Returns the object label form the object event (name, title, etc.) + * + * @param PaypalPlanifiedPayment $object + * @return string + */ + protected function getObjectLabel($object) + { + return $object->getTitle(); + } + + /** + * Returns the object ID from the object + * + * @param PaypalPlanifiedPayment $object + * @return int + */ + protected function getObjectId($object) + { + return $object->getId(); + } + + /** + * Render the main list template + * + * @param mixed $currentOrder , if any, null otherwise. + * @return Response + */ + protected function renderListTemplate($currentOrder) + { + $this->getListOrderFromSession('planified_payment', 'order', 'manual'); + + return $this->render( + 'paypal/planified-payment', + [ + 'order' => $currentOrder, + 'selected_menu' => 'planified' + ] + ); + } + + /** + * Render the edition template + * @return Response + */ + protected function renderEditionTemplate() + { + return $this->render('paypal/planified-payment-edit', $this->getEditionArguments()); + } + + /** + * Must return a RedirectResponse instance + * @return Response + */ + protected function redirectToEditionTemplate() + { + return $this->generateRedirectFromRoute( + 'paypal.admin.configuration.planified.update', + [], + $this->getEditionArguments() + ); + } + + /** + * Must return a RedirectResponse instance + * @return Response + */ + protected function redirectToListTemplate() + { + return $this->generateRedirectFromRoute('paypal.admin.configuration.planified'); + } + + /** + * @return array + */ + private function getEditionArguments() + { + return [ + 'planifiedPaymentId' => (int)$this->getRequest()->get('planifiedPaymentId') + ]; + } +} diff --git a/local/modules/PayPal/Controller/PayPalResponseController.php b/local/modules/PayPal/Controller/PayPalResponseController.php new file mode 100644 index 00000000..ca5589af --- /dev/null +++ b/local/modules/PayPal/Controller/PayPalResponseController.php @@ -0,0 +1,936 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Controller; + +use Front\Controller\OrderController; +use Monolog\Logger; +use PayPal\Api\Details; +use PayPal\Api\PayerInfo; +use PayPal\Event\PayPalCartEvent; +use PayPal\Event\PayPalCustomerEvent; +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalOrderEvent; +use PayPal\Exception\PayPalConnectionException; +use PayPal\Model\PaypalCart; +use PayPal\Model\PaypalCartQuery; +use PayPal\Model\PaypalCustomer; +use PayPal\Model\PaypalCustomerQuery; +use PayPal\Model\PaypalOrder; +use PayPal\Model\PaypalOrderQuery; +use PayPal\PayPal; +use PayPal\Service\PayPalAgreementService; +use PayPal\Service\PayPalCustomerService; +use PayPal\Service\PayPalLoggerService; +use PayPal\Service\PayPalPaymentService; +use Propel\Runtime\Propel; +use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\Routing\Router; +use Thelia\Core\Event\Address\AddressCreateOrUpdateEvent; +use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent; +use Thelia\Core\Event\Customer\CustomerLoginEvent; +use Thelia\Core\Event\Delivery\DeliveryPostageEvent; +use Thelia\Core\Event\Order\OrderEvent; +use Thelia\Core\Event\Order\OrderManualEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Core\Translation\Translator; +use Thelia\Model\AddressQuery; +use Thelia\Model\CartQuery; +use Thelia\Model\Country; +use Thelia\Model\CountryQuery; +use Thelia\Model\CustomerQuery; +use Thelia\Model\CustomerTitleQuery; +use Thelia\Model\ModuleQuery; +use Thelia\Model\Order; +use Thelia\Model\OrderQuery; +use Thelia\Model\OrderStatusQuery; +use Thelia\Module\Exception\DeliveryException; +use Thelia\Tools\URL; + + +/** + * Class PayPalResponseController + * @package PayPal\Controller + */ +class PayPalResponseController extends OrderController +{ + /** + * @param $orderId + */ + public function cancelAction($orderId) + { + if (null !== $order = OrderQuery::create()->findOneById($orderId)) { + $event = new OrderEvent($order); + $event->setStatus(OrderStatusQuery::getCancelledStatus()->getId()); + $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); + } + } + + /** + * @param $orderId + * @return RedirectResponse + */ + public function okAction($orderId) + { + $con = Propel::getConnection(); + $con->beginTransaction(); + + try { + $payerId = $this->getRequest()->query->get('PayerID'); + $token = $this->getRequest()->query->get('token'); + $payPalOrder = PaypalOrderQuery::create()->findOneById($orderId); + + if (null !== $payPalOrder && null !== $payerId) { + + $response = $this->executePayment($payPalOrder, $payPalOrder->getPaymentId(), $payerId, $token); + } else { + $con->rollBack(); + $message = Translator::getInstance()->trans( + 'Method okAction => One of this parameter is invalid : $payerId = %payer_id, $orderId = %order_id', + [ + '%payer_id' => $payerId, + '%order_id' => $orderId + ], + PayPal::DOMAIN_NAME + ); + + PayPalLoggerService::log( + $message, + [ + 'order_id' => $orderId + ], + Logger::CRITICAL + ); + + $response = $this->getPaymentFailurePageUrl($orderId, $message); + } + } catch (PayPalConnectionException $e) { + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'order_id' => $orderId + ], + Logger::CRITICAL + ); + $response = $this->getPaymentFailurePageUrl($orderId, $e->getMessage()); + } catch (\Exception $e) { + PayPalLoggerService::log( + $e->getMessage(), + [ + 'order_id' => $orderId + ], + Logger::CRITICAL + ); + + $response = $this->getPaymentFailurePageUrl($orderId, $e->getMessage()); + } + + $con->commit(); + return $response; + } + + + /** + * @param string $routeId + * @return RedirectResponse + */ + public function expressCheckoutAction($routeId = 'cart.view', $fromCartView = true) + { + $session = $this->getRequest()->getSession(); + $cart = $session->getSessionCart($this->getDispatcher()); + + if (null !== $cart) { + /** @var PayPalPaymentService $payPalService */ + $payPalService = $this->getContainer()->get(PayPal::PAYPAL_PAYMENT_SERVICE_ID); + + $payment = $payPalService->makePaymentFromCart( + $cart, + null, + false, + $fromCartView + ); + $response = new RedirectResponse($payment->getApprovalLink()); + + return $response; + } + + return $this->getUrlFromRouteId('cart.view'); + } + + public function invoiceExpressCheckoutAction() + { + return $this->expressCheckoutAction('order.invoice', false); + } + + /** + * @param int $cartId + * @return RedirectResponse + * @throws PayPalConnectionException + * @throws \Exception + */ + public function invoiceExpressCheckoutOkAction($cartId) + { + $con = Propel::getConnection(); + $con->beginTransaction(); + + try { + $this->fillCartWithExpressCheckout(); + + $response = $this->executeExpressCheckoutAction(false); + + } catch (PayPalConnectionException $e) { + $con->rollBack(); + + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + throw $e; + } catch(\Exception $e) { + $con->rollBack(); + + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + throw $e; + } + + $con->commit(); + return $response; + } + + public function invoiceExpressCheckoutKoAction($cartId) + { + return $this->getUrlFromRouteId('order.invoice'); + } + + /** + * @return RedirectResponse + * @throws PayPalConnectionException + * @throws \Exception + */ + public function expressCheckoutOkAction() + { + $con = Propel::getConnection(); + $con->beginTransaction(); + + try { + $this->fillCartWithExpressCheckout(); + + $response = $this->getUrlFromRouteId('order.delivery'); + + + } catch (PayPalConnectionException $e) { + $con->rollBack(); + + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + throw $e; + } catch(\Exception $e) { + $con->rollBack(); + + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + throw $e; + } + + $con->commit(); + return $response; + } + + /** + * @return RedirectResponse|\Symfony\Component\HttpFoundation\Response + */ + public function executeExpressCheckoutAction($fromCartView = true) + { + if (null === $responseParent = parent::deliver()) { + + if ($fromCartView) { + return $responseParent; + } + } + + $con = Propel::getConnection(); + $con->beginTransaction(); + + try { + $session = $this->getRequest()->getSession(); + $cart = $session->getSessionCart($this->getDispatcher()); + + if (null === $payPalCart = PaypalCartQuery::create()->findOneById($cart->getId())) { + $con->rollBack(); + return $responseParent; + } + + if (null === $payPalCart->getExpressPaymentId() || null === $payPalCart->getExpressPayerId() || null === $payPalCart->getExpressToken()) { + $con->rollBack(); + return $responseParent; + } + + /** @var PayPalPaymentService $payPalPaymentService */ + $payPalPaymentService = $this->container->get(PayPal::PAYPAL_PAYMENT_SERVICE_ID); + $payment = $payPalPaymentService->getPaymentDetails($payPalCart->getExpressPaymentId()); + + $payerInfo = $payment->getPayer()->getPayerInfo(); + + //Check if invoice adresse already exist + if (null === $payerInfo->getBillingAddress()) { + $line1 = $payerInfo->getShippingAddress()->getLine1(); + $zipCode = $payerInfo->getShippingAddress()->getPostalCode(); + } else { + $line1 = $payerInfo->getBillingAddress()->getLine1(); + $zipCode = $payerInfo->getBillingAddress()->getPostalCode(); + } + + /** @var \Thelia\Model\Address $invoiceAddress */ + if (null === $invoiceAddress = AddressQuery::create() + ->filterByCustomerId($cart->getCustomerId()) + ->filterByIsDefault(0) + ->filterByAddress1($line1) + ->filterByZipcode($zipCode) + ->findOne()) { + + $event = $this->createAddressEvent($payerInfo); + $event->setCustomer($cart->getCustomer()); + + $this->dispatch(TheliaEvents::ADDRESS_CREATE, $event); + $invoiceAddress = $event->getAddress(); + } + + if (null === $payPalCustomer = PaypalCustomerQuery::create()->findOneById($cart->getCustomerId())) { + $payPalCustomer = new PaypalCustomer(); + $payPalCustomer->setId($cart->getCustomerId()); + } + + $payPalCustomer + ->setPaypalUserId($payerInfo->getPayerId()) + ->setName($payerInfo->getFirstName()) + ->setGivenName($payerInfo->getFirstName() . ' ' . $payerInfo->getLastName()) + ->setFamilyName($payerInfo->getLastName()) + ->setMiddleName($payerInfo->getMiddleName()) + ->setBirthday($payerInfo->getBirthDate()) + ->setLocale($this->getRequest()->getSession()->getLang()->getLocale()) + ->setPhoneNumber($payerInfo->getPhone()) + ->setPayerId($payerInfo->getPayerId()) + ->setPostalCode($payerInfo->getShippingAddress()->getPostalCode()) + ->setCountry($payerInfo->getShippingAddress()->getCountryCode()) + ->setStreetAddress($payerInfo->getShippingAddress()->getLine1() . $payerInfo->getShippingAddress()->getLine2()) + ; + + $payPalCustomerEvent = new PayPalCustomerEvent($payPalCustomer); + $this->dispatch(PayPalEvents::PAYPAL_CUSTOMER_UPDATE, $payPalCustomerEvent); + + /** @var \Thelia\Model\Address $deliveryAddress */ + $deliveryAddress = $cart->getCustomer()->getDefaultAddress(); + + /** @var \Thelia\Model\Module $deliveryModule */ + $deliveryModule = ModuleQuery::create()->filterByActivate(1)->findOne(); + /** @var \Thelia\Model\Module $paymentModule */ + $paymentModule = ModuleQuery::create()->findPk(PayPal::getModuleId()); + + /** @var \Thelia\Model\Currency $currency */ + $currency = $cart->getCurrency(); + $lang = $this->getRequest()->getSession()->getLang(); + + $order = new Order(); + $order + ->setCustomerId($cart->getCustomerId()) + ->setCurrencyId($currency->getId()) + ->setCurrencyRate($currency->getRate()) + ->setStatusId(OrderStatusQuery::getNotPaidStatus()->getId()) + ->setLangId($lang->getDefaultLanguage()->getId()) + ->setChoosenDeliveryAddress($deliveryAddress) + ->setChoosenInvoiceAddress($invoiceAddress) + ; + + $orderEvent = new OrderEvent($order); + + /* get postage amount */ + $moduleInstance = $deliveryModule->getDeliveryModuleInstance($this->container); + $deliveryPostageEvent = new DeliveryPostageEvent($moduleInstance, $cart, $deliveryAddress); + + $this->getDispatcher()->dispatch( + TheliaEvents::MODULE_DELIVERY_GET_POSTAGE, + $deliveryPostageEvent + ); + + if (!$deliveryPostageEvent->isValidModule() || null === $deliveryPostageEvent->getPostage()) { + throw new DeliveryException( + $this->getTranslator()->trans('The delivery module is not valid.', [], PayPal::DOMAIN_NAME) + ); + } + + $postage = $deliveryPostageEvent->getPostage(); + + $orderEvent->setPostage($postage->getAmount()); + $orderEvent->setPostageTax($postage->getAmountTax()); + $orderEvent->setPostageTaxRuleTitle($postage->getTaxRuleTitle()); + $orderEvent->setDeliveryAddress($deliveryAddress->getId()); + $orderEvent->setInvoiceAddress($invoiceAddress->getId()); + $orderEvent->setDeliveryModule($deliveryModule->getId()); + $orderEvent->setPaymentModule($paymentModule->getId()); + + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_DELIVERY_ADDRESS, $orderEvent); + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_INVOICE_ADDRESS, $orderEvent); + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_POSTAGE, $orderEvent); + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_DELIVERY_MODULE, $orderEvent); + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_SET_PAYMENT_MODULE, $orderEvent); + + $orderManualEvent = new OrderManualEvent( + $orderEvent->getOrder(), + $orderEvent->getOrder()->getCurrency(), + $orderEvent->getOrder()->getLang(), + $cart, + $cart->getCustomer() + ); + + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_CREATE_MANUAL, $orderManualEvent); + $order = $orderManualEvent->getPlacedOrder(); + + $payPalOrderEvent = $payPalPaymentService->generatePayPalOrder($order); + $payPalPaymentService->updatePayPalOrder($payPalOrderEvent->getPayPalOrder(), $payment->getState(), $payment->getId()); + + $response = $this->executePayment( + $payPalOrderEvent->getPayPalOrder(), + $payPalCart->getExpressPaymentId(), + $payPalCart->getExpressPayerId(), + $payPalCart->getExpressToken(), + PayPal::PAYPAL_METHOD_EXPRESS_CHECKOUT, + $payPalPaymentService->createDetails( + $order->getPostage(), + $order->getPostageTax(), + $order->getTotalAmount($tax, false) + ) + ); + + $con->commit(); + } catch (PayPalConnectionException $e) { + $con->rollBack(); + + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + $response = $responseParent; + } catch(\Exception $e) { + $con->rollBack(); + + $customerId = null; + if (isset($customer)) { + $customerId = $customer->getId(); + } + + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $customerId + ], + Logger::CRITICAL + ); + $response = $responseParent; + } + + $con->commit(); + return $response; + } + + /** + * + */ + public function expressCheckoutKoAction() + { + PayPalLoggerService::log( + Translator::getInstance()->trans('Express Checkout login failed', [], PayPal::DOMAIN_NAME), + [], + Logger::WARNING + ); + return $this->getUrlFromRouteId('cart.view'); + } + + /** + * Method called when a customer log in with PayPal. + * @return RedirectResponse + * @throws \Exception + */ + public function loginOkAction() + { + if (null !== $authorizationCode = $this->getRequest()->query->get('code')) { + + /** @var PayPalCustomerService $payPalCustomerService */ + $payPalCustomerService = $this->container->get(PayPal::PAYPAL_CUSTOMER_SERVICE_ID); + $openIdUserinfo = $payPalCustomerService->getUserInfoWithAuthorizationCode($authorizationCode); + + $payPalCustomer = $payPalCustomerService->getCurrentPayPalCustomer(); + $payPalCustomer + ->setPaypalUserId($openIdUserinfo->getUserId()) + ->setName($openIdUserinfo->getName()) + ->setGivenName($openIdUserinfo->getGivenName()) + ->setFamilyName($openIdUserinfo->getFamilyName()) + ->setMiddleName($openIdUserinfo->getMiddleName()) + ->setPicture($openIdUserinfo->getPicture()) + ->setEmailVerified($openIdUserinfo->getEmailVerified()) + ->setGender($openIdUserinfo->getGender()) + ->setBirthday($openIdUserinfo->getBirthday()) + ->setZoneinfo($openIdUserinfo->getZoneinfo()) + ->setLocale($openIdUserinfo->getLocale()) + ->setLanguage($openIdUserinfo->getLanguage()) + ->setVerified($openIdUserinfo->getVerified()) + ->setPhoneNumber($openIdUserinfo->getPhoneNumber()) + ->setVerifiedAccount($openIdUserinfo->getVerifiedAccount()) + ->setAccountType($openIdUserinfo->getAccountType()) + ->setAgeRange($openIdUserinfo->getAgeRange()) + ->setPayerId($openIdUserinfo->getPayerId()) + ->setPostalCode($openIdUserinfo->getAddress()->getPostalCode()) + ->setLocality($openIdUserinfo->getAddress()->getLocality()) + ->setRegion($openIdUserinfo->getAddress()->getRegion()) + ->setCountry($openIdUserinfo->getAddress()->getCountry()) + ->setStreetAddress($openIdUserinfo->getAddress()->getStreetAddress()) + ; + + $payPalCustomerEvent = new PayPalCustomerEvent($payPalCustomer); + $this->dispatch(PayPalEvents::PAYPAL_CUSTOMER_UPDATE, $payPalCustomerEvent); + + $this->dispatch(TheliaEvents::CUSTOMER_LOGIN, new CustomerLoginEvent($payPalCustomerEvent->getPayPalCustomer()->getCustomer())); + } + + return new RedirectResponse(URL::getInstance()->absoluteUrl($this->getSession()->getReturnToUrl())); + } + + /** + * @param $orderId + * @return RedirectResponse + */ + public function agreementOkAction($orderId) + { + $con = Propel::getConnection(); + $con->beginTransaction(); + + $token = $this->getRequest()->query->get('token'); + $payPalOrder = PaypalOrderQuery::create()->findOneById($orderId); + + if (null !== $payPalOrder && null !== $token) { + + try { + /** @var PayPalAgreementService $payPalAgreementService */ + $payPalAgreementService = $this->container->get(PayPal::PAYPAL_AGREEMENT_SERVICE_ID); + $agreement = $payPalAgreementService->activateBillingAgreementByToken($token); + + $payPalOrder + ->setState($agreement->getState()) + ->setAgreementId($agreement->getId()) + ->setPayerId($agreement->getPayer()->getPayerInfo()->getPayerId()) + ->setToken($token) + ; + $payPalOrderEvent = new PayPalOrderEvent($payPalOrder); + $this->dispatch(PayPalEvents::PAYPAL_ORDER_UPDATE, $payPalOrderEvent); + + $event = new OrderEvent($payPalOrder->getOrder()); + $event->setStatus(OrderStatusQuery::getPaidStatus()->getId()); + $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); + + $response = $this->getPaymentSuccessPageUrl($orderId); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order payed with success in PayPal with method : %method', + [ + '%method' => PayPal::PAYPAL_METHOD_PLANIFIED_PAYMENT + ], + PayPal::DOMAIN_NAME + ), + [ + 'order_id' => $payPalOrder->getId(), + 'customer_id' => $payPalOrder->getOrder()->getCustomerId() + ], + Logger::INFO + ); + } catch (PayPalConnectionException $e) { + $con->rollBack(); + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $orderId + ], + Logger::CRITICAL + ); + + $response = $this->getPaymentFailurePageUrl($orderId, $e->getMessage()); + } catch (\Exception $e) { + $con->rollBack(); + PayPalLoggerService::log( + $e->getMessage(), + [ + 'order_id' => $orderId + ], + Logger::CRITICAL + ); + + $response = $this->getPaymentFailurePageUrl($orderId, $e->getMessage()); + } + + } else { + $con->rollBack(); + $message = Translator::getInstance()->trans( + 'Method agreementOkAction => One of this parameter is invalid : $token = %token, $orderId = %order_id', + [ + '%token' => $token, + '%order_id' => $orderId + ], + PayPal::DOMAIN_NAME + ); + + PayPalLoggerService::log( + $message, + [ + 'order_id' => $orderId + ], + Logger::CRITICAL + ); + + $response = $this->getPaymentFailurePageUrl($orderId, $message); + } + + $con->commit(); + return $response; + } + + /** + * @param $orderId + */ + public function ipnAction($orderId) + { + PayPalLoggerService::log('GUIGIT', ['hook' => 'guigit', 'order_id' => $orderId], Logger::DEBUG); + + PayPalLoggerService::log( + print_r($this->getRequest()->request, true), + [ + 'hook' => 'guigit', + 'order_id' => $orderId + ], + Logger::DEBUG + ); + PayPalLoggerService::log( + print_r($this->getRequest()->attributes, true), + [ + 'hook' => 'guigit', + 'order_id' => $orderId + ], + Logger::DEBUG + ); + } + + /** + * Return the order payment success page URL + * + * @param $orderId + * @return RedirectResponse + */ + public function getPaymentSuccessPageUrl($orderId) + { + return $this->getUrlFromRouteId('order.placed', ['order_id' => $orderId]); + } + + /** + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + protected function fillCartWithExpressCheckout() + { + $paymentId = $this->getRequest()->get('paymentId'); + $token = $this->getRequest()->get('token'); + $payerId = $this->getRequest()->get('PayerID'); + $cartId = $this->getRequest()->get('cartId'); + $cart = CartQuery::create()->findOneById($this->getRequest()->get('cartId')); + + if (null === $paymentId || null === $token || null === $payerId || null === $cart) { + PayPalLoggerService::log( + Translator::getInstance()->trans('Express checkout failed in expressCheckoutOkAction() function', [], PayPal::DOMAIN_NAME), + [], + Logger::CRITICAL + ); + } + + PayPalLoggerService::log( + Translator::getInstance()->trans('Express checkout begin with cart %id', ['%id' => $cartId], PayPal::DOMAIN_NAME) + ); + + /** @var PayPalPaymentService $payPalPaymentService */ + $payPalPaymentService = $this->container->get(PayPal::PAYPAL_PAYMENT_SERVICE_ID); + $payment = $payPalPaymentService->getPaymentDetails($paymentId); + + $payerInfo = $payment->getPayer()->getPayerInfo(); + if (null === $customer = CustomerQuery::create()->findOneByEmail($payment->getPayer()->getPayerInfo()->getEmail())) { + + $customerCreateEvent = $this->createEventInstance($payerInfo); + + $this->dispatch(TheliaEvents::CUSTOMER_CREATEACCOUNT, $customerCreateEvent); + + $customer = $customerCreateEvent->getCustomer(); + + } + + //Save informations to use them after customer has choosen the delivery method + if (null === $payPalCart = PaypalCartQuery::create()->findOneById($cartId)) { + $payPalCart = new PaypalCart(); + $payPalCart->setId($cartId); + } + + $payPalCart + ->setExpressPaymentId($paymentId) + ->setExpressPayerId($payerId) + ->setExpressToken($token) + ; + $payPalCartEvent = new PayPalCartEvent($payPalCart); + $this->getDispatcher()->dispatch(PayPalEvents::PAYPAL_CART_UPDATE, $payPalCartEvent); + + $cart->setCustomerId($customer->getId())->save(); + $clonedCart = clone $cart; + $this->dispatch(TheliaEvents::CUSTOMER_LOGIN, new CustomerLoginEvent($customer)); + + //In case of the current customer has changed, re affect the correct cart and customer session + $this->getSecurityContext()->setCustomerUser($customer); + $clonedCart->save(); + $this->getRequest()->getSession()->set("thelia.cart_id", $clonedCart->getId()); + } + + /** + * @param $routeId + * @param array $params + * @return RedirectResponse + */ + protected function getUrlFromRouteId($routeId, $params = []) + { + $frontOfficeRouter = $this->getContainer()->get('router.front'); + + return new RedirectResponse( + URL::getInstance()->absoluteUrl( + $frontOfficeRouter->generate( + $routeId, + $params, + Router::ABSOLUTE_URL + ) + ) + ); + } + + /** + * Redirect the customer to the failure payment page. if $message is null, a generic message is displayed. + * + * @param $orderId + * @param $message + * @return RedirectResponse + */ + public function getPaymentFailurePageUrl($orderId, $message) + { + $frontOfficeRouter = $this->getContainer()->get('router.front'); + + return new RedirectResponse( + URL::getInstance()->absoluteUrl( + $frontOfficeRouter->generate( + "order.failed", + array( + "order_id" => $orderId, + "message" => $message + ), + Router::ABSOLUTE_URL + ) + ) + ); + } + + /** + * @param PaypalOrder $payPalOrder + * @param $paymentId + * @param $payerId + * @param $token + * @param string $method + * @param Details|null $details + * @return RedirectResponse + */ + protected function executePayment(PaypalOrder $payPalOrder, $paymentId, $payerId, $token, $method = PayPal::PAYPAL_METHOD_PAYPAL, Details $details = null) + { + /** @var PayPalPaymentService $payPalService */ + $payPalService = $this->getContainer()->get(PayPal::PAYPAL_PAYMENT_SERVICE_ID); + $payment = $payPalService->executePayment($paymentId, $payerId, $details); + + $payPalOrder + ->setState($payment->getState()) + ->setPayerId($payerId) + ->setToken($token) + ; + $payPalOrderEvent = new PayPalOrderEvent($payPalOrder); + $this->dispatch(PayPalEvents::PAYPAL_ORDER_UPDATE, $payPalOrderEvent); + + $event = new OrderEvent($payPalOrder->getOrder()); + $event->setStatus(OrderStatusQuery::getPaidStatus()->getId()); + $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); + + $response = $this->getPaymentSuccessPageUrl($payPalOrder->getId()); + + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order payed with success in PayPal with method : %method', + [ + '%method' => $method + ], + PayPal::DOMAIN_NAME + ), + [ + 'order_id' => $payPalOrder->getId(), + 'customer_id' => $payPalOrder->getOrder()->getCustomerId() + ], + Logger::INFO + ); + + + return $response; + } + + /** + * @param PayerInfo $payerInfo + * @return \Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent + */ + protected function createEventInstance(PayerInfo $payerInfo) + { + if (null === $country = CountryQuery::create()->findOneByIsoalpha2($payerInfo->getShippingAddress()->getCountryCode())) { + $country = Country::getDefaultCountry(); + } + + $customerCreateEvent = new CustomerCreateOrUpdateEvent( + CustomerTitleQuery::create()->findOne()->getId(), + $payerInfo->getFirstName(), + $payerInfo->getLastName(), + $payerInfo->getShippingAddress()->getLine1(), + $payerInfo->getShippingAddress()->getLine2(), + null, + $payerInfo->getPhone(), + null, + $payerInfo->getShippingAddress()->getPostalCode(), + $payerInfo->getShippingAddress()->getCity(), + $country->getId(), + $payerInfo->getEmail(), + 'random', + $this->getRequest()->getSession()->getLang()->getId(), + null, + null, + null, + null, + null, + null + ); + + return $customerCreateEvent; + } + + /** + * @param PayerInfo $payerInfo + * @return AddressCreateOrUpdateEvent + */ + protected function createAddressEvent(PayerInfo $payerInfo) + { + if (null !== $payerInfo->getBillingAddress()) { + $countryCode = $payerInfo->getBillingAddress()->getCountryCode(); + $line1 = $payerInfo->getBillingAddress()->getLine1(); + $line2 = $payerInfo->getBillingAddress()->getLine2(); + $zipCode = $payerInfo->getBillingAddress()->getPostalCode(); + $city = $payerInfo->getBillingAddress()->getCity(); + } else { + $countryCode = $payerInfo->getShippingAddress()->getCountryCode(); + $line1 = $payerInfo->getShippingAddress()->getLine1(); + $line2 = $payerInfo->getShippingAddress()->getLine2(); + $zipCode = $payerInfo->getShippingAddress()->getPostalCode(); + $city = $payerInfo->getShippingAddress()->getCity(); + } + + if (null === $country = CountryQuery::create()->findOneByIsoalpha2($countryCode)) { + $country = Country::getDefaultCountry(); + } + + return new AddressCreateOrUpdateEvent( + 'Express checkout PayPal', + CustomerTitleQuery::create()->findOne()->getId(), + $payerInfo->getFirstName(), + $payerInfo->getLastName(), + $line1, + ($line2)?$line2:'', + '', + $zipCode, + $city, + $country->getId(), + $payerInfo->getPhone(), + $payerInfo->getPhone(), + '', + 0, + null + ); + } +} diff --git a/local/modules/PayPal/Controller/PayPalWebHookController.php b/local/modules/PayPal/Controller/PayPalWebHookController.php new file mode 100644 index 00000000..0ebc216c --- /dev/null +++ b/local/modules/PayPal/Controller/PayPalWebHookController.php @@ -0,0 +1,336 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Controller; + +use Monolog\Logger; +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalOrderEvent; +use PayPal\Exception\PayPalConnectionException; +use PayPal\Model\PaypalOrderQuery; +use PayPal\Model\PaypalPlanQuery; +use PayPal\PayPal; +use PayPal\Service\PayPalAgreementService; +use PayPal\Service\PayPalLoggerService; +use Propel\Runtime\Propel; +use Thelia\Controller\Front\BaseFrontController; +use Thelia\Core\Event\Order\OrderEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Core\HttpFoundation\Request; +use Thelia\Core\Translation\Translator; +use Thelia\Model\OrderStatusQuery; + +/** + * Class PayPalWebHookController + * @package PayPal\Controller + */ +class PayPalWebHookController extends BaseFrontController +{ + const HOOK_BILLING_PLAN_CREATED = 'BILLING.PLAN.CREATED'; + const HOOK_BILLING_PLAN_UPDATED = 'BILLING.PLAN.UPDATED'; + const HOOK_BILLING_SUBSCRIPTION_CREATED = 'BILLING.SUBSCRIPTION.CREATED'; + + const HOOK_PAYMENT_SALE_COMPLETED = 'PAYMENT.SALE.COMPLETED'; + const HOOK_PAYMENT_SALE_DENIED = 'PAYMENT.SALE.DENIED'; + + //Classic PayPal payment + const RESOURCE_TYPE_SALE = 'sale'; + + //Planified payment + const RESOURCE_TYPE_PLAN = 'plan'; + const RESOURCE_TYPE_AGREEMENT = 'agreement'; + + /** + * Example of array received in posted params : + * + * + * Array ( + * 'id' => 'WH-0LU96374794024348-4WG31854RU4949452', + * 'event_version' => 1.0, + * 'create_time' => '2017-02-03T15:31:29Z', + * 'resource_type' => 'plan', + * 'event_type' => 'BILLING.PLAN.CREATED', + * 'summary' => 'A billing plan was created', + * 'resource' => Array ( + * 'merchant_preferences' => Array ( + * 'setup_fee' => Array ( + * 'currency' => 'EUR', + * 'value' => 0 + * ), + * 'return_url' => 'http://25b3ee89.ngrok.io/thelia_2_3_3/web/module/paypal/agreement/ok/208', + * 'cancel_url' => 'http://25b3ee89.ngrok.io/thelia_2_3_3/web/module/paypal/agreement/ko/208', + * 'auto_bill_amount' => 'NO', + * 'initial_fail_amount_action' => 'CONTINUE', + * 'max_fail_attempts' => 0 + * ), + * 'update_time' => '2017-02-03T15:31:29.348Z', + * 'create_time' => '2017-02-03T15:31:29.348Z', + * 'name' => 'plan for order 208', + * 'description' => false, + * 'links' => Array ( + * 0 => Array ( + * 'href' => 'api.sandbox.paypal.com/v1/payments/billing-plans/P-2DV20774VJ3968037ASNA3RA', + * 'rel' => 'self', + * 'method' => 'GET' + * ) + * ), + * 'payment_definitions' => Array ( + * 0 => Array ( + * 'name' => 'payment definition for order 208', + * 'type' => 'REGULAR', + * 'frequency' => 'Day', + * 'frequency_interval' => 1, + * 'amount' => Array ( + * 'currency' => 'EUR', + * 'value' => 3.9 + * ), + * 'cycles' => 5, + * 'charge_models' => Array ( + * 0 => Array ( + * 'type' => 'SHIPPING', + * 'amount' => Array ( + * 'currency' => 'EUR', + * 'value' => 0 + * ), + * 'id' => 'CHM-26B03456D8799461GASNA3RA' + * ) + * ), + * 'id' => 'PD-3FB00313143031422ASNA3RA' + * ) + * ), + * 'id' => 'P-2DV20774VJ3968037ASNA3RA', + * 'state' => 'CREATED', + * 'type' => 'FIXED' + * ), + * 'links' => Array ( + * 0 => Array ( + * 'href' => 'https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-0LU96374794024348-4WG31854RU4949452', + * 'rel' => 'self', + * 'method' => 'GET' + * ), + * 1 => Array ( + * 'href' => 'https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-0LU96374794024348-4WG31854RU4949452/resend', + * 'rel' => 'resend', + * 'method' => 'POST' + * ) + * ) + * ); + */ + public function allAction() + { + $eventType = $this->getRequest()->request->get('event_type'); + $resource = $this->getRequest()->request->get('resource'); + $resourceType = $this->getRequest()->request->get('resource_type'); + + $details = [ + 'request' => $this->getRequest()->request->all() + ]; + + $params = [ + 'hook' => $eventType + ]; + + $con = Propel::getConnection(); + $con->beginTransaction(); + + try { + + $title = $this->getTitle($this->getRequest()); + + if (is_array($resource)) { + + switch (strtolower($resourceType)) { + + case self::RESOURCE_TYPE_SALE: + if (isset($resource['parent_payment'])) { + $params = $this->getParamsForSale($resource['parent_payment'], $params, $eventType); + } + if (isset($resource['billing_agreement_id'])) { + $params = $this->getParamsForAgreement($resource['billing_agreement_id'], $params); + } + break; + + case self::RESOURCE_TYPE_PLAN: + if (isset($resource['id'])) { + $params = $this->getParamsForPlan($resource['id'], $params); + } + break; + + case self::RESOURCE_TYPE_AGREEMENT: + if (isset($resource['id'])) { + $params = $this->getParamsForAgreement($resource['id'], $params); + } + break; + + default: + break; + } + } + + PayPalLoggerService::log( + '

    ' . $title . '

    ' . $this->printRecursiveData($details), + $params, + Logger::INFO + ); + + $con->commit(); + } catch (PayPalConnectionException $e) { + + $con->rollBack(); + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log($message, $params, Logger::CRITICAL); + PayPalLoggerService::log($this->printRecursiveData($this->getRequest()->request), $params, Logger::CRITICAL); + + } catch (\Exception $e) { + + $con->rollBack(); + PayPalLoggerService::log($e->getMessage(), $params, Logger::CRITICAL); + PayPalLoggerService::log($this->printRecursiveData($this->getRequest()->request), $params, Logger::CRITICAL); + + } + } + + /** + * @param Request $request + * @return string + */ + protected function getTitle(Request $request) + { + $summary = $request->request->get('summary'); + + $title = ''; + if (null !== $request->get('event_type')) { + $title .= $request->get('event_type') . ' : '; + } + $title .= $summary; + + return $title; + } + + /** + * @param null $paymentId + * @param array $params + * @param null $eventType + * @return array + */ + protected function getParamsForSale($paymentId = null, $params = [], $eventType = null) + { + if (null !== $payPalOrder = PaypalOrderQuery::create()->findOneByPaymentId($paymentId)) { + $params['order_id'] = $payPalOrder->getId(); + $params['customer_id'] = $payPalOrder->getOrder()->getCustomerId(); + + if ($eventType === self::HOOK_PAYMENT_SALE_DENIED) { + $event = new OrderEvent($payPalOrder->getOrder()); + $event->setStatus(OrderStatusQuery::getCancelledStatus()->getId()); + $this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); + } + } + + return $params; + } + + /** + * @param null $planId + * @param array $params + * @return array + */ + protected function getParamsForPlan($planId = null, $params = []) + { + if (null !== $payPalPlan = PaypalPlanQuery::create()->findOneByPlanId($planId)) { + + $params['order_id'] = $payPalPlan->getPaypalOrderId(); + $params['customer_id'] = $payPalPlan->getPaypalOrder()->getOrder()->getCustomerId(); + + } + + return $params; + } + + /** + * @param null $agreementId + * @param array $params + * @return array + */ + protected function getParamsForAgreement($agreementId = null, $params = []) + { + if (null !== $payPalOrder = PaypalOrderQuery::create()->filterByAgreementId($agreementId)->orderById()->findOne()) { + + // Do not duplicate order for the first PayPal payment because order has just been created. + // We will duplicate this order for the next PayPal payment :) + if ($payPalOrder->getPlanifiedActualCycle() > 0) { + $params['order_id'] = $payPalOrder->getId(); + $params['customer_id'] = $payPalOrder->getOrder()->getCustomerId(); + + /** @var PayPalAgreementService $payPalAgreementService */ + $payPalAgreementService = $this->container->get(PayPal::PAYPAL_AGREEMENT_SERVICE_ID); + $newOrder = $payPalAgreementService->duplicateOrder($payPalOrder->getOrder()); + + Translator::getInstance()->trans( + 'New recursive invoice from order %id', + ['%id' => $payPalOrder->getId()], + PayPal::DOMAIN_NAME + ); + + PayPalLoggerService::log( + '

    New recursive invoice from order ' . $payPalOrder->getId() . '

    ', + [ + 'order_id' => $newOrder->getId(), + 'customer_id' => $payPalOrder->getOrder()->getCustomerId() + ], + Logger::INFO + ); + } + + $payPalOrder->setPlanifiedActualCycle($payPalOrder->getPlanifiedActualCycle() + 1); + $payPalOrderEvent = new PayPalOrderEvent($payPalOrder); + $this->getDispatcher()->dispatch(PayPalEvents::PAYPAL_ORDER_UPDATE, $payPalOrderEvent); + } + + return $params; + } + + /** + * @param array $data + * @param int $deep + * @return string + */ + protected function printRecursiveData($data = [], $deep = 0) + { + $formatedString = ''; + foreach ($data as $key => $value) { + + for ($i = 0; $i <= $deep; $i++) { + $formatedString .= '    '; + } + + if (is_array($value)) { + $formatedString .= '' . $key . ' : 
    ' . $this->printRecursiveData($value, $deep + 1); + } else { + $formatedString .= '' . $key . ' : ' . $value . '
    '; + } + + } + + return $formatedString; + } +} diff --git a/local/modules/PayPal/Event/PayPalCartEvent.php b/local/modules/PayPal/Event/PayPalCartEvent.php new file mode 100644 index 00000000..432fbbaa --- /dev/null +++ b/local/modules/PayPal/Event/PayPalCartEvent.php @@ -0,0 +1,66 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + +use PayPal\Model\PaypalCart; +use Thelia\Core\Event\ActionEvent; + +/** + * Class PayPalCartEvent + * @package PayPal\Event + */ +class PayPalCartEvent extends ActionEvent +{ + /** @var PaypalCart */ + protected $payPalCart; + + /** + * PayPalCartEvent constructor. + * @param PaypalCart $payPalCart + */ + public function __construct(PaypalCart $payPalCart) + { + $this->payPalCart = $payPalCart; + } + + /** + * @return PaypalCart + */ + public function getPayPalCart() + { + return $this->payPalCart; + } + + /** + * @param PaypalCart $payPalCart + * + * @return $this + */ + public function setPayPalCart($payPalCart) + { + $this->payPalCart = $payPalCart; + + return $this; + } +} diff --git a/local/modules/PayPal/Event/PayPalCustomerEvent.php b/local/modules/PayPal/Event/PayPalCustomerEvent.php new file mode 100644 index 00000000..419afe64 --- /dev/null +++ b/local/modules/PayPal/Event/PayPalCustomerEvent.php @@ -0,0 +1,66 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + +use PayPal\Model\PaypalCustomer; +use Thelia\Core\Event\ActionEvent; + +/** + * Class PayPalCustomerEvent + * @package PayPal\Event + */ +class PayPalCustomerEvent extends ActionEvent +{ + /** @var PaypalCustomer */ + protected $payPalCustomer; + + /** + * PayPalCustomerEvent constructor. + * @param PaypalCustomer $payPalCustomer + */ + public function __construct(PaypalCustomer $payPalCustomer) + { + $this->payPalCustomer = $payPalCustomer; + } + + /** + * @return PaypalCustomer + */ + public function getPayPalCustomer() + { + return $this->payPalCustomer; + } + + /** + * @param PaypalCustomer $payPalCustomer + * + * @return $this + */ + public function setPayPalCustomer($payPalCustomer) + { + $this->payPalCustomer = $payPalCustomer; + + return $this; + } +} diff --git a/local/modules/PayPal/Event/PayPalEvents.php b/local/modules/PayPal/Event/PayPalEvents.php new file mode 100644 index 00000000..16a5e5a5 --- /dev/null +++ b/local/modules/PayPal/Event/PayPalEvents.php @@ -0,0 +1,57 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + + +/** + * Class PayPalEvents + * @package PayPal\Event + */ +class PayPalEvents +{ + const PAYPAL_ORDER_CREATE = 'action.paypal.order.create'; + const PAYPAL_ORDER_UPDATE = 'action.paypal.order.update'; + const PAYPAL_ORDER_DELETE = 'action.paypal.order.delete'; + const PAYPAL_RECURSIVE_PAYMENT_CREATE = 'action.paypal.recursive.payment.create'; + + const PAYPAL_AGREEMENT_CREATE = 'action.paypal.agreement.create'; + const PAYPAL_AGREEMENT_UPDATE = 'action.paypal.agreement.update'; + const PAYPAL_AGREEMENT_DELETE = 'action.paypal.agreement.delete'; + + const PAYPAL_PLAN_CREATE = 'action.paypal.plan.create'; + const PAYPAL_PLAN_UPDATE = 'action.paypal.plan.update'; + const PAYPAL_PLAN_DELETE = 'action.paypal.plan.delete'; + + const PAYPAL_CUSTOMER_CREATE = 'action.paypal.customer.create'; + const PAYPAL_CUSTOMER_UPDATE = 'action.paypal.customer.update'; + const PAYPAL_CUSTOMER_DELETE = 'action.paypal.customer.delete'; + + const PAYPAL_CART_CREATE = 'action.paypal.cart.create'; + const PAYPAL_CART_UPDATE = 'action.paypal.cart.update'; + const PAYPAL_CART_DELETE = 'action.paypal.cart.delete'; + + const PAYPAL_PLANIFIED_PAYMENT_CREATE = 'action.paypal.planified.payment.create'; + const PAYPAL_PLANIFIED_PAYMENT_UPDATE = 'action.paypal.planified.payment.update'; + const PAYPAL_PLANIFIED_PAYMENT_DELETE = 'action.paypal.planified.payment.delete'; +} diff --git a/local/modules/PayPal/Event/PayPalOrderEvent.php b/local/modules/PayPal/Event/PayPalOrderEvent.php new file mode 100644 index 00000000..2193bb30 --- /dev/null +++ b/local/modules/PayPal/Event/PayPalOrderEvent.php @@ -0,0 +1,66 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + +use PayPal\Model\PaypalOrder; +use Thelia\Core\Event\ActionEvent; + +/** + * Class PayPalOrderEvent + * @package PayPal\Event + */ +class PayPalOrderEvent extends ActionEvent +{ + /** @var PaypalOrder */ + protected $payPalOrder; + + /** + * PayPalOrderEvent constructor. + * @param PaypalOrder $payPalOrder + */ + public function __construct(PaypalOrder $payPalOrder) + { + $this->payPalOrder = $payPalOrder; + } + + /** + * @return PaypalOrder + */ + public function getPayPalOrder() + { + return $this->payPalOrder; + } + + /** + * @param PaypalOrder $payPalOrder + * + * @return $this + */ + public function setPayPalOrder($payPalOrder) + { + $this->payPalOrder = $payPalOrder; + + return $this; + } +} diff --git a/local/modules/PayPal/Event/PayPalPlanEvent.php b/local/modules/PayPal/Event/PayPalPlanEvent.php new file mode 100644 index 00000000..b1ff2d4e --- /dev/null +++ b/local/modules/PayPal/Event/PayPalPlanEvent.php @@ -0,0 +1,66 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + +use PayPal\Model\PaypalPlan; +use Thelia\Core\Event\ActionEvent; + +/** + * Class PayPalPlanEvent + * @package PayPal\Event + */ +class PayPalPlanEvent extends ActionEvent +{ + /** @var PaypalPlan */ + protected $payPalPlan; + + /** + * PayPalPlanEvent constructor. + * @param PaypalPlan $payPalPlan + */ + public function __construct(PaypalPlan $payPalPlan) + { + $this->payPalPlan = $payPalPlan; + } + + /** + * @return PaypalPlan + */ + public function getPayPalPlan() + { + return $this->payPalPlan; + } + + /** + * @param PaypalPlan $payPalPlan + * + * @return $this + */ + public function setPayPalPlan($payPalPlan) + { + $this->payPalPlan = $payPalPlan; + + return $this; + } +} diff --git a/local/modules/PayPal/Event/PayPalPlanifiedPaymentEvent.php b/local/modules/PayPal/Event/PayPalPlanifiedPaymentEvent.php new file mode 100644 index 00000000..2e7988a1 --- /dev/null +++ b/local/modules/PayPal/Event/PayPalPlanifiedPaymentEvent.php @@ -0,0 +1,66 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Event; + +use PayPal\Model\PaypalPlanifiedPayment; +use Thelia\Core\Event\ActionEvent; + +/** + * Class PayPalPlanifiedPaymentEvent + * @package PayPal\Event + */ +class PayPalPlanifiedPaymentEvent extends ActionEvent +{ + /** @var PaypalPlanifiedPayment */ + protected $payPalPlanifiedPayment; + + /** + * PayPalPlanifiedPaymentEvent constructor. + * @param PaypalPlanifiedPayment $payPalPlanifiedPayment + */ + public function __construct(PaypalPlanifiedPayment $payPalPlanifiedPayment) + { + $this->payPalPlanifiedPayment = $payPalPlanifiedPayment; + } + + /** + * @return PaypalPlanifiedPayment + */ + public function getPayPalPlanifiedPayment() + { + return $this->payPalPlanifiedPayment; + } + + /** + * @param PaypalPlanifiedPayment $payPalPlanifiedPayment + * + * @return $this + */ + public function setPayPalPlanifiedPayment($payPalPlanifiedPayment) + { + $this->payPalPlanifiedPayment = $payPalPlanifiedPayment; + + return $this; + } +} diff --git a/local/modules/PayPal/EventListeners/Form/TheliaOrderPaymentForm.php b/local/modules/PayPal/EventListeners/Form/TheliaOrderPaymentForm.php new file mode 100644 index 00000000..a273263a --- /dev/null +++ b/local/modules/PayPal/EventListeners/Form/TheliaOrderPaymentForm.php @@ -0,0 +1,172 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners\Form; + +use PayPal\Form\PayPalFormFields; +use PayPal\Form\Type\PayPalCreditCardType; +use PayPal\Model\PaypalPlanifiedPayment; +use PayPal\Model\PaypalPlanifiedPaymentQuery; +use PayPal\PayPal; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\RequestStack; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Core\Event\TheliaFormEvent; +use Thelia\Core\HttpFoundation\Session\Session; +use Thelia\Core\Translation\Translator; +use Thelia\Model\Cart; +use Thelia\Model\Country; +use Thelia\Model\Order; + +/** + * Class TheliaOrderPaymentForm + * @package PayPal\EventListeners\Form + */ +class TheliaOrderPaymentForm implements EventSubscriberInterface +{ + /** @var RequestStack */ + protected $requestStack; + + /** @var EventDispatcherInterface */ + protected $dispatcher; + + /** + * TheliaOrderPaymentForm constructor. + * @param RequestStack $requestStack + */ + public function __construct(RequestStack $requestStack, EventDispatcherInterface $dispatcher) + { + $this->requestStack = $requestStack; + $this->dispatcher = $dispatcher; + } + + /** + * @param TheliaFormEvent $event + */ + public function afterBuildTheliaOrderPayment(TheliaFormEvent $event) + { + $event->getForm()->getFormBuilder() + ->add( + PayPalFormFields::FIELD_PAYPAL_METHOD, + 'choice', + [ + 'choices' => [ + PayPal::PAYPAL_METHOD_PAYPAL => PayPal::PAYPAL_METHOD_PAYPAL, + PayPal::PAYPAL_METHOD_EXPRESS_CHECKOUT => PayPal::PAYPAL_METHOD_EXPRESS_CHECKOUT, + PayPal::PAYPAL_METHOD_CREDIT_CARD => PayPal::PAYPAL_METHOD_CREDIT_CARD, + PayPal::PAYPAL_METHOD_PLANIFIED_PAYMENT => PayPal::PAYPAL_METHOD_PLANIFIED_PAYMENT + ], + 'label' => Translator::getInstance()->trans('PayPal method', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PAYPAL_METHOD], + 'required' => false, + ] + ) + ->add( + PayPalCreditCardType::TYPE_NAME, + new PayPalCreditCardType(), + [ + 'label_attr' => [ + 'for' => PayPalCreditCardType::TYPE_NAME + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PAYPAL_PLANIFIED_PAYMENT, + 'choice', + [ + 'choices' => $this->getAllowedPlanifiedPayments(), + 'choices_as_values' => true, + 'choice_label' => function ($value, $key, $index) { + return $value->getTitle(); + }, + 'choice_value' => function ($value) { + if ($value !== null) { + return $value->getId(); + } + + return null; + }, + "required" => false, + 'empty_data' => null, + 'label' => Translator::getInstance()->trans('Frequency', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PAYPAL_PLANIFIED_PAYMENT], + ] + ) + ; + } + + /** + * @return array|mixed|\Propel\Runtime\Collection\ObjectCollection + */ + protected function getAllowedPlanifiedPayments() + { + /** @var Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + + /** @var \Thelia\Model\Lang $lang */ + $lang = $session->getLang(); + + /** @var Cart $cart */ + $cart = $session->getSessionCart($this->dispatcher); + + /** @var Order $order */ + $order = $session->get('thelia.order'); + + $country = Country::getDefaultCountry(); + + $planifiedPayments = (new PaypalPlanifiedPaymentQuery())->joinWithI18n($lang->getLocale())->find(); + if (null !== $cart && null !== $order && null !== $country) { + $totalAmount = $cart->getTaxedAmount($country) + (float)$order->getPostage(); + + $restrictedPlanifiedAmounts = []; + /** @var PaypalPlanifiedPayment $planifiedPayment */ + foreach ($planifiedPayments as $planifiedPayment) { + + if ($planifiedPayment->getMinAmount() > 0 && $planifiedPayment->getMinAmount() > $totalAmount) { + continue; + } + + if ($planifiedPayment->getMaxAmount() > 0 && $planifiedPayment->getMaxAmount() < $totalAmount) { + continue; + } + + $restrictedPlanifiedAmounts[] = $planifiedPayment; + } + + $planifiedPayments = $restrictedPlanifiedAmounts; + } + + return $planifiedPayments; + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + TheliaEvents::FORM_AFTER_BUILD . '.thelia_order_payment' => ['afterBuildTheliaOrderPayment', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/OrderListener.php b/local/modules/PayPal/EventListeners/OrderListener.php new file mode 100644 index 00000000..6a968671 --- /dev/null +++ b/local/modules/PayPal/EventListeners/OrderListener.php @@ -0,0 +1,273 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalCartEvent; +use PayPal\Event\PayPalEvents; +use PayPal\Form\PayPalFormFields; +use PayPal\Form\Type\PayPalCreditCardType; +use PayPal\PayPal; +use PayPal\Service\PayPalAgreementService; +use PayPal\Service\PayPalPaymentService; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\RequestStack; +use Thelia\Core\Event\Order\OrderEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Mailer\MailerFactory; + +/** + * Class OrderListener + * @package PayPal\EventListeners + */ +class OrderListener implements EventSubscriberInterface +{ + /** @var MailerFactory */ + protected $mailer; + + /** @var EventDispatcherInterface */ + protected $dispatcher; + + /** @var RequestStack */ + protected $requestStack; + + /** @var PayPalPaymentService */ + protected $payPalPaymentService; + + /** @var PayPalAgreementService */ + protected $payPalAgreementService; + + /** + * @param MailerFactory $mailer + * @param EventDispatcherInterface $dispatcher + * @param RequestStack $requestStack + * @param PayPalPaymentService $payPalPaymentService + * @param PayPalAgreementService $payPalAgreementService + */ + public function __construct(MailerFactory $mailer, EventDispatcherInterface $dispatcher, RequestStack $requestStack, PayPalPaymentService $payPalPaymentService, PayPalAgreementService $payPalAgreementService) + { + $this->dispatcher = $dispatcher; + $this->mailer = $mailer; + $this->requestStack = $requestStack; + $this->payPalPaymentService = $payPalPaymentService; + $this->payPalAgreementService = $payPalAgreementService; + } + + /** + * @param OrderEvent $event + */ + public function CancelPayPalTransaction(OrderEvent $event) + { + // @TODO : Inform PayPal that this payment is canceled ? + } + + /** + * @param OrderEvent $event + * + * @throws \Exception if the message cannot be loaded. + */ + public function sendConfirmationEmail(OrderEvent $event) + { + if (PayPal::getConfigValue('send_confirmation_message_only_if_paid')) { + // We send the order confirmation email only if the order is paid + $order = $event->getOrder(); + + if (! $order->isPaid() && $order->getPaymentModuleId() == Paypal::getModuleId()) { + $event->stopPropagation(); + } + } + } + + /** + * Checks if order payment module is paypal and if order new status is paid, send an email to the customer. + * + * @param OrderEvent $event + */ + public function updateStatus(OrderEvent $event) + { + $order = $event->getOrder(); + + if ($order->isPaid() && $order->getPaymentModuleId() === Paypal::getModuleId()) { + if (Paypal::getConfigValue('send_payment_confirmation_message')) { + $this->mailer->sendEmailToCustomer( + PayPal::CONFIRMATION_MESSAGE_NAME, + $order->getCustomer(), + [ + 'order_id' => $order->getId(), + 'order_ref' => $order->getRef() + ] + ); + } + + // Send confirmation email if required. + if (Paypal::getConfigValue('send_confirmation_message_only_if_paid')) { + $this->dispatcher->dispatch(TheliaEvents::ORDER_SEND_CONFIRMATION_EMAIL, $event); + } + } + } + + /** + * @param OrderEvent $event + * @throws \Exception + */ + public function checkPayPalMethod(OrderEvent $event) + { + //First be sure that there is no OLD CREDIT card saved in paypal_cart because of fatal error + $payPalCartEvent = new PayPalCartEvent($this->payPalPaymentService->getCurrentPayPalCart()); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_CART_DELETE, $payPalCartEvent); + + $postedData = $this->requestStack->getCurrentRequest()->request->get('thelia_order_payment'); + + if (isset($postedData[PayPalFormFields::FIELD_PAYMENT_MODULE]) && PayPal::getModuleId() === $event->getOrder()->getPaymentModuleId()) { + $this->usePayPalMethod($postedData); + } + } + + /** + * @param OrderEvent $event + */ + public function recursivePayment(OrderEvent $event) + { + $this->payPalAgreementService->duplicateOrder($event->getOrder()); + + if (PayPal::getConfigValue('send_recursive_message')) { + $this->mailer->sendEmailToCustomer( + PayPal::RECURSIVE_MESSAGE_NAME, + $event->getOrder()->getCustomer(), + [ + 'order_id' => $event->getOrder()->getId(), + 'order_ref' => $event->getOrder()->getRef() + ] + ); + } + } + + /** + * @param array $postedData + */ + protected function usePayPalMethod($postedData = []) + { + if (isset($postedData[PayPalFormFields::FIELD_PAYPAL_METHOD])) { + $payPalMethod = $postedData[PayPalFormFields::FIELD_PAYPAL_METHOD]; + + switch ($payPalMethod) { + case PayPal::PAYPAL_METHOD_CREDIT_CARD: + $this->usePayPalCreditCardMethod($postedData); + break; + + case PayPal::PAYPAL_METHOD_PLANIFIED_PAYMENT: + $this->usePayPalPlanifiedPaymentMethod($postedData); + break; + } + } + } + + /** + * @param array $postedData + * @throws \Exception + */ + protected function usePayPalCreditCardMethod($postedData = []) + { + if ($this->isValidPaidByPayPalCreditCard($postedData)) { + //save credit card in cart because we will need it in pay() method for payment module + + $creditCardId = $this->payPalPaymentService->getPayPalCreditCardId( + $postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_TYPE], + $postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_NUMBER], + $postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_MONTH], + $postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_YEAR], + $postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_CVV] + ); + + $payPalCart = $this->payPalPaymentService->getCurrentPayPalCart(); + $payPalCart->setCreditCardId($creditCardId); + $payPalCartEvent = new PayPalCartEvent($payPalCart); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_CART_UPDATE, $payPalCartEvent); + } + } + + /** + * @param array $postedData + * @return bool + */ + protected function isValidPaidByPayPalCreditCard($postedData = []) + { + $isValid = false; + + if (isset($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_TYPE]) && $this->isNotBlank($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_TYPE]) && + isset($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_NUMBER]) && $this->isNotBlank($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_NUMBER]) && + isset($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_MONTH]) && $this->isNotBlank($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_MONTH]) && + isset($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_YEAR]) && $this->isNotBlank($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_EXPIRE_YEAR]) && + isset($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_CVV]) && $this->isNotBlank($postedData[PayPalCreditCardType::TYPE_NAME][PayPalFormFields::FIELD_CARD_CVV])) { + $isValid = true; + } + + return $isValid; + } + + /** + * @param array $postedData + */ + protected function usePayPalPlanifiedPaymentMethod($postedData = []) + { + if (isset($postedData[PayPalFormFields::FIELD_PAYPAL_PLANIFIED_PAYMENT]) && + $this->isNotBlank($postedData[PayPalFormFields::FIELD_PAYPAL_PLANIFIED_PAYMENT])) { + + $payPalCart = $this->payPalPaymentService->getCurrentPayPalCart(); + $payPalCart->setPlanifiedPaymentId($postedData[PayPalFormFields::FIELD_PAYPAL_PLANIFIED_PAYMENT]); + $payPalCartEvent = new PayPalCartEvent($payPalCart); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_CART_UPDATE, $payPalCartEvent); + + } + } + + /** + * @param $value + * @return bool + */ + protected function isNotBlank($value) + { + if (false === $value || (empty($value) && '0' != $value)) { + return false; + } + + return true; + } + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + TheliaEvents::ORDER_UPDATE_STATUS => [ + ['CancelPayPalTransaction', 128], + ['updateStatus', 128], + ], + TheliaEvents::ORDER_SEND_CONFIRMATION_EMAIL => ['sendConfirmationEmail', 129], + TheliaEvents::ORDER_SEND_NOTIFICATION_EMAIL => ['sendConfirmationEmail', 129], + TheliaEvents::ORDER_SET_PAYMENT_MODULE => ['checkPayPalMethod', 120], + PayPalEvents::PAYPAL_RECURSIVE_PAYMENT_CREATE => ['recursivePayment', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/PayPalCartListener.php b/local/modules/PayPal/EventListeners/PayPalCartListener.php new file mode 100644 index 00000000..69a04300 --- /dev/null +++ b/local/modules/PayPal/EventListeners/PayPalCartListener.php @@ -0,0 +1,67 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalCartEvent; +use PayPal\Event\PayPalEvents; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Class PayPalCartListener + * @package PayPal\EventListeners + */ +class PayPalCartListener implements EventSubscriberInterface +{ + /** + * @param PayPalCartEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function createOrUpdate(PayPalCartEvent $event) + { + $event->getPayPalCart()->save(); + } + + /** + * @param PayPalCartEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function delete(PayPalCartEvent $event) + { + $event->getPayPalCart()->delete(); + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + PayPalEvents::PAYPAL_CART_CREATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_CART_UPDATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_CART_DELETE => ['delete', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/PayPalCustomerListener.php b/local/modules/PayPal/EventListeners/PayPalCustomerListener.php new file mode 100644 index 00000000..03026ceb --- /dev/null +++ b/local/modules/PayPal/EventListeners/PayPalCustomerListener.php @@ -0,0 +1,86 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalCustomerEvent; +use PayPal\Event\PayPalEvents; +use Symfony\Component\EventDispatcher\EventDispatcher; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpFoundation\RequestStack; + +/** + * Class PayPalCustomerListener + * @package PayPal\EventListeners + */ +class PayPalCustomerListener implements EventSubscriberInterface +{ + /** @var RequestStack */ + protected $requestStack; + + /** @var EventDispatcher */ + protected $dispatcher; + + /** + * PayPalCustomerListener constructor. + * @param RequestStack $requestStack + * @param EventDispatcher $dispatcher + */ + public function __construct(RequestStack $requestStack, EventDispatcher $dispatcher) + { + $this->requestStack = $requestStack; + $this->dispatcher = $dispatcher; + } + + /** + * @param PayPalCustomerEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function createOrUpdate(PayPalCustomerEvent $event) + { + $event->getPayPalCustomer()->save(); + } + + /** + * @param PayPalCustomerEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function delete(PayPalCustomerEvent $event) + { + $event->getPayPalCustomer()->delete(); + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + PayPalEvents::PAYPAL_CUSTOMER_CREATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_CUSTOMER_UPDATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_CUSTOMER_DELETE => ['delete', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/PayPalOrderListener.php b/local/modules/PayPal/EventListeners/PayPalOrderListener.php new file mode 100644 index 00000000..b8b021f6 --- /dev/null +++ b/local/modules/PayPal/EventListeners/PayPalOrderListener.php @@ -0,0 +1,68 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalOrderEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + + +/** + * Class PayPalOrderListener + * @package PayPal\EventListeners + */ +class PayPalOrderListener implements EventSubscriberInterface +{ + /** + * @param PayPalOrderEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function createOrUpdate(PayPalOrderEvent $event) + { + $event->getPayPalOrder()->save(); + } + + /** + * @param PayPalOrderEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function delete(PayPalOrderEvent $event) + { + $event->getPayPalOrder()->delete(); + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + PayPalEvents::PAYPAL_ORDER_CREATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_ORDER_UPDATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_ORDER_DELETE => ['delete', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/PayPalPlanListener.php b/local/modules/PayPal/EventListeners/PayPalPlanListener.php new file mode 100644 index 00000000..be9f0936 --- /dev/null +++ b/local/modules/PayPal/EventListeners/PayPalPlanListener.php @@ -0,0 +1,63 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalPlanEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class PayPalPlanListener implements EventSubscriberInterface +{ + /** + * @param PayPalPlanEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function createOrUpdate(PayPalPlanEvent $event) + { + $event->getPayPalPlan()->save(); + } + + /** + * @param PayPalPlanEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function delete(PayPalPlanEvent $event) + { + $event->getPayPalPlan()->delete(); + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + PayPalEvents::PAYPAL_PLAN_CREATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_PLAN_UPDATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_PLAN_DELETE => ['delete', 128] + ]; + } +} diff --git a/local/modules/PayPal/EventListeners/PayPalPlanifiedPaymentListener.php b/local/modules/PayPal/EventListeners/PayPalPlanifiedPaymentListener.php new file mode 100644 index 00000000..9118a5c3 --- /dev/null +++ b/local/modules/PayPal/EventListeners/PayPalPlanifiedPaymentListener.php @@ -0,0 +1,63 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\EventListeners; + +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalPlanifiedPaymentEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +class PayPalPlanifiedPaymentListener implements EventSubscriberInterface +{ + /** + * @param PayPalPlanifiedPaymentEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function createOrUpdate(PayPalPlanifiedPaymentEvent $event) + { + $event->getPayPalPlanifiedPayment()->save(); + } + + /** + * @param PayPalPlanifiedPaymentEvent $event + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function delete(PayPalPlanifiedPaymentEvent $event) + { + $event->getPayPalPlanifiedPayment()->delete(); + } + + /** + * @return array The event names to listen to + */ + public static function getSubscribedEvents() + { + return [ + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_CREATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_UPDATE => ['createOrUpdate', 128], + PayPalEvents::PAYPAL_PLANIFIED_PAYMENT_DELETE => ['delete', 128] + ]; + } +} diff --git a/local/modules/PayPal/Form/ConfigurationForm.php b/local/modules/PayPal/Form/ConfigurationForm.php new file mode 100755 index 00000000..4b175376 --- /dev/null +++ b/local/modules/PayPal/Form/ConfigurationForm.php @@ -0,0 +1,330 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Form; + +use PayPal\PayPal; +use Symfony\Component\Validator\Constraints\GreaterThanOrEqual; +use Symfony\Component\Validator\Constraints\NotBlank; +use Thelia\Form\BaseForm; + +/** + * Class ConfigurePaypal + * @package Paypal\Form + * @author Thelia + */ +class ConfigurationForm extends BaseForm +{ + const FORM_NAME = 'paypal_form_configure'; + + protected function buildForm() + { + $this->formBuilder + ->add( + 'login', + 'text', + [ + 'constraints' => [ new NotBlank() ], + 'label' => $this->translator->trans('login', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your Paypal login', [], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'password', + 'text', + [ + 'constraints' => [ new NotBlank() ], + 'label' => $this->translator->trans('password', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your Paypal password', [], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'merchant_id', + 'text', + [ + 'label' => $this->translator->trans('Merchant ID', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('The Paypal identity merchant account', ['%url' => 'https://www.paypal.com/businessprofile/settings/'], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'sandbox', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Activate sandbox mode', [], PayPal::DOMAIN_NAME), + ] + ) + ->add( + 'sandbox_login', + 'text', + [ + 'required' => false, + 'label' => $this->translator->trans('login', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your Paypal sandbox login', [], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'sandbox_password', + 'text', + [ + 'required' => false, + 'label' => $this->translator->trans('password', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('Your Paypal sandbox password', [], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'sandbox_merchant_id', + 'text', + [ + 'required' => false, + 'label' => $this->translator->trans('Merchant ID', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans('The Paypal identity merchant account', ['%url' => 'https://www.paypal.com/businessprofile/settings/'], PayPal::DOMAIN_NAME) + ] + ] + ) + ->add( + 'allowed_ip_list', + 'textarea', + [ + 'required' => false, + 'label' => $this->translator->trans('Allowed IPs in test mode', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'List of IP addresses allowed to use this payment on the front-office when in test mode (your current IP is %ip). One address per line', + [ '%ip' => $this->getRequest()->getClientIp() ], + PayPal::DOMAIN_NAME + ) + ], + 'attr' => [ + 'rows' => 3 + ] + ] + ) + ->add( + 'minimum_amount', + 'text', + [ + 'constraints' => [ + new NotBlank(), + new GreaterThanOrEqual(array('value' => 0)) + ], + 'required' => false, + 'label' => $this->translator->trans('Minimum order total', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'Minimum order total in the default currency for which this payment method is available. Enter 0 for no minimum', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'maximum_amount', + 'text', + [ + 'constraints' => [ + new NotBlank(), + new GreaterThanOrEqual(array('value' => 0)) + ], + 'required' => false, + 'label' => $this->translator->trans('Maximum order total', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'Maximum order total in the default currency for which this payment method is available. Enter 0 for no maximum', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'cart_item_count', + 'text', + [ + 'constraints' => [ + new NotBlank(), + new GreaterThanOrEqual(array('value' => 0)) + ], + 'required' => false, + 'label' => $this->translator->trans('Maximum items in cart', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'Maximum number of items in the customer cart for which this payment method is available.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'method_paypal', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Activate payment with PayPal account', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, the order can be paid by PayPal account.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'method_paypal_with_in_context', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Use InContext mode for classic PayPal payment', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, a PayPal popup will be used to execute the payment.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'method_express_checkout', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Activate Express Checkout payment with PayPal', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, the order can be paid directly from cart.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'method_credit_card', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Activate payment with credit card', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, the order can be paid by credit card.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'method_planified_payment', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Activate payment with planified payment', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, the order can be paid by planified payement.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'send_confirmation_message_only_if_paid', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Send order confirmation on payment success', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, the order confirmation message is sent to the customer only when the payment is successful. The order notification is always sent to the shop administrator', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'send_payment_confirmation_message', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Send a payment confirmation e-mail', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, a payment confirmation e-mail is sent to the customer.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ->add( + 'send_recursive_message', + 'checkbox', + [ + 'value' => 1, + 'required' => false, + 'label' => $this->translator->trans('Send a recursive payment confirmation e-mail', [], PayPal::DOMAIN_NAME), + 'label_attr' => [ + 'help' => $this->translator->trans( + 'If checked, a payment confirmation e-mail is sent to the customer after each PayPal transaction.', + [], + PayPal::DOMAIN_NAME + ) + ] + ] + ) + ; + } + + /** + * @return string the name of your form. This name must be unique + */ + public function getName() + { + return self::FORM_NAME; + } +} diff --git a/local/modules/PayPal/Form/PayPalFormFields.php b/local/modules/PayPal/Form/PayPalFormFields.php new file mode 100644 index 00000000..6af046e9 --- /dev/null +++ b/local/modules/PayPal/Form/PayPalFormFields.php @@ -0,0 +1,56 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Form; + +/** + * Class PayPalFormFields + * @package PayPal\Form + */ +class PayPalFormFields +{ + const FIELD_PAYMENT_MODULE = 'payment-module'; + + // \Thelia\Form\OrderPayment + const FIELD_PAYPAL_METHOD = 'paypal_method'; + const FIELD_PAYPAL_PLANIFIED_PAYMENT = 'paypal_planified_payment'; + + // \Form\Type\PayPalCreditCardType + const FIELD_CARD_TYPE = 'card_type'; + const FIELD_CARD_NUMBER = 'card_number'; + const FIELD_CARD_EXPIRE_MONTH = 'card_expire_month'; + const FIELD_CARD_EXPIRE_YEAR = 'card_expire_year'; + const FIELD_CARD_CVV = 'card_cvv'; + + // \Form\PayPalPlanifiedPaymentForm + const FIELD_PP_ID = 'id'; + const FIELD_PP_LOCALE = 'locale'; + const FIELD_PP_TITLE = 'title'; + const FIELD_PP_DESCRIPTION = 'description'; + const FIELD_PP_FREQUENCY = 'frequency'; + const FIELD_PP_FREQUENCY_INTERVAL = 'frequency_interval'; + const FIELD_PP_CYCLE = 'cycle'; + const FIELD_PP_MIN_AMOUNT = 'min_amount'; + const FIELD_PP_MAX_AMOUNT = 'max_amount'; + const FIELD_PP_POSITION = 'position'; +} diff --git a/local/modules/PayPal/Form/PayPalPlanifiedPaymentCreateForm.php b/local/modules/PayPal/Form/PayPalPlanifiedPaymentCreateForm.php new file mode 100644 index 00000000..749293a3 --- /dev/null +++ b/local/modules/PayPal/Form/PayPalPlanifiedPaymentCreateForm.php @@ -0,0 +1,191 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Form; + +use PayPal\PayPal; +use PayPal\Service\PayPalAgreementService; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\Validator\Constraints\GreaterThan; +use Symfony\Component\Validator\Constraints\GreaterThanOrEqual; +use Symfony\Component\Validator\Constraints\NotBlank; +use Thelia\Core\Translation\Translator; +use Thelia\Form\BaseForm; + +class PayPalPlanifiedPaymentCreateForm extends BaseForm +{ + const FORM_NAME = 'paypal_planified_payment_create_form'; + + /** + * @return null + */ + protected function buildForm() + { + /** @var \Thelia\Model\Lang $lang */ + $lang = $this->getRequest()->getSession()->get('thelia.current.lang'); + + $this->formBuilder + ->add( + PayPalFormFields::FIELD_PP_LOCALE, + HiddenType::class, + [ + 'constraints' => [ + new NotBlank() + ], + 'required' => true, + 'data' => $lang->getLocale(), + 'label' => $this->trans('The locale of the planified payment'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_LOCALE] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_TITLE, + TextType::class, + [ + 'constraints' => [ + new NotBlank() + ], + 'required' => true, + 'label' => $this->trans('The title of the planified payment'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_TITLE] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_DESCRIPTION, + TextType::class, + [ + 'required' => false, + 'label' => $this->trans('The description of the planified payment'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_DESCRIPTION] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_FREQUENCY_INTERVAL, + 'integer', + [ + 'label' => $this->trans('Frequency interval'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_FREQUENCY_INTERVAL], + 'required' => true, + 'constraints' => [ + new NotBlank(), + new GreaterThan(['value' => 0]) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_FREQUENCY, + 'choice', + [ + 'choices' => PayPalAgreementService::getAllowedPaymentFrequency(), + 'label' => $this->trans('Frequency'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_FREQUENCY], + 'required' => true, + 'constraints' => [ + new NotBlank() + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_CYCLE, + 'integer', + [ + 'label' => $this->trans('Cycle'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_CYCLE], + 'required' => true, + 'constraints' => [ + new NotBlank(), + new GreaterThan(['value' => 0]) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_MIN_AMOUNT, + 'number', + [ + 'label' => $this->trans('Min amount'), + 'label_attr' => [ + 'for' => PayPalFormFields::FIELD_PP_MIN_AMOUNT, + 'help' => $this->trans("Let value to 0 if you don't want a minimum") + ], + 'required' => false, + 'constraints' => [ + new GreaterThanOrEqual(['value' => 0]) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_MAX_AMOUNT, + 'number', + [ + 'label' => $this->trans('Max amount'), + 'label_attr' => [ + 'for' => PayPalFormFields::FIELD_PP_MAX_AMOUNT, + 'help' => $this->trans("Let value to 0 if you don't want a maximum") + ], + 'required' => false, + 'constraints' => [ + new GreaterThanOrEqual(['value' => 0]) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_PP_POSITION, + 'integer', + [ + 'label' => $this->trans('Position'), + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_POSITION], + 'required' => false + ] + ) + ; + } + + /** + * @return string the name of your form. This name must be unique + */ + public function getName() + { + return self::FORM_NAME; + } + + /** + * Translates the given message. + * + * @param string $id The message id (may also be an object that can be cast to string) + * @param array $parameters An array of parameters for the message + * @param string|null $domain The domain for the message or null to use the default + * + * @throws \InvalidArgumentException If the locale contains invalid characters + * + * @return string The translated string + */ + protected function trans($id, array $parameters = [], $domain = null) + { + return Translator::getInstance()->trans( + $id, + $parameters, + $domain === null ? PayPal::DOMAIN_NAME : $domain + ); + } +} diff --git a/local/modules/PayPal/Form/PayPalPlanifiedPaymentUpdateForm.php b/local/modules/PayPal/Form/PayPalPlanifiedPaymentUpdateForm.php new file mode 100644 index 00000000..7955ba62 --- /dev/null +++ b/local/modules/PayPal/Form/PayPalPlanifiedPaymentUpdateForm.php @@ -0,0 +1,56 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Form; + +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Validator\Constraints\NotBlank; + +class PayPalPlanifiedPaymentUpdateForm extends PayPalPlanifiedPaymentCreateForm +{ + const FORM_NAME = 'paypal_planified_payment_update_form'; + + protected function buildForm() + { + parent::buildForm(); + + $this->formBuilder + ->add( + PayPalFormFields::FIELD_PP_ID, + HiddenType::class, + [ + 'required' => true, + 'label_attr' => ['for' => PayPalFormFields::FIELD_PP_ID], + 'constraints' => [ + new NotBlank() + ] + ] + ) + ; + } + + public function getName() + { + return self::FORM_NAME; + } +} diff --git a/local/modules/PayPal/Form/Type/PayPalCreditCardType.php b/local/modules/PayPal/Form/Type/PayPalCreditCardType.php new file mode 100644 index 00000000..9df16c87 --- /dev/null +++ b/local/modules/PayPal/Form/Type/PayPalCreditCardType.php @@ -0,0 +1,265 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Form\Type; + +use PayPal\Form\PayPalFormFields; +use PayPal\PayPal; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Validator\Constraints\Callback; +use Symfony\Component\Validator\Context\ExecutionContextInterface; +use Thelia\Core\Form\Type\AbstractTheliaType; +use Thelia\Core\Translation\Translator; + + +/** + * Class PayPalCreditCardType + * @package PayPal\Form\Type + */ +class PayPalCreditCardType extends AbstractTheliaType +{ + const TYPE_NAME = 'paypal_credit_card_type'; + + /** + * @param FormBuilderInterface $builder + * @param array $options + */ + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder + ->add( + PayPalFormFields::FIELD_CARD_TYPE, + 'choice', + [ + 'choices' => $this->getTypes(), + 'label' => Translator::getInstance()->trans('Card type', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_CARD_TYPE], + 'required' => false, + 'constraints' => [ + new Callback( + [ + 'methods' => [ + [$this, 'verifyCardType'] + ], + ] + ) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_CARD_NUMBER, + 'text', + [ + 'label' => Translator::getInstance()->trans('Card number', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_CARD_NUMBER], + 'required' => false, + 'constraints' => [ + new Callback( + [ + 'methods' => [ + [$this, 'verifyCardNumber'] + ], + ] + ) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_CARD_EXPIRE_MONTH, + 'choice', + [ + 'choices' => $this->getMonths(), + 'label' => Translator::getInstance()->trans('Expire month', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_CARD_EXPIRE_MONTH], + 'required' => false, + 'constraints' => [ + new Callback( + [ + 'methods' => [ + [$this, 'verifyCardExpireMonth'] + ], + ] + ) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_CARD_EXPIRE_YEAR, + 'choice', + [ + 'choices' => $this->getYears(), + 'label' => Translator::getInstance()->trans('Expire year', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_CARD_EXPIRE_YEAR], + 'required' => false, + 'constraints' => [ + new Callback( + [ + 'methods' => [ + [$this, 'verifyCardExpireYear'] + ], + ] + ) + ] + ] + ) + ->add( + PayPalFormFields::FIELD_CARD_CVV, + 'text', + [ + 'label' => Translator::getInstance()->trans('CVV', [], PayPal::DOMAIN_NAME), + 'label_attr' => ['for' => PayPalFormFields::FIELD_CARD_CVV], + 'required' => false, + 'constraints' => [ + new Callback( + [ + 'methods' => [ + [$this, 'verifyCardCVV'] + ], + ] + ) + ] + ] + ) + ; + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + public function verifyCardType($value, ExecutionContextInterface $context) + { + $this->checkNotBlank($value, $context); + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + public function verifyCardNumber($value, ExecutionContextInterface $context) + { + $this->checkNotBlank($value, $context); + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + public function verifyCardExpireMonth($value, ExecutionContextInterface $context) + { + $this->checkNotBlank($value, $context); + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + public function verifyCardExpireYear($value, ExecutionContextInterface $context) + { + $this->checkNotBlank($value, $context); + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + public function verifyCardCVV($value, ExecutionContextInterface $context) + { + $this->checkNotBlank($value, $context); + } + + /** + * @param $value + * @param ExecutionContextInterface $context + */ + protected function checkNotBlank($value, ExecutionContextInterface $context) + { + $data = $context->getRoot()->getData(); + if (isset($data[PayPalFormFields::FIELD_PAYMENT_MODULE]) && PayPal::getModuleId() === $data[PayPalFormFields::FIELD_PAYMENT_MODULE]) { + if (isset($data[PayPalFormFields::FIELD_PAYPAL_METHOD]) && PayPal::PAYPAL_METHOD_CREDIT_CARD === $data[PayPalFormFields::FIELD_PAYPAL_METHOD]) { + if (false === $value || (empty($value) && '0' != $value)) { + $context->addViolation( + Translator::getInstance()->trans('This value should not be blank', [], PayPal::DOMAIN_NAME) + ); + } + } + } + } + + /** + * @inheritDoc + */ + public function getName() + { + return self::TYPE_NAME; + } + + /** + * @return array + */ + protected function getTypes() + { + return [ + PayPal::CREDIT_CARD_TYPE_VISA => 'Visa', + PayPal::CREDIT_CARD_TYPE_MASTERCARD => 'MasterCard', + PayPal::CREDIT_CARD_TYPE_DISCOVER => 'Discover', + PayPal::CREDIT_CARD_TYPE_AMEX => 'Amex' + ]; + } + + /** + * @return array + */ + protected function getMonths() + { + return [ + 1 => '01', + 2 => '02', + 3 => '03', + 4 => '04', + 5 => '05', + 6 => '06', + 7 => '07', + 8 => '08', + 9 => '09', + 10 => '10', + 11 => '11', + 12 => '12' + ]; + } + + /** + * @return array + */ + protected function getYears() + { + $actualYear = date("Y"); + + $years = []; + $years[(int)$actualYear] = $actualYear; + for ($i = 1; $i <= 10; $i++) { + $years[(int)($actualYear + $i)] = $actualYear + $i; + } + return $years; + } +} diff --git a/local/modules/PayPal/Hook/BackHookManager.php b/local/modules/PayPal/Hook/BackHookManager.php new file mode 100644 index 00000000..4c477e7d --- /dev/null +++ b/local/modules/PayPal/Hook/BackHookManager.php @@ -0,0 +1,95 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Hook; + +use PayPal\Model\PaypalOrderQuery; +use PayPal\PayPal; +use PayPal\Service\Base\PayPalBaseService; +use Thelia\Core\Event\Hook\HookRenderEvent; +use Thelia\Core\Hook\BaseHook; +use Thelia\Model\ModuleConfig; +use Thelia\Model\ModuleConfigQuery; + + +/** + * Class BackHookManager + * @package PayPal\Hook + */ +class BackHookManager extends BaseHook +{ + /** + * @param HookRenderEvent $event + */ + public function onModuleConfigure(HookRenderEvent $event) + { + $vars = []; + if (null !== $moduleConfigs = ModuleConfigQuery::create()->findByModuleId(PayPal::getModuleId())) { + /** @var ModuleConfig $moduleConfig */ + foreach ($moduleConfigs as $moduleConfig) { + $vars[ $moduleConfig->getName() ] = $moduleConfig->getValue(); + } + } + + $vars['paypal_appid'] = PayPalBaseService::getLogin(); + $vars['paypal_authend'] = PayPalBaseService::getMode(); + + $event->add( + $this->render('paypal/module-configuration.html', $vars) + ); + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderEditPaymentModuleBottom(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + + if (null !== $payPalOrder = PaypalOrderQuery::create()->findOneById($event->getArgument('order_id'))) { + $event->add( + $this->render( + 'paypal/payment-information.html', + $templateData + ) + ); + } + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderEditJs(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + + if (null !== $payPalOrder = PaypalOrderQuery::create()->findOneById($event->getArgument('order_id'))) { + $event->add( + $this->render( + 'paypal/order-edit-js.html', + $templateData + ) + ); + } + } +} diff --git a/local/modules/PayPal/Hook/FrontHookManager.php b/local/modules/PayPal/Hook/FrontHookManager.php new file mode 100644 index 00000000..421a41b1 --- /dev/null +++ b/local/modules/PayPal/Hook/FrontHookManager.php @@ -0,0 +1,208 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Hook; + +use PayPal\Model\PaypalCartQuery; +use PayPal\PayPal; +use PayPal\Service\Base\PayPalBaseService; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\HttpFoundation\RequestStack; +use Thelia\Core\Event\Hook\HookRenderEvent; +use Thelia\Core\Hook\BaseHook; +use Thelia\Core\HttpFoundation\Session\Session; + + +/** + * Class FrontHookManager + * @package PayPal\Hook + */ +class FrontHookManager extends BaseHook +{ + /** @var RequestStack */ + protected $requestStack; + + /** @var ContainerInterface */ + protected $container; + + /** + * FrontHookManager constructor. + * @param RequestStack $requestStack + * @param ContainerInterface $container + */ + public function __construct(RequestStack $requestStack, ContainerInterface $container) + { + $this->requestStack = $requestStack; + $this->container = $container; + } + + /** + * @param HookRenderEvent $event + */ + public function onLoginMainBottom(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + $templateData['paypal_appid'] = PayPalBaseService::getLogin(); + $templateData['paypal_authend'] = PayPalBaseService::getMode(); + + $event->add( + $this->render( + 'paypal/login-bottom.html', + $templateData + ) + ); + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderInvoicePaymentExtra(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + $templateData['method_paypal_with_in_context'] = PayPal::getConfigValue('method_paypal_with_in_context'); + $event->add( + $this->render( + 'paypal/order-invoice-payment-extra.html', + $templateData + ) + ); + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderInvoiceBottom(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + $templateData['paypal_mode'] = PayPalBaseService::getMode(); + $templateData['paypal_merchantid'] = PayPalBaseService::getMerchantId(); + + $event->add( + $this->render( + 'paypal/order-invoice-bottom.html', + $templateData + ) + ); + } + + public function onOrderInvoiceJavascriptInitialization(HookRenderEvent $event) + { + $render = $this->render( + 'paypal/order-invoice-js.html', + [ + 'module_id' => PayPal::getModuleId(), + ] + ); + + $event->add($render); + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderPlacedAdditionalPaymentInfo(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + $event->add( + $this->render( + 'paypal/order-placed-additional-payment-info.html', + $templateData + ) + ); + } + + /** + * @param HookRenderEvent $event + */ + public function onCartBottom(HookRenderEvent $event) + { + $payPal = new PayPal(); + $payPal->setContainer($this->container); + + if (PayPal::getConfigValue('method_express_checkout') == 1 && $payPal->isValidPayment()) { + $templateData = $event->getArguments(); + $templateData['paypal_mode'] = PayPalBaseService::getMode(); + $templateData['paypal_merchantid'] = PayPalBaseService::getMerchantId(); + $event->add( + $this->render( + 'paypal/cart-bottom.html', + $templateData + ) + ); + } + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderDeliveryFormBottom(HookRenderEvent $event) + { + if ($this->isValidExpressCheckout()) { + $templateData = $event->getArguments(); + $event->add( + $this->render( + 'paypal/order-delivery-bottom.html', + $templateData + ) + ); + } + } + + /** + * @param HookRenderEvent $event + */ + public function onOrderAfterJavascriptInclude(HookRenderEvent $event) + { + if ($this->isValidExpressCheckout()) { + $templateData = $event->getArguments(); + $event->add( + $this->render( + 'paypal/order-delivery-bottom-js.html', + $templateData + ) + ); + } + } + + protected function isValidExpressCheckout() + { + $isValid = false; + + /** @var Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + $cart = $session->getSessionCart($this->dispatcher); + + $payPal = new PayPal(); + $payPal->setContainer($this->container); + + if (PayPal::getConfigValue('method_express_checkout') == 1 && $payPal->isValidPayment()) { + if (null !== $payPalCart = PaypalCartQuery::create()->findOneById($cart->getId())) { + if ($payPalCart->getExpressPaymentId() && $payPalCart->getExpressPayerId() && $payPalCart->getExpressToken()) { + $isValid = true; + } + } + } + + return $isValid; + } +} diff --git a/local/modules/PayPal/Hook/PdfHookManager.php b/local/modules/PayPal/Hook/PdfHookManager.php new file mode 100644 index 00000000..18f9b351 --- /dev/null +++ b/local/modules/PayPal/Hook/PdfHookManager.php @@ -0,0 +1,45 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Hook; + +use Thelia\Core\Event\Hook\HookRenderEvent; +use Thelia\Core\Hook\BaseHook; + +class PdfHookManager extends BaseHook +{ + /** + * @param HookRenderEvent $event + */ + public function onAfterPaymentModule(HookRenderEvent $event) + { + $templateData = $event->getArguments(); + + $event->add( + $this->render( + 'paypal/after-payment-module.html', + $templateData + ) + ); + } +} diff --git a/local/modules/PayPal/I18n/backOffice/default/fr_FR.php b/local/modules/PayPal/I18n/backOffice/default/fr_FR.php new file mode 100644 index 00000000..62e1d8f5 --- /dev/null +++ b/local/modules/PayPal/I18n/backOffice/default/fr_FR.php @@ -0,0 +1,92 @@ + 'Accept payments', + 'Account Information' => 'Account Information', + 'Add Webhook' => 'Cliquer sur Add Webhook', + 'Add a planified payment' => 'Ajouter un paiement planifié', + 'Address Information' => 'Address Information', + 'Allow the customers who haven\'t yet confirmed their email address with PayPal, to log in to your app' => 'Allow the customers who haven\'t yet confirmed their email address with PayPal, to log in to your app', + 'And configure it like the SandBox' => 'Et remplissez le formulaire comme pour la SandBox', + 'Automatic PayPal logs' => 'Logs automatiques de PayPal', + 'Billing agreements' => 'Billing agreements', + 'Check' => 'Cocher', + 'Click on Create App' => ' Cliquer sur Create App ', + 'Click on the Live Button' => 'Cliquer sur le button "Live"', + 'Configuration' => 'Configuration', + 'Copy & Paste the Client ID in the form below' => 'Copier & Coller le Client ID dans le formulaire ci-dessous', + 'Copy & Paste the Client SECRET in the form below' => 'Copier & Coller le Client SECRET dans le formulaire ci-dessous', + 'Create REST API apps here' => 'Créer une REST API apps ici ', + 'Create a new planified payment' => 'Créer un nouveau paiement récurrent', + 'Create this planified payment' => 'Créer ce paiement récurrent', + 'critical_100' => 'DEBUG', + 'critical_200' => 'INFO', + 'critical_250' => 'NOTICE', + 'critical_300' => 'WARNING', + 'critical_400' => 'ERROR', + 'critical_500' => 'CRITICAL', + 'critical_550' => 'ALERT', + 'critical_600' => 'EMERGENCY', + 'Customer ID' => 'Client ID', + 'Cycle' => 'Cycle', + 'Date' => 'Date', + 'Delete planified payment' => 'Supprimer paiement récurrent', + 'Delete this planified payment' => 'Supprimer ce paiement récurrent', + 'Details' => 'Détails', + 'Do you really want to delete this planified payment ?' => 'Voulez-vous vraiment supprimer ce paiement récurrent ?', + 'Edit planified payment' => 'Modifier un paiement récurrent', + 'Edit planified payment %title' => 'Modifier du paiement récurrent "%title" ', + 'Edit this customer' => 'Modifier ce client', + 'Edit this planified payment' => 'Modifier ce paiement récurrent', + 'Editing planified payment "%title"' => 'Modification du paiement récurrent "%title" ', + 'Fill the fields : App Name & Sandbox developer account' => 'Remplir les champs : App Name & Sandbox developer account ', + 'Frequency' => 'Fréquence', + 'Frequency interval' => 'Interval de la fréquence', + 'Future Payments' => 'Future Payments', + 'General configuration' => 'Configuration générale', + 'General description' => 'Description générale', + 'Global informations of this planified payment' => 'Informations générales de ce paiement récurrent', + 'Help' => 'Aide', + 'Home' => 'Accueil', + 'How to configure Plannified payment' => 'Comment configurer un paiement récurrent', + 'In SANDBOX APP SETTINGS' => 'Dans la section SANDBOX APP SETTINGS ', + 'In SANDBOX WEBHOOKS' => 'Dans la section SANDBOX WEBHOOKS', + 'In your PayPal page API configuration' => 'Dans votre page de configuration de votre API', + 'Invoicing' => 'Invoicing', + 'Level' => 'Niveau', + 'List of planified payments' => 'Liste des paiements récurrents', + 'Log' => 'Log', + 'Log In on developer.paypal.com' => 'Se connecter sur https://developer.paypal.com ', + 'Log In with PayPal' => 'Log In with PayPal', + 'Max amount' => 'Montant maximum', + 'Min amount' => 'Montant minium', + 'New recursive invoice from order %id' => 'Nouvelle commande récursive créée à partir de la commande %id', + 'No planified payment has been created yet. Click the + button to create one.' => 'Aucun paiement récurrent trouvé. Cliquer sur le bouton + ci-dessu pour en créer un', + 'None' => 'Aucun', + 'Order ID' => 'Commande ID', + 'PayPal Here' => 'PayPal Here', + 'Payment configuration' => 'Configuration paiement', + 'Payouts' => 'Payouts', + 'Personal Information' => 'Personal Information', + 'Planified payment' => 'Paiement récurrent', + 'Planified payment configuration' => 'Configuration paiement récurrent', + 'Planified payment created on %date_create. Last modification: %date_change' => 'Paiement récurrent créé le %date_create. Dernière modification : %date_change ', + 'Planified payments' => 'Paiements récurrents', + 'Production configuration' => 'Configuration mode Production', + 'Return URL' => ' Return URL ', + 'SandBox configuration' => 'Configuration mode Bac à Sable', + 'See webhook details' => 'Voir détails du webhook', + 'That\'s it !' => 'Et voilà !', + 'These planned payments will appear in step 4 of the purchase tunnel when selecting the payment method.' => 'Ces paiements récurrents apparaitront à l\'étape 4 du tunnel d\'achat lors de la sélection du moyen de paiement.', + 'This feature uses PayPal\'s Billing Plan and Agreement. It allows debiting a client recursively directly from PayPal.' => 'Cette fonctionnalité se sert des Billing Plan et Agreement de PayPal. Elle permet de débiter un client de manière récursive directement depuis PayPal.', + 'This informations can be found directly in concerned order details.' => 'Ces informations peuvent se retrouver directement sur les détails des commandes concernées.', + 'This is where we log all the transactions made with PayPal. PayPal webhooks also automatically feed these logs.' => 'C\'est ici que nous loggons l\'ensemble des transactions réalisées avec PayPal. Les webhooks de PayPal viennent aussi alimenter automatiquement ces logs.', + 'This method use PayPal webhooks and works only in HTTPS !' => 'Cette méthode utilise les WEBHOOKs de PayPal et ne fonctionne donc QUE ET UNIQUEMENT QUE en HTTPS !', + 'This method works only with PayPal PRO UK account. Please contact PayPal to upgrade your account if you need this service. For more informations, go here' => 'Ce moyen de paiement ne fonctionne QUE ET UNIQUEMENT QUE si vous avez un compte PayPal PRO UK. Merci de contacter PayPal pour mettre à jour votre compte si vous avez besoin de ce service. Pour plus d\'informations, rendez-vous ici', + 'This urls can take 3 hours to be taken in consideration' => ' Ces urls peuvent mettre 3 heures pour être prises en considération', + 'Title' => 'Titre', + 'Use Seamless Checkout' => 'Use Seamless Checkout', + 'You can edit the payment confirmation email sent to the customer after a successful payment.' => 'Vous pouvez modifier l\'email de confirmation de paiement envoyé au client après un paiement réalisé avec succès.', + 'You can add some planified payment here.' => 'Vous pouvez ajouter des paiements récurrents ici. ', + 'critical_{$log->getLevel()}' => 'critical_{$log->getLevel()}', +); diff --git a/local/modules/PayPal/I18n/en_US.php b/local/modules/PayPal/I18n/en_US.php new file mode 100644 index 00000000..0b4fa142 --- /dev/null +++ b/local/modules/PayPal/I18n/en_US.php @@ -0,0 +1,4 @@ + 'The displayed english string', +); diff --git a/local/modules/PayPal/I18n/fr_FR.php b/local/modules/PayPal/I18n/fr_FR.php new file mode 100644 index 00000000..fa5515da --- /dev/null +++ b/local/modules/PayPal/I18n/fr_FR.php @@ -0,0 +1,76 @@ + 'Activer le paiement : "PAYPAL EXPRESS"', + 'Activate payment with PayPal account' => 'Activer le paiement par : "PAYPAL"', + 'Activate payment with credit card' => 'Activer le paiement par : "CARTE BANCAIRE"', + 'Activate payment with planified payment' => 'Activer le paiement par : "PAIEMENT RECURRENT"', + 'Activate sandbox mode' => 'Activer le mode Bac à Sable', + 'Allowed IPs in test mode' => 'IP autorisées pour le mode Bac à sable', + 'CVV' => 'Code secret (3 chiffres)', + 'Card number' => 'Numéro de la carte', + 'Card type' => 'Type de carte', + 'Credit card is invalid' => 'Carte bancaire invalide', + 'Cycle' => 'Cycle', + 'Expire month' => 'Mois d\'expiration', + 'Expire year' => 'Année d\'expiration', + 'Express checkout begin with cart %id' => 'Début du paiement EXPRESS CHECKOUT avec la panier : %id', + 'Express checkout failed in expressCheckoutOkAction() function' => 'Echec de la méthode Express Checkout de PayPal dans la function expressCheckoutOkAction()', + 'Express Checkout login failed' => 'Echec de la connexion avec EXPRESS CHECKOUT depuis le panier', + 'Frequency' => 'Fréquence', + 'Frequency interval' => 'Interval de la fréquence', + 'If checked, a payment confirmation e-mail is sent to the customer after each PayPal transaction.' => 'Si cochée, un mail de confirmation de paiement sera envoyés grâce aux webhook directement rattachés à PayPal', + 'If checked, a payment confirmation e-mail is sent to the customer.' => 'Si cochée, le client sera informé dès que sa commande passera en payée.', + 'If checked, a PayPal popup will be used to execute the payment.' => 'Si cochée, le paiement se déroulera via une popup PayPal pour rester sur le site marchand.', + 'If checked, the order can be paid by PayPal account.' => 'Si cochée, la commande pourra être payée par un simple compte PayPal', + 'If checked, the order can be paid by credit card.' => 'Si cochée, la commande pourra être payée par carte bancaire (PayPal se chargera de vérifier sa validité)', + 'If checked, the order can be paid by planified payement.' => 'Si cochée, la commande pourra être payée par paiement récurrent (PayPal agreement)', + 'If checked, the order can be paid directly from cart.' => 'Si cochée, la commande pourra être payée directement depuis le panier', + 'If checked, the order confirmation message is sent to the customer only when the payment is successful. The order notification is always sent to the shop administrator' => 'Si cochée, le mail de confirmation de commande ne sera pas envoyé au client dès que celui-ci cliquera sur l\'une des méthodes de paiement de PayPal', + 'Invalid charge type send to create charge model' => 'Paramètre "type" invalide pour générer un "Charge Model"', + 'Invalid fail action send to create merchant preference' => 'Paramètre "fail action" invalide pour générer un "Merchant Preference"', + 'Invalid number of charge models send to create payment definition' => 'Nombre de "Charge Models" insuffisant pour générer un "Payment Definition"', + 'Invalid number of payment definition send to generate billing plan' => 'Nombre de "Payment definition" insuffisant pour générer un "Billing Plan"', + 'Invalid payment frequency send to create payment definition' => 'Paramètre "frequency" invalide pour générer un "Payment Definition"', + 'Invalid payment type send to create payment definition' => 'Paramètre "type" invalide pour générer un "Payment Definition"', + 'Invalid planified payment id : %id' => 'ID du paiement récurrent incorrect : %id', + 'Invalid type send to generate billing plan' => 'Paramètre "type" invalide pour générer un "Billing Plan"', + 'Let value to 0 if you don\'t want a maximum' => 'Laisser 0 si vous ne voulez pas de maximum', + 'Let value to 0 if you don\'t want a minimum' => 'Laisser 0 si vous ne voulez pas de minimum', + 'List of IP addresses allowed to use this payment on the front-office when in test mode (your current IP is %ip). One address per line' => 'Liste des adresses IP autorisées pour payer en Front lorsque le mmode Bac à Sable est activé (votre adresse IP actuelle est %ip). Une adresse IP par ligne.', + 'Max amount' => 'Montant maximum', + 'Maximum items in cart' => 'Nombre d\'articles maximum dans le panier', + 'Maximum number of items in the customer cart for which this payment method is available.' => 'Nombre maximum d\'articles dans le panier pour que le moyen de paiement soit valide.', + 'Maximum order total' => 'Montant maximum de la commande', + 'Maximum order total in the default currency for which this payment method is available. Enter 0 for no maximum' => 'Montant maximum de la commande dans la devise courante pour autoriser le paiement. Mettre 0 pour ne pas avoir de maximum.', + 'Merchant ID' => 'Identifiant du marchand', + 'Method agreementOkAction => One of this parameter is invalid : $token = %token, $orderId = %order_id' => 'Method agreementOkAction => L\'un de ces paramètres est incorrecte : $token = %token, $orderId = %order_id', + 'Method okAction => One of this parameter is invalid : $payerId = %payer_id, $orderId = %order_id' => 'Method okAction => L\'un de ces paramètres est incorrecte : $payerId = %payer_id, $orderId = %order_id', + 'Min amount' => 'Montant minium', + 'Minimum order total' => 'Montant minimum de la commande', + 'Minimum order total in the default currency for which this payment method is available. Enter 0 for no minimum' => ' Montant minimum de la commande dans la devise courante pour autoriser le paiement. Mettre 0 pour ne pas avoir de minimum.', + 'Order address no found to generate PayPal shipping address' => 'Adresse de la commande non trouvée pour générer l\'adresse de livraison PayPal', + 'Order created with success in PayPal with method : %method' => 'Commande créée avec succès success via PayPal avec la méthode : %method ', + 'Order failed with method : %method' => 'Echec du paiement avec la méthode : %method', + 'Order payed with success in PayPal with method : %method' => 'Commande créée avec succès avec PayPal avec la méthode : %method ', + 'Order payed with success with method : %method' => 'Paiement réalisé avec succès avec la méthode : %method', + 'PayPal method' => 'Méthode PayPal', + 'Paypal configuration' => 'Configuration PayPal', + 'Position' => 'Position', + 'Send a payment confirmation e-mail' => 'Envoyer le mail de confirmation de paiement', + 'Send a recursive payment confirmation e-mail' => 'Envoyer le mail de confirmation de paiement pour les commandes récursives', + 'Send order confirmation on payment success' => 'Bloquer le mail de confirmation de commande (mail envoyé dès qu\'une commande est créée même si elle n\'est pas payée)', + 'The Paypal identity merchant account' => 'L\'indentifiant PayPal unique du compte marchand ', + 'The delivery module is not valid.' => 'Le module de transport n\'est pas valide.', + 'The description of the planified payment' => 'La description du paiement récurrent', + 'The locale of the planified payment' => 'La locale du paiement récurrent', + 'The title of the planified payment' => 'Le titre du paiement récurrent', + 'This value should not be blank' => 'Cette valeur ne doit pas être vide', + 'Use InContext mode for classic PayPal payment' => 'Utiliser le mode InContext pour le payment classic PayPal', + 'Your Paypal login' => 'Client ID', + 'Your Paypal password' => 'Client SECRET', + 'Your Paypal sandbox login' => 'Client ID', + 'Your Paypal sandbox password' => 'Client SECRET', + 'login' => 'Client ID', + 'password' => 'Client SECRET', +); diff --git a/local/modules/PayPal/I18n/frontOffice/default/fr_FR.php b/local/modules/PayPal/I18n/frontOffice/default/fr_FR.php new file mode 100644 index 00000000..82d6a7f5 --- /dev/null +++ b/local/modules/PayPal/I18n/frontOffice/default/fr_FR.php @@ -0,0 +1,12 @@ + 'jours', + 'MONTH' => 'Mois', + 'Finish payment with PayPal' => 'Terminer le paiement avec PayPal', + 'Payment in %x times every %frequency_interval %frequency' => 'Paiement en %x fois, tout les %frequency_interval %frequency', + 'Planified payment' => 'Paiement récurrent', + 'planified_payment' => 'Paiement récurrent', + 'WEEK' => 'Semaines', + 'YEAR' => 'Années', +); diff --git a/local/modules/PayPal/I18n/pdf/default/fr_FR.php b/local/modules/PayPal/I18n/pdf/default/fr_FR.php new file mode 100644 index 00000000..630b4f09 --- /dev/null +++ b/local/modules/PayPal/I18n/pdf/default/fr_FR.php @@ -0,0 +1,10 @@ + 'Jours', + 'MONTH' => 'Mois', + 'Payment in %x times every %frequency_interval %frequency' => 'Paiement en %x fois, tout les %frequency_interval %frequency', + 'Planified payment' => 'Paiement récurrent', + 'WEEK' => 'Semaines', + 'YEAR' => 'Années', +); diff --git a/local/modules/PayPal/Loop/PayPalLogLoop.php b/local/modules/PayPal/Loop/PayPalLogLoop.php new file mode 100644 index 00000000..8509345d --- /dev/null +++ b/local/modules/PayPal/Loop/PayPalLogLoop.php @@ -0,0 +1,154 @@ +getResultDataCollection() as $model) { + + $row = new LoopResultRow($model); + + $row->set('log', $model); + + $this->addOutputFields($row, $model); + + $loopResult->addRow($row); + } + + return $loopResult; + } + + /** + * @return PaypalLogQuery + */ + public function buildModelCriteria() + { + $query = new PaypalLogQuery(); + + if (null != $orderId = $this->getOrderId()) { + $query->filterByOrderId($orderId); + } + + if (null != $customerId = $this->getCustomerId()) { + $query->filterByCustomerId($customerId); + } + + if (null != $channel = $this->getChannel()) { + $query->filterByChannel($channel); + } + + if (null != $level = $this->getLevel()) { + $query->filterByLevel($level); + } + + $this->buildModelCriteriaOrder($query); + $query->groupById(); + + return $query; + } + + /** + * @param PaypalLogQuery $query + */ + protected function buildModelCriteriaOrder(PaypalLogQuery $query) + { + foreach ($this->getOrder() as $order) { + switch ($order) { + case 'id': + $query->orderById(); + break; + case 'id-reverse': + $query->orderById(Criteria::DESC); + break; + case 'order-id': + $query->orderById(); + break; + case 'order-id-reverse': + $query->orderById(Criteria::DESC); + break; + case 'customer-id': + $query->addAscendingOrderByColumn('i18n_TITLE'); + break; + case 'customer-id-reverse': + $query->addDescendingOrderByColumn('i18n_TITLE'); + break; + case 'date': + $query->orderByCreatedAt(); + break; + case 'date-reverse': + $query->orderByCreatedAt(Criteria::DESC); + break; + default: + $query->orderById(); + break; + } + } + } + + /** + * @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntTypeArgument('order_id'), + Argument::createIntTypeArgument('customer_id'), + Argument::createAnyTypeArgument('channel'), + Argument::createIntTypeArgument('level'), + Argument::createEnumListTypeArgument( + 'order', + [ + 'id', + 'id-reverse', + 'order-id', + 'order-id-reverse', + 'customer-id', + 'customer-id-reverse', + 'date', + 'date-reverse', + ], + 'id' + ) + ); + } +} diff --git a/local/modules/PayPal/Loop/PayPalOrderLoop.php b/local/modules/PayPal/Loop/PayPalOrderLoop.php new file mode 100644 index 00000000..ed07f81d --- /dev/null +++ b/local/modules/PayPal/Loop/PayPalOrderLoop.php @@ -0,0 +1,109 @@ +getResultDataCollection() as $model) { + $row = new LoopResultRow($model); + + $row->set('paypal_order', $model); + + $this->addOutputFields($row, $model); + + $loopResult->addRow($row); + } + + return $loopResult; + } + + /** + * @return PaypalOrderQuery + */ + public function buildModelCriteria() + { + $query = new PaypalOrderQuery(); + + if (null != $id = $this->getId()) { + $query->filterById($id); + } + + $this->buildModelCriteriaOrder($query); + + return $query; + } + + /** + * @param PaypalOrderQuery $query + */ + protected function buildModelCriteriaOrder(PaypalOrderQuery $query) + { + foreach ($this->getOrder() as $order) { + switch ($order) { + case 'id': + $query->orderById(); + break; + case 'id-reverse': + $query->orderById(Criteria::DESC); + break; + default: + break; + } + } + } + + /** + * @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntListTypeArgument('id'), + Argument::createEnumListTypeArgument( + 'order', + [ + 'id', + 'id-reverse' + ], + 'id' + ) + ); + } +} diff --git a/local/modules/PayPal/Loop/PayPalPlanifiedPaymentLoop.php b/local/modules/PayPal/Loop/PayPalPlanifiedPaymentLoop.php new file mode 100644 index 00000000..c488183d --- /dev/null +++ b/local/modules/PayPal/Loop/PayPalPlanifiedPaymentLoop.php @@ -0,0 +1,133 @@ +getCurrentRequest()->getSession()->get('thelia.current.lang'); + + /** + * @var PaypalPlanifiedPayment $model + */ + foreach ($loopResult->getResultDataCollection() as $model) { + $model->getTranslation($lang->getLocale()); + $row = new LoopResultRow($model); + + $row->set('planifiedPayment', $model); + + $this->addOutputFields($row, $model); + + $loopResult->addRow($row); + } + + return $loopResult; + } + + /** + * @return PaypalPlanifiedPaymentQuery + */ + public function buildModelCriteria() + { + $query = new PaypalPlanifiedPaymentQuery(); + + if (null != $id = $this->getId()) { + $query->filterById($id); + } + + /* manage translations */ + $this->configureI18nProcessing( + $query, + array( + 'TITLE', + 'DESCRIPTION' + ) + ); + + $this->buildModelCriteriaOrder($query); + $query->groupById(); + + return $query; + } + + /** + * @param PaypalPlanifiedPaymentQuery $query + */ + protected function buildModelCriteriaOrder(PaypalPlanifiedPaymentQuery $query) + { + foreach ($this->getOrder() as $order) { + switch ($order) { + case 'id': + $query->orderById(); + break; + case 'id-reverse': + $query->orderById(Criteria::DESC); + break; + case 'position': + $query->orderById(); + break; + case 'position-reverse': + $query->orderById(Criteria::DESC); + break; + case 'title': + $query->addAscendingOrderByColumn('i18n_TITLE'); + break; + case 'title-reverse': + $query->addDescendingOrderByColumn('i18n_TITLE'); + break; + default: + $query->orderById(); + break; + } + } + } + + /** + * @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntListTypeArgument('id'), + Argument::createEnumListTypeArgument( + 'order', + [ + 'id', + 'id-reverse', + 'position', + 'position-reverse', + 'title', + 'title-reverse', + ], + 'id' + ) + ); + } +} diff --git a/local/modules/PayPal/Model/PaypalCart.php b/local/modules/PayPal/Model/PaypalCart.php new file mode 100644 index 00000000..4603a7c0 --- /dev/null +++ b/local/modules/PayPal/Model/PaypalCart.php @@ -0,0 +1,48 @@ +aCart === null && ($this->id !== null)) { + $this->aCart = CartQuery::create()->findPk($this->id, $con); + } + + return $this->aCart; + } + + /** + * Declares an association between this object and a ChildCart object. + * + * @param Cart $cart + * @return \PayPal\Model\PaypalCart The current object (for fluent API support) + * @throws PropelException + */ + public function setCart(Cart $cart = null) + { + if ($cart === null) { + $this->setId(NULL); + } else { + $this->setId($cart->getId()); + } + + $this->aCart = $cart; + + return $this; + } +} diff --git a/local/modules/PayPal/Model/PaypalCartQuery.php b/local/modules/PayPal/Model/PaypalCartQuery.php new file mode 100644 index 00000000..a73f9fe5 --- /dev/null +++ b/local/modules/PayPal/Model/PaypalCartQuery.php @@ -0,0 +1,21 @@ +aCustomer === null && ($this->id !== null)) { + $this->aCustomer = CustomerQuery::create()->findPk($this->id, $con); + } + + return $this->aCustomer; + } + + /** + * Declares an association between this object and a ChildCustomer object. + * + * @param Customer $customer + * @return \PayPal\Model\PaypalCustomer The current object (for fluent API support) + * @throws PropelException + */ + public function setCustomer(Customer $customer = null) + { + if ($customer === null) { + $this->setId(NULL); + } else { + $this->setId($customer->getId()); + } + + $this->aCustomer = $customer; + + return $this; + } +} diff --git a/local/modules/PayPal/Model/PaypalCustomerQuery.php b/local/modules/PayPal/Model/PaypalCustomerQuery.php new file mode 100644 index 00000000..cad81bc2 --- /dev/null +++ b/local/modules/PayPal/Model/PaypalCustomerQuery.php @@ -0,0 +1,21 @@ +aOrder === null && ($this->id !== null)) { + $this->aOrder = OrderQuery::create()->findPk($this->id, $con); + } + + return $this->aOrder; + } + + /** + * Declares an association between this object and a ChildOrder object. + * + * @param Order $order + * @return \PayPal\Model\PaypalOrder The current object (for fluent API support) + * @throws PropelException + */ + public function setOrder(Order $order = null) + { + if ($order === null) { + $this->setId(NULL); + } else { + $this->setId($order->getId()); + } + + $this->aOrder = $order; + + return $this; + } +} diff --git a/local/modules/PayPal/Model/PaypalOrderQuery.php b/local/modules/PayPal/Model/PaypalOrderQuery.php new file mode 100644 index 00000000..0f70b7a7 --- /dev/null +++ b/local/modules/PayPal/Model/PaypalOrderQuery.php @@ -0,0 +1,21 @@ +beginTransaction(); + + try { + /** @var PayPalPaymentService $payPalService */ + $payPalService = $this->getContainer()->get(self::PAYPAL_PAYMENT_SERVICE_ID); + /** @var PayPalAgreementService $payPalAgreementService */ + $payPalAgreementService = $this->getContainer()->get(self::PAYPAL_AGREEMENT_SERVICE_ID); + + if (null !== $payPalCart = PaypalCartQuery::create()->findOneById($order->getCartId())) { + + if (null !== $payPalCart->getCreditCardId()) { + $payment = $payPalService->makePayment($order, $payPalCart->getCreditCardId()); + + //This payment method does not have a callback URL... So we have to check the payment status + if ($payment->getState() === PayPal::PAYMENT_STATE_APPROVED) { + $event = new OrderEvent($order); + $event->setStatus(OrderStatusQuery::getPaidStatus()->getId()); + $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); + $response = new RedirectResponse(URL::getInstance()->absoluteUrl('/order/placed/' . $order->getId())); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order payed with success with method : %method', + [ + '%method' => self::PAYPAL_METHOD_CREDIT_CARD + ], + self::DOMAIN_NAME + ), + [ + 'order_id' => $order->getId(), + 'customer_id' => $order->getCustomerId() + ], + Logger::INFO + ); + } else { + $response = new RedirectResponse(URL::getInstance()->absoluteUrl('/module/paypal/cancel/' . $order->getId())); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order failed with method : %method', + [ + '%method' => self::PAYPAL_METHOD_CREDIT_CARD + ], + self::DOMAIN_NAME + ), + [ + 'order_id' => $order->getId(), + 'customer_id' => $order->getCustomerId() + ], + Logger::CRITICAL + ); + } + } elseif (null !== $planifiedPayment = PaypalPlanifiedPaymentQuery::create()->findOneById($payPalCart->getPlanifiedPaymentId())) { + //Agreement Payment + $agreement = $payPalAgreementService->makeAgreement($order, $planifiedPayment); + $response = new RedirectResponse($agreement->getApprovalLink()); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order created with success in PayPal with method : %method', + [ + '%method' => self::PAYPAL_METHOD_PLANIFIED_PAYMENT + ], + self::DOMAIN_NAME + ), + [ + 'order_id' => $order->getId(), + 'customer_id' => $order->getCustomerId() + ], + Logger::INFO + ); + } else { + //Classic Payment + $payment = $payPalService->makePayment($order); + $response = new RedirectResponse($payment->getApprovalLink()); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order created with success in PayPal with method : %method', + [ + '%method' => self::PAYPAL_METHOD_PAYPAL + ], + self::DOMAIN_NAME + ), + [ + 'order_id' => $order->getId(), + 'customer_id' => $order->getCustomerId() + ], + Logger::INFO + ); + } + + } else { + //Classic Payment + $payment = $payPalService->makePayment($order); + $response = new RedirectResponse($payment->getApprovalLink()); + PayPalLoggerService::log( + Translator::getInstance()->trans( + 'Order created with success in PayPal with method : %method', + [ + '%method' => self::PAYPAL_METHOD_PAYPAL + ], + self::DOMAIN_NAME + ), + [ + 'order_id' => $order->getId(), + 'customer_id' => $order->getCustomerId() + ], + Logger::INFO + ); + + //Future Payment NOT OPERATIONNEL IN PAYPAL API REST YET ! + //$payment = $payPalService->makePayment($order, null, null, true); + //$response = new RedirectResponse($payment->getApprovalLink()); + } + + $con->commit(); + + return $response; + } catch (PayPalConnectionException $e) { + $con->rollBack(); + + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } catch(\Exception $e) { + $con->rollBack(); + + + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } + } + + /** + * + * This method is call on Payment loop. + * + * If you return true, the payment method will de display + * If you return false, the payment method will not be display + * + * @return boolean + */ + public function isValidPayment() + { + $isValid = false; + + // Check if total order amount is within the module's limits + $order_total = $this->getCurrentOrderTotalAmount(); + + $min_amount = Paypal::getConfigValue('minimum_amount', 0); + $max_amount = Paypal::getConfigValue('maximum_amount', 0); + + if ( + ($order_total > 0) + && + ($min_amount <= 0 || $order_total >= $min_amount) + && + ($max_amount <= 0 || $order_total <= $max_amount) + ) { + // Check cart item count + $cartItemCount = $this->getRequest()->getSession()->getSessionCart($this->getDispatcher())->countCartItems(); + + if ($cartItemCount <= Paypal::getConfigValue('cart_item_count', 9)) { + $isValid = true; + + if (PayPalBaseService::isSandboxMode()) { + // In sandbox mode, check the current IP + $raw_ips = explode("\n", Paypal::getConfigValue('allowed_ip_list', '')); + + $allowed_client_ips = array(); + + foreach ($raw_ips as $ip) { + $allowed_client_ips[] = trim($ip); + } + + $client_ip = $this->getRequest()->getClientIp(); + + $isValid = in_array($client_ip, $allowed_client_ips); + } + } + } + + return $isValid; + } + + /** + * if you want, you can manage stock in your module instead of order process. + * Return false to decrease the stock when order status switch to pay + * + * @return bool + */ + public function manageStockOnCreation() + { + return false; + } + + /** + * @param \Propel\Runtime\Connection\ConnectionInterface $con + */ + public function postActivation(ConnectionInterface $con = null) + { + $database = new Database($con); + $database->insertSql(null, array(__DIR__ . "/Config/create.sql")); + + // Setup some default values at first install + if (null === self::getConfigValue('minimum_amount', null)) { + self::setConfigValue('minimum_amount', 0); + self::setConfigValue('maximum_amount', 0); + self::setConfigValue('send_payment_confirmation_message', 1); + self::setConfigValue('cart_item_count', 999); + } + + if (null === MessageQuery::create()->findOneByName(self::CONFIRMATION_MESSAGE_NAME)) { + $message = new Message(); + + $message + ->setName(self::CONFIRMATION_MESSAGE_NAME) + ->setHtmlTemplateFileName('paypal-payment-confirmation.html') + ->setTextTemplateFileName('paypal-payment-confirmation.txt') + ->setLocale('en_US') + ->setTitle('Paypal payment confirmation') + ->setSubject('Payment of order {$order_ref}') + ->setLocale('fr_FR') + ->setTitle('Confirmation de paiement par Paypal') + ->setSubject('Confirmation du paiement de votre commande {$order_ref}') + ->save() + ; + } + + if (null === MessageQuery::create()->findOneByName(self::RECURSIVE_MESSAGE_NAME)) { + $message = new Message(); + + $message + ->setName(self::RECURSIVE_MESSAGE_NAME) + ->setHtmlTemplateFileName('paypal-recursive-payment-confirmation.html') + ->setTextTemplateFileName('paypal-recursive-payment-confirmation.txt') + ->setLocale('en_US') + ->setTitle('Paypal payment confirmation') + ->setSubject('Payment of order {$order_ref}') + ->setLocale('fr_FR') + ->setTitle('Confirmation de paiement par Paypal') + ->setSubject('Confirmation du paiement de votre commande {$order_ref}') + ->save() + ; + } + + /* Deploy the module's image */ + $module = $this->getModuleModel(); + + if (ModuleImageQuery::create()->filterByModule($module)->count() == 0) { + $this->deployImageFolder($module, sprintf('%s/images', __DIR__), $con); + } + } + + public function update($currentVersion, $newVersion, ConnectionInterface $con = null) + { + $finder = (new Finder()) + ->files() + ->name('#.*?\.sql#') + ->sortByName() + ->in(__DIR__ . DS . 'Config' . DS . 'Update') + ; + + $database = new Database($con); + + /** @var \Symfony\Component\Finder\SplFileInfo $updateSQLFile */ + foreach ($finder as $updateSQLFile) { + if (version_compare($currentVersion, str_replace('.sql', '', $updateSQLFile->getFilename()), '<')) { + $database->insertSql( + null, + [ + $updateSQLFile->getPathname() + ] + ); + } + } + } +} diff --git a/local/modules/PayPal/README.md b/local/modules/PayPal/README.md new file mode 100644 index 00000000..1f7d9f8c --- /dev/null +++ b/local/modules/PayPal/README.md @@ -0,0 +1,56 @@ +# PayPal + +* I) Install notes +* II) Configure your PayPal account +* III) Module options payments + +## I) Installation + +### Composer + +> **WARNING** : A console access is required to update dependencies. If you don't have a console access, please get the latest 2.x version of the module here : https://github.com/thelia-modules/Paypal/tree/2.x + +To install the module with Composer, open a console, navigate to the Thelia diorectory and type the following command to add the dependency to Thelia composer.json file. + +``` +composer require thelia/paypal-module:~4.0.0 +``` + +## II) Configure your PayPal account + +- Log In on [developer.paypal.com] (https://developer.paypal.com "developer.paypal.com") +- Create REST API apps [here] (https://developer.paypal.com/developer/applications/ "here") +- Click on Create App +- Fill the fields : App Name & Sandbox developer account +- Click on Create App +- Note the Client ID to use it later in the module configuration +- Note the Client SECRET to use it later in the module configuration + +#### In SANDBOX WEBHOOKS +- To fill this part, go to your module configuration page to see the urls to implement + +#### In SANDBOX APP SETTINGS +- To fill this part, go to your module configuration page to see the urls to implement + + +## III) Module options payments + +#### Classic PayPal payment +![alt classic paypal payment](https://github.com/thelia-modules/Paypal/blob/master/images/payment_classic.png?raw=true) +- This method will redirect to the PayPal platform to proceed payment + +#### InContext Classic PayPal payment +![alt classic paypal payment](https://github.com/thelia-modules/Paypal/blob/master/images/payment_classic_incontext.png?raw=true) +- This method will allow the customer to pay from a PayPal inContext popup directly from your website (no redirection to the PayPal plateform) + +#### Credit card +![alt classic paypal payment](https://github.com/thelia-modules/Paypal/blob/master/images/payment_credit_card.png?raw=true) +- This method allow the customer to pay directly by a credit card without a PayPal account. 'The merchant must have a Pro PayPal account UK and the website must be in HTTPS' + +#### Recursive payment +![alt classic paypal payment](https://github.com/thelia-modules/Paypal/blob/master/images/payment_recursive.png?raw=true) +- This method use the 'PayPal AGRREMENTS' and allow you to use recursive payments on your website. If you want to log all PayPal actions, you need to configure the PayPal webhooks and to have a wabsite in HTTPS + +#### Express checkout +![alt classic paypal payment](https://github.com/thelia-modules/Paypal/blob/master/images/payment_express_checkout.png?raw=true) +- This method allow the customer to proceed the payment directly from the cart from a PayPal inContext popup. diff --git a/local/modules/PayPal/Service/Base/PayPalBaseService.php b/local/modules/PayPal/Service/Base/PayPalBaseService.php new file mode 100644 index 00000000..381a0a30 --- /dev/null +++ b/local/modules/PayPal/Service/Base/PayPalBaseService.php @@ -0,0 +1,414 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Service\Base; + +use Monolog\Logger; +use PayPal\Api\Amount; +use PayPal\Api\FuturePayment; +use PayPal\Api\Payer; +use PayPal\Api\PayerInfo; +use PayPal\Api\ShippingAddress; +use PayPal\Api\Transaction; +use PayPal\Auth\OAuthTokenCredential; +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalOrderEvent; +use PayPal\Model\PaypalCart; +use PayPal\Model\PaypalCartQuery; +use PayPal\Model\PaypalOrder; +use PayPal\Model\PaypalPlanifiedPayment; +use PayPal\PayPal; +use PayPal\Rest\ApiContext; +use PayPal\Service\PayPalLoggerService; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Routing\RouterInterface; +use Thelia\Core\Event\Cart\CartRestoreEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Core\HttpFoundation\Session\Session; +use Thelia\Core\Translation\Translator; +use Thelia\Model\Cart; +use Thelia\Model\Country; +use Thelia\Model\Currency; +use Thelia\Model\Order; +use Thelia\Model\OrderAddressQuery; + +class PayPalBaseService +{ + /** @var EventDispatcherInterface */ + protected $dispatcher; + + /** @var RequestStack */ + protected $requestStack; + + /** @var RouterInterface */ + protected $router; + + /** @var OAuthTokenCredential */ + protected $authTokenCredential; + + /** + * PayPalBaseService constructor. + * @param EventDispatcherInterface $dispatcher + * @param RequestStack $requestStack + * @param RouterInterface $router + */ + public function __construct(EventDispatcherInterface $dispatcher, RequestStack $requestStack, RouterInterface $router) + { + $this->dispatcher = $dispatcher; + $this->requestStack = $requestStack; + $this->router = $router; + + $this->authTokenCredential = new OAuthTokenCredential(self::getLogin(), self::getPassword()); + } + + /** + * @param Order $order + * @param string|null $creditCardId + * @param PaypalPlanifiedPayment $planifiedPayment + * @return PayPalOrderEvent + */ + public function generatePayPalOrder(Order $order, $creditCardId = null, PaypalPlanifiedPayment $planifiedPayment = null) + { + $payPalOrder = new PaypalOrder(); + $payPalOrder + ->setId($order->getId()) + ->setAmount($order->getTotalAmount()) + ; + + if (null !== $creditCardId) { + $payPalOrder->setCreditCardId($creditCardId); + } + + if (null !== $planifiedPayment) { + /** @var \Thelia\Model\Lang $lang */ + $lang = $this->requestStack->getCurrentRequest()->getSession()->get('thelia.current.lang'); + $planifiedPayment->getTranslation($lang->getLocale()); + + $payPalOrder + ->setPlanifiedTitle($planifiedPayment->getTitle()) + ->setPlanifiedDescription($planifiedPayment->getDescription()) + ->setPlanifiedFrequency($planifiedPayment->getFrequency()) + ->setPlanifiedFrequencyInterval($planifiedPayment->getFrequencyInterval()) + ->setPlanifiedCycle($planifiedPayment->getCycle()) + ->setPlanifiedMinAmount($planifiedPayment->getMinAmount()) + ->setPlanifiedMaxAmount($planifiedPayment->getMaxAmount()) + ; + } + + $payPalOrderEvent = new PayPalOrderEvent($payPalOrder); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_ORDER_CREATE, $payPalOrderEvent); + + return $payPalOrderEvent; + } + + /** + * @param PaypalOrder $payPalOrder + * @param $state + * @param string|null $paymentId + * @param string|null $agreementId + * @return PayPalOrderEvent + */ + public function updatePayPalOrder(PaypalOrder $payPalOrder, $state, $paymentId = null, $agreementId = null) + { + $payPalOrder->setState($state); + + if (null !== $paymentId) { + $payPalOrder->setPaymentId($paymentId); + } + + if (null !== $agreementId) { + $payPalOrder->setAgreementId($agreementId); + } + + $payPalOrderEvent = new PayPalOrderEvent($payPalOrder); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_ORDER_UPDATE, $payPalOrderEvent); + + return $payPalOrderEvent; + } + + /** + * @return PaypalCart + */ + public function getCurrentPayPalCart() + { + /** @var Session $session */ + $session = $this->requestStack->getCurrentRequest()->getSession(); + $cart = $session->getSessionCart($this->dispatcher); + + if (null === $cart) { + $cartEvent = new CartRestoreEvent(); + $this->dispatcher->dispatch(TheliaEvents::CART_RESTORE_CURRENT, $cartEvent); + + $cart = $cartEvent->getCart(); + } + + if (null === $payPalCart = PaypalCartQuery::create()->findOneById($cart->getId())) { + $payPalCart = new PaypalCart(); + $payPalCart->setId($cart->getId()); + } + + return $payPalCart; + } + + /** + * @param string $method + * @param array $fundingInstruments + * @param PayerInfo $payerInfo + * @return Payer + */ + public static function generatePayer($method = PayPal::PAYPAL_METHOD_PAYPAL, $fundingInstruments = [], PayerInfo $payerInfo = null) + { + $payer = new Payer(); + $payer->setPaymentMethod($method); + + // Never set empty instruments when communicating with PayPal + if (count($fundingInstruments) > 0) { + $payer->setFundingInstruments($fundingInstruments); + } + + if (null !== $payerInfo) { + $payer->setPayerInfo($payerInfo); + } + + return $payer; + } + + public static function generatePayerInfo($data = []) + { + $payerInfo = new PayerInfo($data); + + return $payerInfo; + } + + public static function generateShippingAddress(Order $order) + { + if (null !== $orderAddress = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId())) { + $shippingAddress = new ShippingAddress(); + + if (null !== $state = $orderAddress->getState()) { + $payPalState = $state->getIsocode(); + } else { + $payPalState = 'CA'; + } + + $shippingAddress + ->setLine1($orderAddress->getAddress1()) + ->setCity($orderAddress->getCity()) + ->setPostalCode($orderAddress->getZipcode()) + ->setCountryCode($orderAddress->getCountry()->getIsoalpha2()) + ->setState($payPalState) + ; + + if (null !== $orderAddress->getAddress2()) { + + if (null !== $orderAddress->getAddress3()) { + $shippingAddress->setLine2($orderAddress->getAddress2() . ' ' . $orderAddress->getAddress3()); + } else { + $shippingAddress->setLine2($orderAddress->getAddress2()); + } + } elseif (null !== $orderAddress->getAddress3()) { + $shippingAddress->setLine2($orderAddress->getAddress3()); + } + + if (null !== $orderAddress->getStateId()) { + //$shippingAddress->setState($orderAddress->getState()->getIsocode()); + } + + return $shippingAddress; + } else { + $message = Translator::getInstance()->trans( + 'Order address no found to generate PayPal shipping address', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + } + + /** + * @param Order $order + * @param Currency $currency + * @return Amount + */ + public function generateAmount(Order $order, Currency $currency) + { + // Specify the payment amount. + $amount = new Amount(); + $amount->setCurrency($currency->getCode()); + $amount->setTotal($order->getTotalAmount()); + + return $amount; + } + + /** + * @param Cart $cart + * @param Currency $currency + * @return Amount + */ + public function generateAmountFromCart(Cart $cart, Currency $currency) + { + // Specify the payment amount. + $amount = new Amount(); + $amount->setCurrency($currency->getCode()); + $amount->setTotal($cart->getTaxedAmount(Country::getDefaultCountry())); + + return $amount; + } + + /** + * @param Amount $amount + * @param string $description + * @return Transaction + */ + public function generateTransaction(Amount $amount, $description = '') + { + // ###Transaction + // A transaction defines the contract of a + // payment - what is the payment for and who + // is fulfilling it. Transaction is created with + // a `Payee` and `Amount` types + $transaction = new Transaction(); + $transaction->setAmount($amount); + $transaction->setDescription($description); + + return $transaction; + } + + public function getAccessToken() + { + $config = self::getApiContext()->getConfig(); + $accessToken = $this->authTokenCredential->getAccessToken($config); + + return $accessToken; + } + + public function getRefreshToken() + { + $refreshToken = FuturePayment::getRefreshToken($this->getAccessToken(), self::getApiContext()); + + return $refreshToken; + } + + /** + * SDK Configuration + * + *@return ApiContext + */ + public static function getApiContext() + { + $apiContext = new ApiContext(); + + // Alternatively pass in the configuration via a hashmap. + // The hashmap can contain any key that is allowed in + // sdk_config.ini + $apiContext->setConfig([ + 'acct1.ClientId' => self::getLogin(), + 'acct1.ClientSecret' => self::getPassword(), + 'http.ConnectionTimeOut' => 30, + 'http.Retry' => 1, + 'mode' => self::getMode(), + 'log.LogEnabled' => true, + 'log.FileName' => '../log/PayPal.log', + 'log.LogLevel' => 'INFO', + 'cache.enabled' => true, + 'cache.FileName' => '../cache/prod/PayPal.cache', + 'http.headers.PayPal-Partner-Attribution-Id' => 'Thelia_Cart', + ]); + + return $apiContext; + } + + /** + * @return string + */ + public static function getLogin() + { + if (PayPal::getConfigValue('sandbox') == 1) { + $login = PayPal::getConfigValue('sandbox_login'); + } else { + $login = PayPal::getConfigValue('login'); + } + + return $login; + } + + /** + * @return string + */ + public static function getPassword() + { + if (PayPal::getConfigValue('sandbox') == 1) { + $password = PayPal::getConfigValue('sandbox_password'); + } else { + $password = PayPal::getConfigValue('password'); + } + + return $password; + } + + /** + * @return string + */ + public static function getMerchantId() + { + if (PayPal::getConfigValue('sandbox') == 1) { + $login = PayPal::getConfigValue('sandbox_merchant_id'); + } else { + $login = PayPal::getConfigValue('merchant_id'); + } + + return $login; + } + + /** + * @return string + */ + public static function getMode() + { + if (PayPal::getConfigValue('sandbox') == 1) { + $mode = 'sandbox'; + } else { + $mode = 'live'; + } + + return $mode; + } + + public static function isSandboxMode() + { + if (self::getMode() === 'live') { + return false; + } else { + return true; + } + } +} diff --git a/local/modules/PayPal/Service/PayPalAgreementService.php b/local/modules/PayPal/Service/PayPalAgreementService.php new file mode 100644 index 00000000..aae137e4 --- /dev/null +++ b/local/modules/PayPal/Service/PayPalAgreementService.php @@ -0,0 +1,940 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Service; + +use Monolog\Logger; +use PayPal\Api\Agreement; +use PayPal\Api\AgreementStateDescriptor; +use PayPal\Api\ChargeModel; +use PayPal\Api\CreditCard; +use PayPal\Api\CreditCardToken; +use PayPal\Api\Currency; +use PayPal\Api\FundingInstrument; +use PayPal\Api\MerchantPreferences; +use PayPal\Api\Patch; +use PayPal\Api\PatchRequest; +use PayPal\Api\Payer; +use PayPal\Api\PaymentDefinition; +use PayPal\Api\Plan; +use PayPal\Common\PayPalModel; +use PayPal\Event\PayPalEvents; +use PayPal\Event\PayPalOrderEvent; +use PayPal\Event\PayPalPlanEvent; +use PayPal\Exception\PayPalConnectionException; +use PayPal\Model\PaypalOrder; +use PayPal\Model\PaypalOrderQuery; +use PayPal\Model\PaypalPlan; +use PayPal\Model\PaypalPlanifiedPayment; +use PayPal\Model\PaypalPlanQuery; +use PayPal\PayPal; +use PayPal\Service\Base\PayPalBaseService; +use Symfony\Component\Routing\Router; +use Thelia\Core\Translation\Translator; +use Thelia\Model\CurrencyQuery; +use Thelia\Model\Order; +use Thelia\Model\OrderProduct; +use Thelia\Model\OrderProductQuery; +use Thelia\Model\OrderProductTax; +use Thelia\Model\OrderProductTaxQuery; +use Thelia\Tools\URL; + +class PayPalAgreementService extends PayPalBaseService +{ + const PLAN_TYPE_FIXED = 'FIXED'; + const PLAN_TYPE_INFINITE = 'INFINITE'; + + const PAYMENT_TYPE_REGULAR = 'REGULAR'; + const PAYMENT_TYPE_TRIAL = 'TRIAL'; + + const CHARGE_TYPE_SHIPPING = 'SHIPPING'; + const CHARGE_TYPE_TAX = 'TAX'; + + const PAYMENT_FREQUENCY_DAY = 'DAY'; + const PAYMENT_FREQUENCY_WEEK = 'WEEK'; + const PAYMENT_FREQUENCY_MONTH = 'MONTH'; + const PAYMENT_FREQUENCY_YEAR = 'YEAR'; + + const FAIL_AMOUNT_ACTION_CONTINUE = 'CONTINUE'; + const FAIL_AMOUNT_ACTION_CANCEL = 'CANCEL'; + + const MAX_API_LENGHT = 128; + + /** + * @param Order $order + * @param PaypalPlanifiedPayment $planifiedPayment + * @param null $description + * @return Agreement + * @throws PayPalConnectionException + * @throws \Exception + */ + public function makeAgreement(Order $order, PaypalPlanifiedPayment $planifiedPayment, $description = null) + { + //Sadly, this description can NOT be null + if (null === $description) { + $description = 'Thelia order ' . $order->getId(); + } + + $payPalOrderEvent = $this->generatePayPalOrder($order, null, $planifiedPayment); + + $merchantPreferences = $this->createMerchantPreferences($order); + $chargeModel = $this->createChargeModel($order); + + $totalAmount = $order->getTotalAmount(); + $cycleAmount = round($totalAmount / $planifiedPayment->getCycle(), 2); + + $paymentDefinition = $this->createPaymentDefinition( + $order, + 'payment definition for order ' . $order->getId(), + [$chargeModel], + $cycleAmount, + self::PAYMENT_TYPE_REGULAR, + $planifiedPayment->getFrequency(), + $planifiedPayment->getFrequencyInterval(), + $planifiedPayment->getCycle() + ); + + $plan = $this->generateBillingPlan($order, 'plan for order ' . $order->getId(), $merchantPreferences, [$paymentDefinition]); + $plan = $this->createBillingPlan($order, $plan); + $plan = $this->activateBillingPlan($order, $plan); + + $newPlan = new Plan(); + $newPlan->setId($plan->getId()); + + // There is no Billing agreement possible with credit card + $agreement = $this->createBillingAgreementWithPayPal($order, $newPlan, 'agreement ' . $order->getId(), $description); + + //We must update concerned order_product price... order discount... order postage... PayPal will create one invoice each cycle + $this->updateTheliaOrderForCycle($order, $planifiedPayment->getCycle(), $cycleAmount); + + $this->updatePayPalOrder($payPalOrderEvent->getPayPalOrder(), $agreement->getState(), null, $agreement->getId()); + + return $agreement; + } + + public function updateTheliaOrderForCycle(Order $order, $cycle, $cycleAmount) + { + //Be sure that there is no rounding price lost with this method + $moneyLeft = $cycleAmount; + + $newPostage = round($order->getPostage() / $cycle, 2); + $newPostageTax = round($order->getPostageTax() / $cycle, 2); + $newDiscount = round($order->getDiscount() / $cycle, 2); + + $moneyLeft -= ($newPostage + $newPostageTax + $newDiscount); + $orderProducts = OrderProductQuery::create()->filterByOrderId($order->getId())->find(); + + /** @var \Thelia\Model\OrderProduct $orderProduct */ + foreach ($orderProducts as $orderProduct) { + $newPrice = round($orderProduct->getPrice() / $cycle, 2); + $newPromoPrice = round($orderProduct->getPrice() / $cycle, 2); + + if ($orderProduct->getWasInPromo()) { + $moneyLeft -= $newPromoPrice; + } else { + $moneyLeft -= $newPrice; + } + + $orderProduct + ->setPrice($newPrice) + ->setPromoPrice($newPromoPrice) + ->save() + ; + $taxes = OrderProductTaxQuery::create()->filterByOrderProductId($orderProduct->getId())->find(); + + /** @var \Thelia\Model\OrderProductTax $tax */ + foreach ($taxes as $tax) { + $newAmount = round($tax->getAmount() / $cycle, 2); + $newPromoAmount = round($tax->getPromoAmount() / $cycle, 2); + + if ($orderProduct->getWasInPromo()) { + $moneyLeft -= $newPromoAmount; + } else { + $moneyLeft -= $newAmount; + } + + $tax + ->setAmount($newAmount) + ->setPromoAmount($newPromoAmount) + ->save() + ; + } + } + + //Normally, $moneyLeft == 0 here. But in case of rouding price, adjust the rounding in the postage column + $newPostage += $moneyLeft; + + $order + ->setPostage($newPostage) + ->setPostageTax($newPostageTax) + ->setDiscount($newDiscount) + ->save() + ; + + return $order; + } + + /** + * @param $billingPlanId + * @return Plan + */ + public function getBillingPlan($billingPlanId) + { + $plan = Plan::get($billingPlanId, self::getApiContext()); + + return $plan; + } + + /** + * @param Order $order + * @param Plan $plan + * @return Plan + */ + public function activateBillingPlan(Order $order, Plan $plan) + { + $patch = new Patch(); + + $value = new PayPalModel('{ + "state":"ACTIVE" + }'); + + $patch + ->setOp('replace') + ->setPath('/') + ->setValue($value) + ; + + $patchRequest = new PatchRequest(); + $patchRequest->addPatch($patch); + + $plan->update($patchRequest, self::getApiContext()); + $plan = $this->getBillingPlan($plan->getId()); + + if (null === $payPalPlan = PaypalPlanQuery::create() + ->filterByPaypalOrderId($order->getId()) + ->filterByPlanId($plan->getId()) + ->findOne()) { + $payPalPlan = new PaypalPlan(); + $payPalPlan + ->setPaypalOrderId($order->getId()) + ->setPlanId($plan->getId()) + ; + } + + $payPalPlan->setState($plan->getState()); + $payPalPlanEvent = new PayPalPlanEvent($payPalPlan); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_PLAN_UPDATE, $payPalPlanEvent); + + return $plan; + } + + /** + * @param $token + * @param null $orderId + * @return Agreement + * @throws PayPalConnectionException + * @throws \Exception + */ + public function activateBillingAgreementByToken($token, $orderId = null) + { + $agreement = new Agreement(); + + try { + $agreement->execute($token, self::getApiContext()); + + return $this->getBillingAgreement($agreement->getId()); + } catch (PayPalConnectionException $e) { + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $orderId + ], + Logger::CRITICAL + ); + throw $e; + } catch (\Exception $e) { + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $orderId + ], + Logger::CRITICAL + ); + throw $e; + } + } + + /** + * @param Order $order + * @param $name + * @param $merchantPreferences + * @param array $paymentDefinitions + * @param string $description + * @param string $type + * @return Plan + * @throws \Exception + */ + public function generateBillingPlan(Order $order, $name, $merchantPreferences, $paymentDefinitions = [], $description = '', $type = self::PLAN_TYPE_FIXED) + { + if (!in_array($type, self::getAllowedPlanType())) { + $message = Translator::getInstance()->trans( + 'Invalid type send to generate billing plan', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + if (!is_array($paymentDefinitions) || count($paymentDefinitions) <= 0) { + $message = Translator::getInstance()->trans( + 'Invalid number of payment definition send to generate billing plan', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + $plan = new Plan(); + $plan + ->setName(substr($name, 0, self::MAX_API_LENGHT)) + ->setDescription(substr($description, 0, self::MAX_API_LENGHT)) + ->setType($type) + ->setPaymentDefinitions($paymentDefinitions) + ->setMerchantPreferences($merchantPreferences) + ; + + return $plan; + } + + /** + * @param Plan $plan + * @return bool + */ + public function deleteBillingPlan(Plan $plan) + { + $isDeleted = $plan->delete(self::getApiContext()); + + return $isDeleted; + } + + /** + * @param int $pageSize + * @return \PayPal\Api\PlanList + */ + public function listBillingPlans($pageSize = 2) + { + $planList = Plan::all(['page_size' => $pageSize], self::getApiContext()); + + return $planList; + } + + /** + * @param Order $order + * @param Plan $plan + * @return Plan + * @throws PayPalConnectionException + * @throws \Exception + */ + public function createBillingPlan(Order $order, Plan $plan) + { + try { + $plan = $plan->create(self::getApiContext()); + + if (null === $payPalPlan = PaypalPlanQuery::create() + ->filterByPaypalOrderId($order->getId()) + ->filterByPlanId($plan->getId()) + ->findOne()) { + $payPalPlan = new PaypalPlan(); + $payPalPlan + ->setPaypalOrderId($order->getId()) + ->setPlanId($plan->getId()) + ; + } + + $payPalPlan->setState($plan->getState()); + $payPalPlanEvent = new PayPalPlanEvent($payPalPlan); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_PLAN_CREATE, $payPalPlanEvent); + + return $plan; + } catch (PayPalConnectionException $e) { + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } catch (\Exception $e) { + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } + } + + /** + * @param Order $order + * @param Plan $plan + * @param $creditCardId + * @param $name + * @param $description + * @return Agreement + */ + public function createBillingAgreementWithCreditCard(Order $order, Plan $plan, $creditCardId, $name, $description) + { + $creditCardToken = new CreditCardToken(); + $creditCardToken->setCreditCardId($creditCardId); + + $fundingInstrument = new FundingInstrument(); + //$fundingInstrument->setCreditCardToken($creditCardToken); + + $card = new CreditCard(); + $card + ->setType('visa') + ->setNumber('4491759698858890') + ->setExpireMonth('12') + ->setExpireYear('2017') + ->setCvv2('128') + ; + $fundingInstrument->setCreditCard($card); + + $payer = self::generatePayer( + PayPal::PAYPAL_METHOD_CREDIT_CARD, + [$fundingInstrument], + self::generatePayerInfo(['email' => $order->getCustomer()->getEmail()]) + ); + + $agreement = $this->generateAgreement($order, $plan, $payer, $name, $description); + + $agreement = $agreement->create(self::getApiContext()); + + return $agreement; + } + + /** + * @param Order $order + * @param Plan $plan + * @param $name + * @param $description + * @return Agreement + */ + public function createBillingAgreementWithPayPal(Order $order, Plan $plan, $name, $description) + { + $payer = self::generatePayer(PayPal::PAYPAL_METHOD_PAYPAL); + + $agreement = $this->generateAgreement($order, $plan, $payer, $name, $description); + + $agreement = $agreement->create(self::getApiContext()); + + return $agreement; + } + + /** + * @param $agreementId + * @return Agreement + */ + public function getBillingAgreement($agreementId) + { + $agreement = Agreement::get($agreementId, self::getApiContext()); + + return $agreement; + } + + /** + * @param $agreementId + * @param array $params + * @return \PayPal\Api\AgreementTransactions + */ + public function getBillingAgreementTransactions($agreementId, $params = []) + { + if (is_array($params) || count($params) == 0) { + $params = [ + 'start_date' => date('Y-m-d', strtotime('-15 years')), + 'end_date' => date('Y-m-d', strtotime('+5 days')) + ]; + } + + $agreementTransactions = Agreement::searchTransactions($agreementId, $params, self::getApiContext()); + + return $agreementTransactions; + } + + /** + * @param Agreement $agreement + * @param string $note + * @return Agreement + */ + public function suspendBillingAgreement(Agreement $agreement, $note = 'Suspending the agreement') + { + //Create an Agreement State Descriptor, explaining the reason to suspend. + $agreementStateDescriptor = new AgreementStateDescriptor(); + $agreementStateDescriptor->setNote($note); + + $agreement->suspend($agreementStateDescriptor, self::getApiContext()); + + $agreement = $this->getBillingAgreement($agreement->getId()); + + return $agreement; + } + + /** + * @param Agreement $agreement + * @param string $note + * @return Agreement + */ + public function reActivateBillingAgreement(Agreement $agreement, $note = 'Reactivating the agreement') + { + //Create an Agreement State Descriptor, explaining the reason to re activate. + $agreementStateDescriptor = new AgreementStateDescriptor(); + $agreementStateDescriptor->setNote($note); + + $agreement->reActivate($agreementStateDescriptor, self::getApiContext()); + + $agreement = $this->getBillingAgreement($agreement->getId()); + + return $agreement; + } + + /** + * @param Order $order + * @param $name + * @param array $chargeModels + * @param null $cycleAmount + * @param string $type + * @param string $frequency + * @param int $frequencyInterval + * @param int $cycles + * @return PaymentDefinition + * @throws \Exception + */ + public function createPaymentDefinition(Order $order, $name, $chargeModels = [], $cycleAmount = null, $type = self::PAYMENT_TYPE_REGULAR, $frequency = self::PAYMENT_FREQUENCY_DAY, $frequencyInterval = 1, $cycles = 1) + { + if (!in_array($type, self::getAllowedPaymentType())) { + $message = Translator::getInstance()->trans( + 'Invalid payment type send to create payment definition', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + if (!in_array($frequency, self::getAllowedPaymentFrequency())) { + $message = Translator::getInstance()->trans( + 'Invalid payment frequency send to create payment definition', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + if (!is_array($chargeModels) || count($chargeModels) <= 0) { + $message = Translator::getInstance()->trans( + 'Invalid number of charge models send to create payment definition', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + $paymentDefinition = new PaymentDefinition(); + + if (null === $cycleAmount) { + $totalAmount = $order->getTotalAmount(); + $cycleAmount = round($totalAmount / $cycles, 2); + } + + $paymentDefinition + ->setName(substr($name, 0, self::MAX_API_LENGHT)) + ->setType($type) + ->setFrequency($frequency) + ->setFrequencyInterval($frequencyInterval) + ->setCycles($cycles) + ->setAmount(new Currency(['value' => $cycleAmount, 'currency' => self::getOrderCurrencyCode($order)])) + ->setChargeModels($chargeModels) + ; + + return $paymentDefinition; + } + + /** + * @param Order $order + * @param int $chargeAmount + * @param string $type + * @return ChargeModel + * @throws \Exception + */ + public function createChargeModel(Order $order, $chargeAmount = 0, $type = self::CHARGE_TYPE_SHIPPING) + { + if (!in_array($type, self::getAllowedChargeType())) { + $message = Translator::getInstance()->trans( + 'Invalid charge type send to create charge model', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + $chargeModel = new ChargeModel(); + $chargeModel + ->setType($type) + ->setAmount(new Currency(['value' => $chargeAmount, 'currency' => self::getOrderCurrencyCode($order)])) + ; + + return $chargeModel; + } + + /** + * @param Order $order + * @param bool $autoBillAmount + * @param string $failAction + * @param int $maxFailAttempts + * @param int $feeAmount + * @return MerchantPreferences + * @throws \Exception + */ + public function createMerchantPreferences(Order $order, $autoBillAmount = false, $failAction = self::FAIL_AMOUNT_ACTION_CONTINUE, $maxFailAttempts = 0, $feeAmount = 0) + { + if (!in_array($failAction, self::getAllowedFailedAction())) { + $message = Translator::getInstance()->trans( + 'Invalid fail action send to create merchant preference', + [], + PayPal::DOMAIN_NAME + ); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::ERROR + ); + throw new \Exception($message); + } + + $merchantPreferences = new MerchantPreferences(); + + $urlOk = URL::getInstance()->absoluteUrl( + $this->router->generate( + "paypal.agreement.ok", + [ + 'orderId' => $order->getId() + ], + Router::ABSOLUTE_URL + ) + ); + $urlKo = URL::getInstance()->absoluteUrl( + $this->router->generate( + "paypal.agreement.ko", + [ + 'orderId' => $order->getId() + ], + Router::ABSOLUTE_URL + ) + ); + + if ($autoBillAmount) { + $autoBillAmountStr = 'YES'; + } else { + $autoBillAmountStr = 'NO'; + } + + $merchantPreferences + ->setReturnUrl($urlOk) + ->setCancelUrl($urlKo) + ->setAutoBillAmount($autoBillAmountStr) + ->setInitialFailAmountAction($failAction) + ->setMaxFailAttempts($maxFailAttempts) + ->setSetupFee(new Currency(['value' => $feeAmount, 'currency' => self::getOrderCurrencyCode($order)])) + ; + + return $merchantPreferences; + } + + /** + * @param Order $order + * @return Order + * @throws \Exception + * @throws \Propel\Runtime\Exception\PropelException + */ + public function duplicateOrder(Order $order) + { + $today = new \Datetime; + $newOrder = new Order(); + $newOrder + ->setCustomerId($order->getCustomerId()) + ->setInvoiceOrderAddressId($order->getInvoiceOrderAddressId()) + ->setDeliveryOrderAddressId($order->getDeliveryOrderAddressId()) + ->setInvoiceDate($today->format('Y-m-d H:i:s')) + ->setCurrencyId($order->getCurrencyId()) + ->setCurrencyRate($order->getCurrencyRate()) + ->setDeliveryRef($order->getDeliveryRef()) + ->setInvoiceRef($order->getInvoiceRef()) + ->setDiscount($order->getDiscount()) + ->setPostage($order->getPostage()) + ->setPostageTax($order->getPostageTax()) + ->setPostageTaxRuleTitle($order->getPostageTaxRuleTitle()) + ->setPaymentModuleId($order->getPaymentModuleId()) + ->setDeliveryModuleId($order->getDeliveryModuleId()) + ->setStatusId($order->getStatusId()) + ->setLangId($order->getLangId()) + ->setCartId($order->getCartId()) + ->save() + ; + + $orderProducts = OrderProductQuery::create()->filterByOrderId($order->getId())->find(); + + /** @var \Thelia\Model\OrderProduct $orderProduct */ + foreach ($orderProducts as $orderProduct) { + $newOrderProduct = new OrderProduct(); + $newOrderProduct + ->setOrderId($newOrder->getId()) + ->setProductRef($orderProduct->getProductRef()) + ->setProductSaleElementsRef($orderProduct->getProductSaleElementsRef()) + ->setProductSaleElementsId($orderProduct->getProductSaleElementsId()) + ->setTitle($orderProduct->getTitle()) + ->setChapo($orderProduct->getChapo()) + ->setDescription($orderProduct->getDescription()) + ->setPostscriptum($orderProduct->getPostscriptum()) + ->setQuantity($orderProduct->getQuantity()) + ->setPrice($orderProduct->getPrice()) + ->setPromoPrice($orderProduct->getPromoPrice()) + ->setWasNew($orderProduct->getWasNew()) + ->setWasInPromo($orderProduct->getWasInPromo()) + ->setWeight($orderProduct->getWeight()) + ->setEanCode($orderProduct->getEanCode()) + ->setTaxRuleTitle($orderProduct->getTaxRuleTitle()) + ->setTaxRuleDescription($orderProduct->getTaxRuleDescription()) + ->setParent($orderProduct->getParent()) + ->setVirtual($orderProduct->getVirtual()) + ->setVirtualDocument($orderProduct->getVirtualDocument()) + ->save() + ; + + $orderProductTaxes = OrderProductTaxQuery::create()->filterByOrderProductId($orderProduct->getId())->find(); + + /** @var \Thelia\Model\OrderProductTax $orderProductTax */ + foreach ($orderProductTaxes as $orderProductTax) { + + $newOrderProductTax = new OrderProductTax(); + $newOrderProductTax + ->setOrderProductId($newOrderProduct->getId()) + ->setTitle($orderProductTax->getTitle()) + ->setDescription($orderProductTax->getDescription()) + ->setAmount($orderProductTax->getAmount()) + ->setPromoAmount($orderProductTax->getPromoAmount()) + ->save() + ; + } + } + + if (null !== $payPalOrder = PaypalOrderQuery::create()->findOneById($order->getId())) { + $newPayPalOrder = new PaypalOrder(); + $newPayPalOrder + ->setId($newOrder->getId()) + ->setPaymentId($payPalOrder->getPaymentId()) + ->setAgreementId($payPalOrder->getAgreementId()) + ->setCreditCardId($payPalOrder->getCreditCardId()) + ->setState($payPalOrder->getState()) + ->setAmount($payPalOrder->getAmount()) + ->setDescription($payPalOrder->getDescription()) + ->setPayerId($payPalOrder->getPayerId()) + ->setToken($payPalOrder->getToken()) + ; + $newPayPalOrderEvent = new PayPalOrderEvent($newPayPalOrder); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_ORDER_CREATE, $newPayPalOrderEvent); + + $payPalPlans = PaypalPlanQuery::create()->filterByPaypalOrderId($payPalOrder->getId()); + + /** @var \PayPal\Model\PaypalPlan $payPalPlan */ + foreach ($payPalPlans as $payPalPlan) { + + $newPayPalPlan = new PaypalPlan(); + $newPayPalPlan + ->setPaypalOrderId($newPayPalOrderEvent->getPayPalOrder()->getId()) + ->setPlanId($payPalPlan->getPlanId()) + ->setState($payPalPlan->getState()) + ; + + $newPayPalPlanEvent = new PayPalPlanEvent($newPayPalPlan); + $this->dispatcher->dispatch(PayPalEvents::PAYPAL_PLAN_CREATE, $newPayPalPlanEvent); + } + } + + return $newOrder; + } + + /** + * @param Order $order + * @param Plan $plan + * @param Payer $payer + * @param $name + * @param string $description + * @return Agreement + * @throws \Exception + */ + public function generateAgreement(Order $order, Plan $plan, Payer $payer, $name, $description = '') + { + $agreement = new Agreement(); + $agreement + ->setName($name) + ->setDescription($description) + ->setStartDate((new \Datetime)->format('Y-m-d\TG:i:s\Z')) + ->setPlan($plan) + ; + + //Add Payer to Agreement + $agreement + ->setPayer($payer) + ->setShippingAddress(self::generateShippingAddress($order)) + ; + + return $agreement; + } + + /** + * @param Order $order + * @return string + */ + public static function getOrderCurrencyCode(Order $order) + { + if (null === $currency = CurrencyQuery::create()->findOneById($order->getCurrencyId())) { + $currency = \Thelia\Model\Currency::getDefaultCurrency(); + } + + return $currency->getCode(); + } + + /** + * @return array + */ + public static function getAllowedPlanType() + { + return [ + self::PLAN_TYPE_FIXED, + self::PLAN_TYPE_INFINITE + ]; + } + + /** + * @return array + */ + public static function getAllowedPaymentType() + { + return [ + self::PAYMENT_TYPE_REGULAR, + self::PAYMENT_TYPE_TRIAL + ]; + } + + /** + * @return array + */ + public static function getAllowedChargeType() + { + return [ + self::CHARGE_TYPE_SHIPPING, + self::CHARGE_TYPE_TAX + ]; + } + + /** + * @return array + */ + public static function getAllowedPaymentFrequency() + { + return [ + self::PAYMENT_FREQUENCY_DAY => self::PAYMENT_FREQUENCY_DAY, + self::PAYMENT_FREQUENCY_WEEK => self::PAYMENT_FREQUENCY_WEEK, + self::PAYMENT_FREQUENCY_MONTH => self::PAYMENT_FREQUENCY_MONTH, + self::PAYMENT_FREQUENCY_YEAR => self::PAYMENT_FREQUENCY_YEAR + ]; + } + + /** + * @return array + */ + public static function getAllowedFailedAction() + { + return [ + self::FAIL_AMOUNT_ACTION_CANCEL, + self::FAIL_AMOUNT_ACTION_CONTINUE + ]; + } +} diff --git a/local/modules/PayPal/Service/PayPalCustomerService.php b/local/modules/PayPal/Service/PayPalCustomerService.php new file mode 100644 index 00000000..d3707b4b --- /dev/null +++ b/local/modules/PayPal/Service/PayPalCustomerService.php @@ -0,0 +1,164 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Service; + +use Monolog\Logger; +use PayPal\Api\OpenIdSession; +use PayPal\Api\OpenIdTokeninfo; +use PayPal\Api\OpenIdUserinfo; +use PayPal\Model\PaypalCustomer; +use PayPal\Model\PaypalCustomerQuery; +use PayPal\Service\Base\PayPalBaseService; +use Thelia\Core\Security\SecurityContext; + +/** + * Class PayPalCustomerService + * @package PayPal\Service + */ +class PayPalCustomerService +{ + /** @var SecurityContext */ + protected $securityContext; + + /** + * PayPalService constructor. + * @param SecurityContext $securityContext + */ + public function __construct(SecurityContext $securityContext) + { + $this->securityContext = $securityContext; + } + + /** + * @param $authorizationCode + * @return OpenIdUserinfo + * @throws \Exception + */ + public function getUserInfoWithAuthorizationCode($authorizationCode) + { + try { + $accessToken = OpenIdTokeninfo::createFromAuthorizationCode( + ['code' => $authorizationCode], + null, + null, + PayPalBaseService::getApiContext() + ); + + return $this->getUserInfo($accessToken->getAccessToken()); + } catch (\Exception $ex) { + PayPalLoggerService::log($ex->getMessage(), [], Logger::ERROR); + throw $ex; + } + } + + /** + * @param $accessToken + * @return OpenIdUserinfo + */ + public function getUserInfo($accessToken) + { + $params = array('access_token' => $accessToken); + $userInfo = OpenIdUserinfo::getUserinfo($params, PayPalBaseService::getApiContext()); + + return $userInfo; + } + + /** + * @return PaypalCustomer + */ + public function getCurrentPayPalCustomer() + { + $payPalCustomer = new PaypalCustomer(); + + if (null !== $customer = $this->securityContext->getCustomerUser()) { + + $payPalCustomer = PaypalCustomerQuery::create()->findOneById($customer->getId()); + + } + + return $payPalCustomer; + } + + /** + * @param $refreshToken + * @return OpenIdTokeninfo + * @throws \Exception + */ + public function generateAccessTokenFromRefreshToken($refreshToken) + { + try { + $tokenInfo = new OpenIdTokeninfo(); + $tokenInfo = $tokenInfo->createFromRefreshToken(['refresh_token' => $refreshToken], PayPalBaseService::getApiContext()); + + return $tokenInfo; + } catch (\Exception $ex) { + PayPalLoggerService::log($ex->getMessage(), [], Logger::ERROR); + throw $ex; + } + } + + /** + * @param $refreshToken + * @return OpenIdUserinfo + * @throws \Exception + */ + public function getUserInfoWithRefreshToken($refreshToken) + { + try { + $tokenInfo = $this->generateAccessTokenFromRefreshToken($refreshToken); + + return $this->getUserInfo($tokenInfo->getAccessToken()); + } catch (\Exception $ex) { + PayPalLoggerService::log($ex->getMessage(), [], Logger::ERROR); + throw $ex; + } + } + + /** + * @return string + */ + public function getUrlToRefreshToken() + { + //Get Authorization URL returns the redirect URL that could be used to get user's consent + $redirectUrl = OpenIdSession::getAuthorizationUrl( + 'http://25b3ee89.ngrok.io/', + [ + 'openid', + 'profile', + 'address', + 'email', + 'phone', + 'https://uri.paypal.com/services/paypalattributes', + 'https://uri.paypal.com/services/expresscheckout', + 'https://uri.paypal.com/services/invoicing' + ], + null, + null, + null, + PayPalBaseService::getApiContext() + ); + + return $redirectUrl; + } +} diff --git a/local/modules/PayPal/Service/PayPalLoggerService.php b/local/modules/PayPal/Service/PayPalLoggerService.php new file mode 100644 index 00000000..5af391d4 --- /dev/null +++ b/local/modules/PayPal/Service/PayPalLoggerService.php @@ -0,0 +1,133 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Service; + +use Monolog\Logger; +use MySQLHandler\MySQLHandler; +use PayPal\Model\Map\PaypalLogTableMap; +use PayPal\Model\PaypalLogQuery; +use PayPal\PayPal; +use Propel\Runtime\Propel; +use Thelia\Install\Database; + +/** + * Class PayPalLoggerService + * @package PayPal\Service + */ +class PayPalLoggerService +{ + /** + * @param $message + * @param array $params + * @param int $level + */ + public static function log($message, $params = [], $level = Logger::DEBUG) + { + $staticParams = self::getStaticParams(); + + $logger = new Logger(PayPal::getModuleCode()); + + //Create MysqlHandler + $database = new Database(Propel::getConnection()); + $mySQLHandler = new MySQLHandler( + $database->getConnection(), + PaypalLogTableMap::TABLE_NAME, + array_keys($staticParams), + $level + ); + + $logger->pushHandler($mySQLHandler); + + //Now you can use the logger, and further attach additional information + switch ($level) { + case Logger::DEBUG: + $logger->addDebug($message, array_merge($staticParams, $params)); + break; + + case Logger::INFO: + $logger->addInfo($message, array_merge($staticParams, $params)); + break; + + case Logger::NOTICE: + $logger->addNotice($message, array_merge($staticParams, $params)); + break; + + case Logger::WARNING: + $logger->addWarning($message, array_merge($staticParams, $params)); + break; + + case Logger::ERROR: + $logger->addError($message, array_merge($staticParams, $params)); + break; + + case Logger::CRITICAL: + $logger->addCritical($message, array_merge($staticParams, $params)); + break; + + case Logger::ALERT: + $logger->addAlert($message, array_merge($staticParams, $params)); + break; + + case Logger::EMERGENCY: + $logger->addEmergency($message, array_merge($staticParams, $params)); + break; + + default: + $logger->addDebug($message, array_merge($staticParams, $params)); + break; + } + + } + + /** + * @return array + * @throws \Propel\Runtime\Exception\PropelException + */ + public static function getStaticParams() + { + $psr3Fields = ['channel', 'level', 'message', 'time']; + $payPalLogFields = PaypalLogTableMap::getFieldNames(PaypalLogTableMap::TYPE_FIELDNAME); + $readableDate = new \Datetime(); + + $staticParams = []; + foreach ($payPalLogFields as $fieldName) { + + // Do not interpret psr3 fields + if (in_array($fieldName, $psr3Fields)) { + continue; + } + + if (in_array($fieldName, ['created_at', 'updated_at'])) { + $staticParams[$fieldName] = $readableDate->format('Y-m-d H:i:s'); + } elseif (in_array($fieldName, ['id'])) { + $lastId = PaypalLogQuery::create()->count(); + $staticParams[$fieldName] = $lastId + 1; + } else { + $staticParams[$fieldName] = null; + } + } + + return $staticParams; + } +} diff --git a/local/modules/PayPal/Service/PayPalPaymentService.php b/local/modules/PayPal/Service/PayPalPaymentService.php new file mode 100644 index 00000000..9826adeb --- /dev/null +++ b/local/modules/PayPal/Service/PayPalPaymentService.php @@ -0,0 +1,411 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace PayPal\Service; + +use Monolog\Logger; +use PayPal\Api\Amount; +use PayPal\Api\CreditCard; +use PayPal\Api\CreditCardToken; +use PayPal\Api\Details; +use PayPal\Api\FundingInstrument; +use PayPal\Api\FuturePayment; +use PayPal\Api\OpenIdTokeninfo; +use PayPal\Api\Payer; +use PayPal\Api\Payment; +use PayPal\Api\PaymentExecution; +use PayPal\Api\RedirectUrls; +use PayPal\Api\Transaction; +use PayPal\Exception\PayPalConnectionException; +use PayPal\PayPal; +use PayPal\Service\Base\PayPalBaseService; +use Thelia\Core\Translation\Translator; +use Thelia\Model\Cart; +use Thelia\Model\Currency; +use Thelia\Model\CurrencyQuery; +use Thelia\Model\Order; +use Thelia\Tools\URL; + + +/** + * Class PayPalPaymentService + * @package PayPal\Service + */ +class PayPalPaymentService extends PayPalBaseService +{ + /** + * Create a payment using a previously obtained + * credit card id. The corresponding credit + * card is used as the funding instrument. + * + * @param Order $order + * @param bool $future + * @param string|null $creditCardId + * @param string|null $description + * @return Payment + */ + public function makePayment(Order $order, $creditCardId = null, $description = null, $future = false) + { + $payPalOrderEvent = $this->generatePayPalOrder($order); + + if (null !== $creditCardId) { + $creditCardToken = new CreditCardToken(); + $creditCardToken->setCreditCardId($creditCardId); + + $fundingInstrument = new FundingInstrument(); + $fundingInstrument->setCreditCardToken($creditCardToken); + + $payer = self::generatePayer(PayPal::PAYPAL_METHOD_CREDIT_CARD, [$fundingInstrument]); + } else { + $payer = self::generatePayer(); + } + + // Specify the payment amount. + if (null === $currency = CurrencyQuery::create()->findOneById($order->getCurrencyId())) { + $currency = Currency::getDefaultCurrency(); + } + + $amount = $this->generateAmount($order, $currency); + + $transaction = $this->generateTransaction($amount, $description); + + $payment = $this->generatePayment($order, $payer, $transaction, $future); + + $this->updatePayPalOrder($payPalOrderEvent->getPayPalOrder(), $payment->getState(), $payment->getId()); + + return $payment; + } + + public function makePaymentFromCart(Cart $cart, $description = null, $future = false, $fromCartView = true) + { + $payer = self::generatePayer(); + + // Specify the payment amount. + if (null === $currency = CurrencyQuery::create()->findOneById($cart->getCurrencyId())) { + $currency = Currency::getDefaultCurrency(); + } + + $amount = $this->generateAmountFromCart($cart, $currency); + + $transaction = $this->generateTransaction($amount, $description); + + $payment = $this->generatePaymentFromCart($cart, $payer, $transaction, $future, $fromCartView); + + //$this->updatePayPalOrder($payPalOrderEvent->getPayPalOrder(), $payment->getState(), $payment->getId()); + + return $payment; + } + + /** + * Completes the payment once buyer approval has been + * obtained. Used only when the payment method is 'paypal' + * + * @param string $paymentId id of a previously created + * payment that has its payment method set to 'paypal' + * and has been approved by the buyer. + * + * @param string $payerId PayerId as returned by PayPal post + * buyer approval. + * + * @return Payment + */ + public function executePayment($paymentId, $payerId, Details $details = null) + { + $payment = $this->getPaymentDetails($paymentId); + $paymentExecution = new PaymentExecution(); + $paymentExecution->setPayerId($payerId); + + if (null !== $details) { + $amount = new Amount(); + $totalDetails = (float)$details->getShipping() + (float)$details->getTax() + (float)$details->getSubtotal(); + $amount + ->setCurrency('EUR') + ->setTotal($totalDetails) + ->setDetails($details) + ; + + $transaction = new Transaction(); + $transaction->setAmount($amount); + + $paymentExecution->addTransaction($transaction); + } + + $payment = $payment->execute($paymentExecution, self::getApiContext()); + + return $payment; + } + + public function createDetails($shipping = 0, $shippingTax = 0, $subTotal = 0) + { + $details = new Details(); + $details + ->setShipping($shipping) + ->setTax($shippingTax) + ->setSubtotal($subTotal) + ; + + return $details; + } + + /** + * Retrieves the payment information based on PaymentID from Paypal APIs + * + * @param $paymentId + * + * @return Payment + */ + public function getPaymentDetails($paymentId) + { + $payment = Payment::get($paymentId, self::getApiContext()); + + return $payment; + } + + /** + * @param $authorizationCode + * @return OpenIdTokeninfo + * @throws PayPalConnectionException + */ + public function generateAccessToken($authorizationCode) + { + try { + // Obtain Authorization Code from Code, Client ID and Client Secret + $accessToken = OpenIdTokeninfo::createFromAuthorizationCode( + ['code' => $authorizationCode], + null, + null, + self::getApiContext() + ); + + return $accessToken; + } catch (PayPalConnectionException $ex) { + PayPalLoggerService::log($ex->getMessage(), [], Logger::ERROR); + throw $ex; + } + } + + /** + * @param $type + * @param $number + * @param $expireMonth + * @param $expireYear + * @param $cvv2 + * @return string + * @throws \Exception + */ + public function getPayPalCreditCardId($type, $number, $expireMonth, $expireYear, $cvv2) + { + try { + $card = new CreditCard(); + $card->setType($type); + $card->setNumber((int)$number); + $card->setExpireMonth((int)$expireMonth); + $card->setExpireYear((int)$expireYear); + $card->setCvv2($cvv2); + + $card->create(self::getApiContext()); + + return $card->getId(); + } catch (\Exception $e) { + PayPalLoggerService::log($e->getMessage(), [], Logger::ERROR); + throw new \Exception(Translator::getInstance()->trans('Credit card is invalid', [], PayPal::DOMAIN_NAME)); + } + } + + /** + * @param Order $order + * @param Payer $payer + * @param Transaction $transaction + * @param bool $future + * @return FuturePayment|Payment + * @throws PayPalConnectionException + * @throws \Exception + */ + public function generatePayment(Order $order, Payer $payer, Transaction $transaction, $future = false) + { + if ($future) { + $payment = new FuturePayment(); + $payment->setIntent('authorize'); + } else { + $payment = new Payment(); + $payment->setIntent('sale'); + } + + $payment + ->setRedirectUrls($this->getRedirectUrls($order)) + ->setPayer($payer) + ->setTransactions([$transaction]) + ; + + $clientMetadataId = '123123456'; + + try { + + if ($future) { + + //$authorizationCode = self::getAuthorizationCode(); + $refreshToken = $this->getRefreshToken(); + //$refreshToken = FuturePayment::getRefreshToken($this->getAuthorizationCode(), self::getApiContext()); + $payment->updateAccessToken($refreshToken, self::getApiContext()); + $payment->create(self::getApiContext(), $clientMetadataId); + + } else { + $payment->create(self::getApiContext()); + } + + return $payment; + + } catch (PayPalConnectionException $e) { + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } catch (\Exception $e) { + PayPalLoggerService::log( + $e->getMessage(), + [ + 'customer_id' => $order->getCustomerId(), + 'order_id' => $order->getId() + ], + Logger::CRITICAL + ); + throw $e; + } + } + + /** + * @param Cart $cart + * @param Payer $payer + * @param Transaction $transaction + * @param bool $future + * @return FuturePayment|Payment + * @throws PayPalConnectionException + * @throws \Exception + */ + public function generatePaymentFromCart(Cart $cart, Payer $payer, Transaction $transaction, $future = false, $fromCartView = true) + { + if ($future) { + $payment = new FuturePayment(); + $payment->setIntent('authorize'); + } else { + $payment = new Payment(); + $payment->setIntent('sale'); + } + + if ($fromCartView) { + $payment->setRedirectUrls($this->getRedirectCartUrls($cart)); + } else { + $payment->setRedirectUrls($this->getRedirectInvoiceUrls($cart)); + } + $payment + ->setPayer($payer) + ->setTransactions([$transaction]) + ; + + $clientMetadataId = '123123456'; + + try { + + if ($future) { + + //$authorizationCode = self::getAuthorizationCode(); + $refreshToken = $this->getRefreshToken(); + //$refreshToken = FuturePayment::getRefreshToken($this->getAuthorizationCode(), self::getApiContext()); + $payment->updateAccessToken($refreshToken, self::getApiContext()); + $payment->create(self::getApiContext(), $clientMetadataId); + + } else { + $payment->create(self::getApiContext()); + } + + return $payment; + + } catch (PayPalConnectionException $e) { + $message = sprintf('url : %s. data : %s. message : %s', $e->getUrl(), $e->getData(), $e->getMessage()); + PayPalLoggerService::log( + $message, + [], + Logger::CRITICAL + ); + throw $e; + } catch (\Exception $e) { + PayPalLoggerService::log( + $e->getMessage(), + [], + Logger::CRITICAL + ); + throw $e; + } + } + + /** + * @param Order $order + * @return RedirectUrls + */ + public function getRedirectUrls(Order $order) + { + $redirectUrls = new RedirectUrls(); + $urlOk = URL::getInstance()->absoluteUrl('/module/paypal/ok/' . $order->getId()); + $urlCancel = URL::getInstance()->absoluteUrl('/module/paypal/cancel/' . $order->getId()); + $redirectUrls->setReturnUrl($urlOk); + $redirectUrls->setCancelUrl($urlCancel); + + return $redirectUrls; + } + + /** + * @param Cart $cart + * @return RedirectUrls + */ + public function getRedirectCartUrls(Cart $cart) + { + $redirectUrls = new RedirectUrls(); + $urlOk = URL::getInstance()->absoluteUrl('/module/paypal/express/checkout/ok/' . $cart->getId()); + $urlCancel = URL::getInstance()->absoluteUrl('/module/paypal/express/checkout/ko/' . $cart->getId()); + $redirectUrls->setReturnUrl($urlOk); + $redirectUrls->setCancelUrl($urlCancel); + + return $redirectUrls; + } + + /** + * @param Cart $cart + * @return RedirectUrls + */ + public function getRedirectInvoiceUrls(Cart $cart) + { + $redirectUrls = new RedirectUrls(); + $urlOk = URL::getInstance()->absoluteUrl('/module/paypal/invoice/express/checkout/ok/' . $cart->getId()); + $urlCancel = URL::getInstance()->absoluteUrl('/module/paypal/invoice/express/checkout/ko/' . $cart->getId()); + $redirectUrls->setReturnUrl($urlOk); + $redirectUrls->setCancelUrl($urlCancel); + + return $redirectUrls; + } +} diff --git a/local/modules/PayPal/composer.json b/local/modules/PayPal/composer.json new file mode 100644 index 00000000..bbaf3ae8 --- /dev/null +++ b/local/modules/PayPal/composer.json @@ -0,0 +1,14 @@ +{ + "name": "thelia/paypal-module", + "description": "PayPal module for Thelia ecommerce solution ", + "license": "LGPL-3.0+", + "type": "thelia-module", + "require": { + "thelia/installer": "~1.1", + "paypal/rest-api-sdk-php": "1.7.1", + "wazaari/monolog-mysql": "1.0.3" + }, + "extra": { + "installer-name": "PayPal" + } +} diff --git a/local/modules/PayPal/images/logo.png b/local/modules/PayPal/images/logo.png new file mode 100755 index 00000000..1fe1879f Binary files /dev/null and b/local/modules/PayPal/images/logo.png differ diff --git a/local/modules/PayPal/images/payment_classic.png b/local/modules/PayPal/images/payment_classic.png new file mode 100644 index 00000000..8fcb8b0b Binary files /dev/null and b/local/modules/PayPal/images/payment_classic.png differ diff --git a/local/modules/PayPal/images/payment_classic_incontext.png b/local/modules/PayPal/images/payment_classic_incontext.png new file mode 100644 index 00000000..36817055 Binary files /dev/null and b/local/modules/PayPal/images/payment_classic_incontext.png differ diff --git a/local/modules/PayPal/images/payment_credit_card.png b/local/modules/PayPal/images/payment_credit_card.png new file mode 100644 index 00000000..142d268c Binary files /dev/null and b/local/modules/PayPal/images/payment_credit_card.png differ diff --git a/local/modules/PayPal/images/payment_express_checkout.png b/local/modules/PayPal/images/payment_express_checkout.png new file mode 100644 index 00000000..e9f4237e Binary files /dev/null and b/local/modules/PayPal/images/payment_express_checkout.png differ diff --git a/local/modules/PayPal/images/payment_recursive.png b/local/modules/PayPal/images/payment_recursive.png new file mode 100644 index 00000000..2f62d0ae Binary files /dev/null and b/local/modules/PayPal/images/payment_recursive.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_agreement.jpeg b/local/modules/PayPal/templates/backOffice/default/assets/paypal_agreement.jpeg new file mode 100644 index 00000000..eaa3af22 Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_agreement.jpeg differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf1.png b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf1.png new file mode 100644 index 00000000..7904991f Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf1.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf2.png b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf2.png new file mode 100644 index 00000000..47dad7a1 Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf2.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf3.png b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf3.png new file mode 100644 index 00000000..e7546deb Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_conf3.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_live_button.png b/local/modules/PayPal/templates/backOffice/default/assets/paypal_live_button.png new file mode 100644 index 00000000..e39588ed Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_live_button.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/assets/paypal_webhook.png b/local/modules/PayPal/templates/backOffice/default/assets/paypal_webhook.png new file mode 100644 index 00000000..419d33c7 Binary files /dev/null and b/local/modules/PayPal/templates/backOffice/default/assets/paypal_webhook.png differ diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/form/create-or-update-planified-payment-form.html b/local/modules/PayPal/templates/backOffice/default/paypal/form/create-or-update-planified-payment-form.html new file mode 100644 index 00000000..454fa4ff --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/form/create-or-update-planified-payment-form.html @@ -0,0 +1,38 @@ +{render_form_field field="locale"} +
    +
    + {intl l="Global informations of this planified payment" d="paypal.bo.default"} +
    +
    +
    +
    + {render_form_field field="title"} +
    +
    +
    +
    + {render_form_field field="description"} +
    +
    +
    +
    + {render_form_field field="frequency_interval"} +
    +
    + {render_form_field field="frequency"} +
    +
    + {render_form_field field="cycle"} +
    +
    + +
    +
    + {render_form_field field="min_amount"} +
    +
    + {render_form_field field="max_amount"} +
    +
    +
    +
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row-js.html b/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row-js.html new file mode 100644 index 00000000..c4fef9f9 --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row-js.html @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row.html b/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row.html new file mode 100644 index 00000000..7d7acd7a --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/includes/paypal-log-row.html @@ -0,0 +1,20 @@ +getHook()} style="cursor: pointer;"{/if}> + + {format_date date=$CREATE_DATE} + + {if $log->getHook()} + {$log->getHook()} ({intl l="See webhook details" d="paypal.bo.default"}) + + {else} + {$log->getMessage() nofilter} + {/if} + + {$log->getCustomerId()} + getOrderId()}">{$log->getOrderId()} + + {$log->getHook()} + + {intl l="critical_{$log->getLevel()}" d="paypal.bo.default"} + \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/menu/menu.html b/local/modules/PayPal/templates/backOffice/default/paypal/menu/menu.html new file mode 100644 index 00000000..213691ff --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/menu/menu.html @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/module-configuration.html b/local/modules/PayPal/templates/backOffice/default/paypal/module-configuration.html new file mode 100644 index 00000000..1bcdf7eb --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/module-configuration.html @@ -0,0 +1,236 @@ +
    +
    +
    + + {include file="paypal/menu/menu.html" selectedMenu="general"} + +
    + +
    + + {form name="paypal_form_configure"} + + {if $form_error} +
    {$form_error_message}
    + {elseif $general_error} +
    + {$general_error} +
    + {/if} + + + {form_hidden_fields form=$form} +
    +
    + {include file = "includes/inner-form-toolbar.html" + hide_flags = true + page_url = "{url path='/admin/module/Paypal'}" + close_url = "{url path='/admin/modules'}" + } +
    +
    +
    +
    +
    +

    + 1 + {intl l="SandBox configuration" d="paypal.bo.default"} + +

    +
    +
    +
    + Payment configuration +
    +
    +
    +
    + + {custom_render_form_field form=$form field="sandbox"} + + {$label} + {/custom_render_form_field} + + {render_form_field form=$form field="sandbox_login" value=$sandbox_login} + {render_form_field form=$form field="sandbox_password" value=$sandbox_password} + {render_form_field form=$form field="sandbox_merchant_id" value=$sandbox_merchant_id} + + {render_form_field form=$form field="allowed_ip_list" value=$allowed_ip_list} +
    +
    +
    +
    +

    +  {intl l="Help" d="paypal.bo.default"} : {intl l="Configuration" d="paypal.bo.default"} +

    + - {intl l="Log In on developer.paypal.com" d="paypal.bo.default"}
    + - {intl l="Create REST API apps here" d="paypal.bo.default"}
    + - {intl l="Click on Create App" d="paypal.bo.default"}
    + - {intl l="Fill the fields : App Name & Sandbox developer account" d="paypal.bo.default"}
    + - {intl l="Click on Create App" d="paypal.bo.default"}
    + - {intl l="Copy & Paste the Client ID in the form below" d="paypal.bo.default"}
    + - {intl l="Copy & Paste the Client SECRET in the form below" d="paypal.bo.default"}
    + - {intl l="In SANDBOX WEBHOOKS" d="paypal.bo.default"} :
    + -     {intl l="Add Webhook" d="paypal.bo.default"}
    + -         {url path="/module/paypal/webhook/all/events"}
    + -         {intl l="Check 'All events'" d="paypal.bo.default"}
    + - {intl l="In SANDBOX APP SETTINGS" d="paypal.bo.default"} :
    + -     {intl l="Return URL" d="paypal.bo.default"}
    + -         {navigate to="index"}
    + -         {url path="/module/paypal/login/ok"}
    + -         {url path="/module/paypal/agreement/ok"}
    + -         {url path="/module/paypal/agreement/ko"}
    + -
    + - {intl l="Check" d="paypal.bo.default"} {intl l="Accept payments" d="paypal.bo.default"} 
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Future Payments" d="paypal.bo.default"}
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Billing agreements" d="paypal.bo.default"}
    + - {intl l="Check" d="paypal.bo.default"} {intl l="Invoicing" d="paypal.bo.default"} 
    + - {intl l="Check" d="paypal.bo.default"} {intl l="Payouts" d="paypal.bo.default"} 
    + - {intl l="Check" d="paypal.bo.default"} {intl l="PayPal Here" d="paypal.bo.default"} 
    + - {intl l="Check" d="paypal.bo.default"} {intl l="Log In with PayPal" d="paypal.bo.default"} 
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Personal Information" d="paypal.bo.default"}
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Address Information" d="paypal.bo.default"}
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Account Information" d="paypal.bo.default"}
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Use Seamless Checkout" d="paypal.bo.default"}
    + -     {intl l="Check" d="paypal.bo.default"} {intl l="Allow the customers who haven't yet confirmed their email address with PayPal, to log in to your app" d="paypal.bo.default"}
    + - {intl l="That's it !" d="paypal.bo.default"}
    +
    +
    +
    +
    +
    +

    + 2 + {intl l="Production configuration" d="paypal.bo.default"} +

    +
    +
    +
    + Payment configuration +
    +
    +
    +
    + {render_form_field form=$form field="login" value=$login} + {render_form_field form=$form field="password" value=$password} + {render_form_field form=$form field="merchant_id" value=$merchant_id} +
    +
    +
    +
    +

    +  {intl l="Help" d="paypal.bo.default"} : {intl l="Configuration" d="paypal.bo.default"} +

    + - {intl l="In your PayPal page API configuration" d="paypal.bo.default"}
    + - {intl l="Click on the Live Button" d="paypal.bo.default"}
    + Payment configuration
    + - {intl l="And configure it like the SandBox" d="paypal.bo.default"}
    +
    +
    +
    +
    +

    + 3 + {intl l="Payment configuration" d="paypal.bo.default"} +

    + +
    +
    + Payment configuration +
    +
    + {custom_render_form_field form=$form field="method_paypal"} + + {$label} + {/custom_render_form_field} + + {custom_render_form_field form=$form field="method_paypal_with_in_context"} + + {$label} + {/custom_render_form_field} + + {custom_render_form_field form=$form field="method_express_checkout"} + + {$label} + {/custom_render_form_field} + + {custom_render_form_field form=$form field="method_credit_card"} + + {$label} + {/custom_render_form_field} + +
    + + {intl d='paypal.bo.default' l='This method works only with PayPal PRO UK account. Please contact PayPal to upgrade your account if you need this service. For more informations, go here'} +
    + + {custom_render_form_field form=$form field="method_planified_payment"} + + {$label} + {/custom_render_form_field} + +
    + + {intl d='paypal.bo.default' l='This method use PayPal webhooks and works only in HTTPS !'} +
    + +
    + + {intl d='paypal.bo.default' l='You can add some planified payment here.' url={url path="/admin/module/paypal/configure/planified"}} +
    + + {custom_render_form_field form=$form field="send_confirmation_message_only_if_paid"} + + {$label} + {/custom_render_form_field} + + {custom_render_form_field form=$form field="send_payment_confirmation_message"} + + {$label} + {/custom_render_form_field} + + {custom_render_form_field form=$form field="send_recursive_message"} + + {$label} + {/custom_render_form_field} + +
    + + {intl d='paypal.bo.default' l='You can edit the payment confirmation email sent to the customer after a successful payment.' url={url path="/admin/configuration/messages"}} +
    + + {custom_render_form_field form=$form field="minimum_amount"} +
    + + {currency attr='symbol'} +
    + {/custom_render_form_field} + + {custom_render_form_field form=$form field="maximum_amount"} +
    + + {currency attr='symbol'} +
    + {/custom_render_form_field} + + {render_form_field form=$form field="cart_item_count" value=$cart_item_count} +
    +
    +
    +
    +
    +
    + {include file = "includes/inner-form-toolbar.html" + hide_flags = true + page_url = "{url path='/admin/module/Paypal'}" + close_url = "{url path='/admin/modules'}" + } +
    +
    + + {/form} +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/order-edit-js.html b/local/modules/PayPal/templates/backOffice/default/paypal/order-edit-js.html new file mode 100644 index 00000000..3a1e2f3e --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/order-edit-js.html @@ -0,0 +1 @@ +{include file = "paypal/includes/paypal-log-row-js.html"} \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/payment-information.html b/local/modules/PayPal/templates/backOffice/default/paypal/payment-information.html new file mode 100644 index 00000000..52fda460 --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/payment-information.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + {loop name="paypal_log" type="paypal_log" backend_context=true order_id=$order_id order="date-reverse"} + {include file = "paypal/includes/paypal-log-row.html"} + {/loop} + +
    {intl l='Date' d="paypal.bo.default"}{intl l='Details' d="paypal.bo.default"}{intl l="Customer ID" d="paypal.bo.default"}{intl l="Order ID" d="paypal.bo.default"}{intl l="Webhook" d="paypal.bo.default"}{intl l="Level" d="paypal.bo.default"}
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/paypal-log.html b/local/modules/PayPal/templates/backOffice/default/paypal/paypal-log.html new file mode 100644 index 00000000..3285c43e --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/paypal-log.html @@ -0,0 +1,105 @@ +{extends file="admin-layout.tpl"} + +{block name="main-content"} + +
    +
    +
    + + {include file="paypal/menu/menu.html" selectedMenu="log"} + +
    + +
    +
    +
    + +

    + 1 + {intl l="Automatic PayPal logs" d="paypal.bo.default"} +

    + +
    +
    +

    +  {intl l="Help" d="paypal.bo.default"} : +

    +
    + {intl l="This is where we log all the transactions made with PayPal. PayPal webhooks also automatically feed these logs." d="paypal.bo.default"} +
    {intl l="This informations can be found directly in concerned order details." d="paypal.bo.default"} +
    +
    +
    +
    + Payment configuration +
    +
    +
    + + + {$page = $smarty.get.page|default:1} + {$limit = $smarty.get.limit|default:100} + +
    +
    +
    + + + + + + + + + + + + + + {loop name="paypal_log" type="paypal_log" backend_context=true order="date-reverse" page=$page limit=$limit} + {include file = "paypal/includes/paypal-log-row.html"} + {/loop} + + + + + + +
    {intl l='Date' d="paypal.bo.default"}{intl l='Details' d="paypal.bo.default"}{intl l="Customer ID" d="paypal.bo.default"}{intl l="Order ID" d="paypal.bo.default"}{intl l="Webhook" d="paypal.bo.default"}{intl l="Level" d="paypal.bo.default"}
    + {include + file = "includes/pagination.html" + loop_ref = "paypal_log" + max_page_count = $limit + page_url = {url path="/admin/module/paypal/configure/log"} + } +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +{/block} + +{block name="javascript-initialization"} + {include file = "paypal/includes/paypal-log-row-js.html"} +{/block} \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment-edit.html b/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment-edit.html new file mode 100644 index 00000000..9ecd9fab --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment-edit.html @@ -0,0 +1,86 @@ +{extends file="admin-layout.tpl"} + +{block name="no-return-functions"} +{$admin_current_location = 'module'} +{/block} + +{block name="page-title"}{intl l='Edit planified payment' d="paypal.bo.default"}{/block} + +{block name="main-content"} +
    +
    + {loop name="paypal_planified_payment" type="paypal_planified_payment" id=$planifiedPaymentId backend_context=true} + + + +
    +
    + +
    +
    + {intl l='Edit planified payment %title' d="paypal.bo.default" title=$planifiedPayment->getTitle()} +
    +
    + + + +
    + +
    + +
    + + {form name="paypal_planified_payment_update_form"} +
    getId()}" {form_enctype} class="clearfix"> + + {include file="includes/inner-form-toolbar.html" hide_flags=true close_url={url path="/admin/module/paypal/configure/planified"}} + + + + {* Be sure to get the planified payment ID, even if the form could not be validated *} + + + {form_hidden_fields} + + {render_form_field field="id"} + + {render_form_field field="success_url" value={url path="/admin/module/paypal/configure/planified"}} + + {if $form_error} +
    {$form_error_message}
    + {/if} + +
    + {include file = "paypal/form/create-or-update-planified-payment-form.html"} +
    + + {include + file="includes/inner-form-toolbar.html" + hide_submit_buttons = false + hide_flags = true + + close_url={url path="/admin/module/paypal/configure/planified"} + } + + {intl l='Planified payment created on %date_create. Last modification: %date_change' d="paypal.bo.default" date_create={format_date date=$CREATE_DATE} date_change={format_date date=$UPDATE_DATE} } +
    + {/form} +
    +
    +
    +
    +
    + {/loop} +
    +
    +{/block} \ No newline at end of file diff --git a/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment.html b/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment.html new file mode 100644 index 00000000..2bf98c43 --- /dev/null +++ b/local/modules/PayPal/templates/backOffice/default/paypal/planified-payment.html @@ -0,0 +1,185 @@ +{extends file="admin-layout.tpl"} + +{block name="main-content"} + +
    +
    +
    + + {include file="paypal/menu/menu.html" selectedMenu="planifiedPayment"} + +
    + +
    +
    +
    +

    + 1 + {intl l="Planified payment configuration" d="paypal.bo.default"} +

    + +
    +
    +

    +  {intl l="Help" d="paypal.bo.default"} : +

    +
    + {intl l="This feature uses PayPal's Billing Plan and Agreement. It allows debiting a client recursively directly from PayPal." d="paypal.bo.default"} +
    {intl l="These planned payments will appear in step 4 of the purchase tunnel when selecting the payment method." d="paypal.bo.default"} +
    +
    +
    +
    + Payment configuration +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + {loop name="paypal_planified_payment" type="paypal_planified_payment" backend_context=true order=$order} + + + + + + + + {/loop} + {elseloop rel="paypal_planified_payment"} + + + + {/elseloop} + +
    + {intl l="List of planified payments" d="paypal.bo.default"} + + + +
    + {intl l='Title' d="paypal.bo.default"} + + {intl l='Details' d="paypal.bo.default"} +
    + {$planifiedPayment->getTitle()} ;
    + {$planifiedPayment->getDescription()} +
    + {intl l='Frequency interval' d="paypal.bo.default"} : {$planifiedPayment->getFrequencyInterval()}
    + {intl l='Frequency' d="paypal.bo.default"} : {$planifiedPayment->getFrequency()}
    + {intl l='Cycle' d="paypal.bo.default"} : {$planifiedPayment->getCycle()}
    + {intl l='Min amount' d="paypal.bo.default"} : {if $planifiedPayment->getMinAmount() > 0}{format_money number=$planifiedPayment->getMinAmount()}{else}{intl l='None' d="paypal.bo.default"}{/if}
    + {intl l='Max amount' d="paypal.bo.default"} : {if $planifiedPayment->getMaxAmount() > 0}{format_money number=$planifiedPayment->getMaxAmount()}{else}{intl l='None' d="paypal.bo.default"}{/if}
    +
    + +
    +
    + {intl l="No planified payment has been created yet. Click the + button to create one." d="paypal.bo.default"} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + {* Adding a new planified payment *} + {form name="paypal_planified_payment_create_form"} + + {* Capture the dialog body, to pass it to the generic dialog *} + {capture "creation_dialog"} + {form_hidden_fields} + + {include file = "paypal/form/create-or-update-planified-payment-form.html"} + + {render_form_field field="success_url" value={url path='/admin/module/paypal/configure/planified'}} + {/capture} + + {include + file = "includes/generic-create-dialog.html" + + dialog_id = "creation_dialog" + dialog_title = {intl l="Create a new planified payment" d="paypal.bo.default"} + dialog_body = {$smarty.capture.creation_dialog nofilter} + + dialog_ok_label = {intl l="Create this planified payment" d="paypal.bo.default"} + + form_action = {url path='/admin/module/paypal/configure/planified/create'} + form_enctype = {form_enctype} + form_error_message = $form_error_message + } + {/form} + + {* Delete confirmation dialog *} + {capture "delete_dialog"} + + {/capture} + + {include + file = "includes/generic-confirm-dialog.html" + + dialog_id = "delete_dialog" + dialog_title = {intl l="Delete planified payment" d="paypal.bo.default"} + dialog_message = {intl l="Do you really want to delete this planified payment ?" d="paypal.bo.default"} + + form_action = {token_url path='/admin/module/paypal/configure/planified/create/delete'} + form_content = {$smarty.capture.delete_dialog nofilter} + } +{/block} + +{block name="javascript-initialization"} + +{/block} \ No newline at end of file diff --git a/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.html b/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.html new file mode 100755 index 00000000..43c199bf --- /dev/null +++ b/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.html @@ -0,0 +1,23 @@ +{extends file="email-layout.tpl"} + +{* Do not provide a "Open in browser" link *} +{block name="browser"}{/block} +{* No pre-header *} +{block name="pre-header"}{/block} + +{* Subject *} +{block name="email-subject"}{intl d='paypal.mail.default' l="Payment of your order %ref" ref={$order_ref}}{/block} + +{* Title *} +{block name="email-title"}{intl d='paypal.mail.default' l="The payment of your order %ref is confirmed" ref={$order_ref}}{/block} + +{* Content *} +{block name="email-content"} +

    + + {intl l="View this order in your account at %shop_name" shop_name={config key="store_name"}} + +

    +

    {intl d='paypal.email.default' l='Thank you again for your purchase.'}

    +

    {intl d='paypal.email.default' l='The %store_name team.' store_name={config key="store_name"}}

    +{/block} diff --git a/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.txt b/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.txt new file mode 100755 index 00000000..491fe8b2 --- /dev/null +++ b/local/modules/PayPal/templates/email/default/paypal-payment-confirmation.txt @@ -0,0 +1,9 @@ +{intl d='paypal.email.default' l='Dear customer'}, + +{intl d='paypal.email.default' l='This is a confirmation of the payment of your order %ref via Paypal on our shop.' ref=$order_ref} + +{intl d='paypal.email.default' l='Your invoice is now available in your customer account at %url.'} url={config key="url_site"}} + +{intl d='paypal.email.default' l='Thank you again for your purchase.'} + +{intl d='paypal.email.default' l='The %store_name team.' store_name={config key="store_name"}} \ No newline at end of file diff --git a/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.html b/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.html new file mode 100755 index 00000000..43c199bf --- /dev/null +++ b/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.html @@ -0,0 +1,23 @@ +{extends file="email-layout.tpl"} + +{* Do not provide a "Open in browser" link *} +{block name="browser"}{/block} +{* No pre-header *} +{block name="pre-header"}{/block} + +{* Subject *} +{block name="email-subject"}{intl d='paypal.mail.default' l="Payment of your order %ref" ref={$order_ref}}{/block} + +{* Title *} +{block name="email-title"}{intl d='paypal.mail.default' l="The payment of your order %ref is confirmed" ref={$order_ref}}{/block} + +{* Content *} +{block name="email-content"} +

    + + {intl l="View this order in your account at %shop_name" shop_name={config key="store_name"}} + +

    +

    {intl d='paypal.email.default' l='Thank you again for your purchase.'}

    +

    {intl d='paypal.email.default' l='The %store_name team.' store_name={config key="store_name"}}

    +{/block} diff --git a/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.txt b/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.txt new file mode 100755 index 00000000..491fe8b2 --- /dev/null +++ b/local/modules/PayPal/templates/email/default/paypal-recursive-payment-confirmation.txt @@ -0,0 +1,9 @@ +{intl d='paypal.email.default' l='Dear customer'}, + +{intl d='paypal.email.default' l='This is a confirmation of the payment of your order %ref via Paypal on our shop.' ref=$order_ref} + +{intl d='paypal.email.default' l='Your invoice is now available in your customer account at %url.'} url={config key="url_site"}} + +{intl d='paypal.email.default' l='Thank you again for your purchase.'} + +{intl d='paypal.email.default' l='The %store_name team.' store_name={config key="store_name"}} \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/assets/cards-logo.jpg b/local/modules/PayPal/templates/frontOffice/default/assets/cards-logo.jpg new file mode 100644 index 00000000..962e7d36 Binary files /dev/null and b/local/modules/PayPal/templates/frontOffice/default/assets/cards-logo.jpg differ diff --git a/local/modules/PayPal/templates/frontOffice/default/assets/ntimes-cards-logo.png b/local/modules/PayPal/templates/frontOffice/default/assets/ntimes-cards-logo.png new file mode 100644 index 00000000..efef8881 Binary files /dev/null and b/local/modules/PayPal/templates/frontOffice/default/assets/ntimes-cards-logo.png differ diff --git a/local/modules/PayPal/templates/frontOffice/default/assets/paypal-logo.png b/local/modules/PayPal/templates/frontOffice/default/assets/paypal-logo.png new file mode 100644 index 00000000..aab877ab Binary files /dev/null and b/local/modules/PayPal/templates/frontOffice/default/assets/paypal-logo.png differ diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/cart-bottom.html b/local/modules/PayPal/templates/frontOffice/default/paypal/cart-bottom.html new file mode 100644 index 00000000..7c8ef997 --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/cart-bottom.html @@ -0,0 +1,11 @@ +
    + + diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-credit-card.html b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-credit-card.html new file mode 100644 index 00000000..edfd5bbe --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-credit-card.html @@ -0,0 +1,85 @@ +
    + label}checked{/if}/> + + CB / VISA / Mastercard + + +
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-paypal.html b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-paypal.html new file mode 100644 index 00000000..9ef809af --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-paypal.html @@ -0,0 +1,17 @@ +
    + {if $method_paypal_with_in_context} + label}checked{/if}/> + + {else} + label}checked{/if}/> + + {/if} + + +
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-planified-payment.html b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-planified-payment.html new file mode 100644 index 00000000..dccbed58 --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/form/extra-planified-payment.html @@ -0,0 +1,26 @@ +{assign var="methodName" value=$name} +{form_field field='paypal_planified_payment'} + {if count($choices) > 0} +
    + label}checked{/if}/> + + +
    + {/if} +{/form_field} + diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/login-bottom.html b/local/modules/PayPal/templates/frontOffice/default/paypal/login-bottom.html new file mode 100644 index 00000000..5710a61c --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/login-bottom.html @@ -0,0 +1,16 @@ +
    + + + +
    \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom-js.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom-js.html new file mode 100644 index 00000000..cc147150 --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom-js.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom.html new file mode 100644 index 00000000..00d5b4cc --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-delivery-bottom.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-bottom.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-bottom.html new file mode 100644 index 00000000..e6b444a0 --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-bottom.html @@ -0,0 +1,11 @@ + + + diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-js.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-js.html new file mode 100644 index 00000000..98a4a499 --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-js.html @@ -0,0 +1,58 @@ + \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-payment-extra.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-payment-extra.html new file mode 100644 index 00000000..3e394beb --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-invoice-payment-extra.html @@ -0,0 +1,21 @@ +{form name="thelia.order.payment"} + +{/form} \ No newline at end of file diff --git a/local/modules/PayPal/templates/frontOffice/default/paypal/order-placed-additional-payment-info.html b/local/modules/PayPal/templates/frontOffice/default/paypal/order-placed-additional-payment-info.html new file mode 100644 index 00000000..9ce0fb2b --- /dev/null +++ b/local/modules/PayPal/templates/frontOffice/default/paypal/order-placed-additional-payment-info.html @@ -0,0 +1,6 @@ +{loop type="paypal_order" name="paypal_order" id=$placed_order_id limit=1} + {if $paypal_order->getPlanifiedCycle() > 0} + {intl l="Planified payment" d="paypal.fo.default"} :  + {intl l="Payment in %x times every %frequency_interval %frequency" x=$paypal_order->getPlanifiedCycle() frequency_interval=$paypal_order->getPlanifiedFrequencyInterval() frequency="{intl l=$paypal_order->getPlanifiedFrequency() d="paypal.fo.default"}" d="paypal.fo.default"} + {/if} +{/loop} \ No newline at end of file diff --git a/local/modules/PayPal/templates/pdf/default/paypal/after-payment-module.html b/local/modules/PayPal/templates/pdf/default/paypal/after-payment-module.html new file mode 100644 index 00000000..d08b5e8c --- /dev/null +++ b/local/modules/PayPal/templates/pdf/default/paypal/after-payment-module.html @@ -0,0 +1,6 @@ +{loop type="paypal_order" name="paypal_order" id=$order limit=1} + {if $paypal_order->getPlanifiedCycle() > 0} + {intl l="Planified payment" d="paypal.pdf.default"} :  + {intl l="Payment in %x times every %frequency_interval %frequency" x=$paypal_order->getPlanifiedCycle() frequency_interval=$paypal_order->getPlanifiedFrequencyInterval() frequency="{intl l=$paypal_order->getPlanifiedFrequency() d="paypal.pdf.default"}" d="paypal.pdf.default"} + {/if} +{/loop} \ No newline at end of file diff --git a/local/modules/WireTransfer/AdminIncludes/module_configuration.html b/local/modules/WireTransfer/AdminIncludes/module_configuration.html new file mode 100644 index 00000000..0336352d --- /dev/null +++ b/local/modules/WireTransfer/AdminIncludes/module_configuration.html @@ -0,0 +1,75 @@ +{if isset($smarty.get.errmes) && !empty($smarty.get.errmes)} +
    + {$smarty.get.errmes} +
    +{/if} + +
    +
    + +
    +
    + {intl d='wiretransfer.ai' l="Bank account configuration"} +
    +
    + +
    +
    +
    + + {form name="transfer.configure.bic"} + +
    + + {form_hidden_fields form=$form} + + {if $form_error} +
    +
    +
    {$form_error_message}
    +
    +
    + {/if} + + + {form_field form=$form field="name"} +
    + + + +
    + {/form_field} + + {form_field form=$form field="iban"} +
    + + + +
    + {/form_field} + + {form_field form=$form field="bic"} +
    + + + +
    + {/form_field} + +
    + + {intl d='wiretransfer.ai' l='Close'} +
    +
    + {/form} +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/local/modules/WireTransfer/Config/config.xml b/local/modules/WireTransfer/Config/config.xml new file mode 100644 index 00000000..5de54d25 --- /dev/null +++ b/local/modules/WireTransfer/Config/config.xml @@ -0,0 +1,29 @@ + + + + + + + + + +
    + + + + + + + + + + + + + + + + + diff --git a/local/modules/WireTransfer/Config/module.xml b/local/modules/WireTransfer/Config/module.xml new file mode 100644 index 00000000..f0df915b --- /dev/null +++ b/local/modules/WireTransfer/Config/module.xml @@ -0,0 +1,18 @@ + + + WireTransfer\WireTransfer + + Paiement par virement bancaire + + + Wire transfer payment + + 1.2.0 + + Thelia + info@thelia.net + + payment + 2.1.0 + beta + diff --git a/local/modules/WireTransfer/Config/routing.xml b/local/modules/WireTransfer/Config/routing.xml new file mode 100644 index 00000000..892a99cc --- /dev/null +++ b/local/modules/WireTransfer/Config/routing.xml @@ -0,0 +1,9 @@ + + + + + WireTransfer\Controller\ConfigureController::configure + + diff --git a/local/modules/WireTransfer/Config/setup.sql b/local/modules/WireTransfer/Config/setup.sql new file mode 100644 index 00000000..b0f82ef4 --- /dev/null +++ b/local/modules/WireTransfer/Config/setup.sql @@ -0,0 +1,33 @@ +-- --------------------------------------------------------------------- +-- Mail templates for wiretransfer +-- --------------------------------------------------------------------- + +-- First, delete existing entries +SET @var := 0; +SELECT @var := `id` FROM `message` WHERE name="order_confirmation_wiretransfer"; +DELETE FROM `message` WHERE `id`=@var; +-- Try if ON DELETE constraint isn't set +DELETE FROM `message_i18n` WHERE `id`=@var; + +-- Then add new entries +SELECT @max := MAX(`id`) FROM `message`; +SET @max := @max+1; +-- insert message +INSERT INTO `message` (`id`, `name`, `secured`) VALUES + (@max, + 'order_confirmation_wiretransfer', + '0' + ); +-- and mail templates +INSERT INTO `message_i18n` (`id`, `locale`, `title`, `subject`, `text_message`, `html_message`) VALUES + (@max, + 'en_US', + 'Wire transfer confirmation', + 'Payment of order {$order_ref}', 'Dear customer,\r\nThis is a confirmation of the payment of your order {$order_ref} via bank transfert on our shop.\r\nYour invoice is now available in your customer account at {config key="url_site"}\r\nThank you again for your purchase.\r\nThe {config key="store_name"} team.', '\r\n\r\n\r\n \r\n courriel de confirmation de commande de {config key="url_site"} \r\n \r\n\r\n\r\n
    \r\n
    \r\n

    {config key="store_name"}

    \r\n

    The payment of your order is confirmed

    \r\n

    Reference {$order_ref}

    \r\n
    \r\n

    \r\n Your invoice is now available in your customer account on\r\n {config key="store_name"}.\r\n

    \r\n

    Thank you for your order !

    \r\n

    The {config key="store_name"} team.

    \r\n
    \r\n\r\n' + ), + (@max, + 'fr_FR', + 'Confirmation de virement', + 'Paiement de la commande : {$order_ref}', + 'Cher client,\r\nCe message confirme le paiement par virement bancaire de votre commande numero {$order_ref} sur notre boutique.\r\nVotre facture est maintenant disponible dans votre compte client à l''adresse {config key="url_site"}\r\nMerci encore pour votre achat !\r\nL''équipe {config key="store_name"}', '\r\n\r\n\r\n \r\n Confirmation du paiement de votre commande sur {config key="url_site"} \r\n \r\n\r\n\r\n
    \r\n
    \r\n

    {config key="store_name"}

    \r\n

    Confirmation du paiement de votre commande

    \r\n

    N° {$order_ref}

    \r\n
    \r\n

    \r\n Le suivi de votre commande est disponible dans la rubrique mon compte sur\r\n {config key="url_site"}\r\n

    \r\n

    Merci pour votre achat !

    \r\n

    L''équipe {config key="store_name"}

    \r\n
    \r\n\r\n' + ); \ No newline at end of file diff --git a/local/modules/WireTransfer/Constraints/BIC.php b/local/modules/WireTransfer/Constraints/BIC.php new file mode 100644 index 00000000..b961d5e3 --- /dev/null +++ b/local/modules/WireTransfer/Constraints/BIC.php @@ -0,0 +1,36 @@ +. */ +/* */ +/*************************************************************************************/ + + +namespace WireTransfer\Constraints; +use Symfony\Component\Validator\Constraint; + + +/** + * Class BIC + * @package WireTransfer\Constraints + * @author Thelia + */ +class BIC extends Constraint { + public $message = "The BIC value is not valid"; +} \ No newline at end of file diff --git a/local/modules/WireTransfer/Constraints/BICValidator.php b/local/modules/WireTransfer/Constraints/BICValidator.php new file mode 100644 index 00000000..24a41872 --- /dev/null +++ b/local/modules/WireTransfer/Constraints/BICValidator.php @@ -0,0 +1,64 @@ +. */ +/* */ +/*************************************************************************************/ + + +namespace WireTransfer\Constraints; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\ConstraintValidator; +use Thelia\Core\Translation\Translator; + +/** + * Class BICValidator + * @package WireTransfer\Constraints + * @author Thelia + */ +class BICValidator extends ConstraintValidator { + /** + * Checks if the passed value is valid. + * + * @param mixed $value The value that should be validated + * @param Constraint $constraint The constraint for the validation + * + * @api + */ + public function validate($value, Constraint $constraint) + { + if (null === $value || '' === $value) { + return; + } + + $teststring = preg_replace('/\s+/', '', $value); + + if(!preg_match("([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)", $teststring)) { + $this->context->addViolation( + Translator::getInstance()->trans( + $constraint->message + ), + array( + '{{ value }}' => $value + ) + ); + } + } + +} \ No newline at end of file diff --git a/local/modules/WireTransfer/Controller/ConfigureController.php b/local/modules/WireTransfer/Controller/ConfigureController.php new file mode 100644 index 00000000..6a6a5c1b --- /dev/null +++ b/local/modules/WireTransfer/Controller/ConfigureController.php @@ -0,0 +1,99 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace WireTransfer\Controller; + +use Symfony\Component\HttpFoundation\RedirectResponse; +use Thelia\Controller\Admin\BaseAdminController; +use Thelia\Core\Security\AccessManager; +use Thelia\Core\Security\Resource\AdminResources; +use Thelia\Form\Exception\FormValidationException; +use Thelia\Tools\URL; +use WireTransfer\Form\ConfigurationForm; +use WireTransfer\WireTransfer; + +/** + * Class SetTransferConfig + * @package WireTransfer\Controller + * @author Thelia + */ +class ConfigureController extends BaseAdminController +{ + public function configure() + { + if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'WireTransfer', AccessManager::UPDATE)) { + return $response; + } + + // Initialize the potential exception + $ex = null; + + // Create the Form from the request + $configurationForm = new ConfigurationForm($this->getRequest()); + + try { + // Check the form against constraints violations + $form = $this->validateForm($configurationForm, "POST"); + + // Get the form field values + $data = $form->getData(); + + foreach($data as $name => $value) { + WireTransfer::setConfigValue($name, $value); + } + + // Log configuration modification + $this->adminLogAppend( + "wiretransfer.configuration.message", + AccessManager::UPDATE, + sprintf("WireTransfer configuration updated") + ); + + // Everything is OK. + return new RedirectResponse(URL::getInstance()->absoluteUrl('/admin/module/WireTransfer')); + + } catch (FormValidationException $ex) { + // Form cannot be validated. Create the error message using + // the BaseAdminController helper method. + $error_msg = $this->createStandardFormValidationErrorMessage($ex); + } + catch (\Exception $ex) { + // Any other error + $error_msg = $ex->getMessage(); + } + + // At this point, the form has errors, and should be redisplayed. We don not redirect, + // just redisplay the same template. + // Setup the Form error context, to make error information available in the template. + $this->setupFormErrorContext( + $this->getTranslator()->trans("Wire transfer configuration", [], WireTransfer::MESSAGE_DOMAIN), + $error_msg, + $configurationForm, + $ex + ); + + // Do not redirect at this point, or the error context will be lost. + // Just redisplay the current template. + return $this->render('module-configure', array('module_code' => 'WireTransfer')); + } +} diff --git a/local/modules/WireTransfer/Form/ConfigurationForm.php b/local/modules/WireTransfer/Form/ConfigurationForm.php new file mode 100644 index 00000000..a27d8563 --- /dev/null +++ b/local/modules/WireTransfer/Form/ConfigurationForm.php @@ -0,0 +1,99 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace WireTransfer\Form; + +use Symfony\Component\Validator\Constraints\Iban; +use Symfony\Component\Validator\Constraints\NotBlank; +use Thelia\Core\Translation\Translator; +use Thelia\Form\BaseForm; +use WireTransfer\Constraints\BIC; +use WireTransfer\WireTransfer; + +/** + * Class ConfigurationForm + * @package WireTransfer\Form + * @author Thelia + */ +class ConfigurationForm extends BaseForm +{ + protected function trans($str, $params = []) + { + return Translator::getInstance()->trans($str, $params, WireTransfer::MESSAGE_DOMAIN); + } + + protected function buildForm() + { + $this->formBuilder + ->add( + 'name', + 'text', + array( + 'constraints' => array(new NotBlank()), + 'required' => true, + 'label' => Translator::getInstance()->trans("Account holder name", [], WireTransfer::MESSAGE_DOMAIN), + 'data' => WireTransfer::getConfigValue('name', ''), + 'label_attr' => array( + 'for' => 'namefield' + ) + ) + ) + ->add( + 'iban', + 'text', + array( + 'constraints' => array(new NotBlank(), new Iban()), + 'required' => true, + 'label' => Translator::getInstance()->trans("IBAN (International Bank Account Number)", [], WireTransfer::MESSAGE_DOMAIN), + 'data' => WireTransfer::getConfigValue('iban', ''), + 'label_attr' => array( + 'for' => 'ibanfield' + ) + ) + ) + ->add( + 'bic', + 'text', + array( + 'constraints' => array(new NotBlank(), new BIC()), + 'required' => true, + 'label' => Translator::getInstance()->trans("BIC (Bank Identifier Code)", [], WireTransfer::MESSAGE_DOMAIN), + 'data' => WireTransfer::getConfigValue('bic', ''), + 'label_attr' => array( + 'for' => 'bicfield' + ) + ) + ) + ; + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return "configurewiretransfer"; + } + +} diff --git a/local/modules/WireTransfer/Hook/HookManager.php b/local/modules/WireTransfer/Hook/HookManager.php new file mode 100644 index 00000000..610dc896 --- /dev/null +++ b/local/modules/WireTransfer/Hook/HookManager.php @@ -0,0 +1,34 @@ + + */ +class HookManager extends BaseHook { + + public function onAdditionalPaymentInfo(HookRenderEvent $event) + { + $content = $this->render("order-placed.additional-payment-info.html", [ + 'placed_order_id' => $event->getArgument('placed_order_id') + ]); + + $event->add($content); + } +} \ No newline at end of file diff --git a/local/modules/WireTransfer/I18n/AdminIncludes/en_US.php b/local/modules/WireTransfer/I18n/AdminIncludes/en_US.php new file mode 100644 index 00000000..9b575bc2 --- /dev/null +++ b/local/modules/WireTransfer/I18n/AdminIncludes/en_US.php @@ -0,0 +1,7 @@ + 'Bank account configuration', + 'Close' => 'Close', + 'Save changes' => 'Save changes', +); diff --git a/local/modules/WireTransfer/I18n/AdminIncludes/fr_FR.php b/local/modules/WireTransfer/I18n/AdminIncludes/fr_FR.php new file mode 100644 index 00000000..c925e967 --- /dev/null +++ b/local/modules/WireTransfer/I18n/AdminIncludes/fr_FR.php @@ -0,0 +1,7 @@ + 'Informations bancaires', + 'Close' => 'Fermer', + 'Save changes' => 'Enregistrer', +); diff --git a/local/modules/WireTransfer/I18n/en_US.php b/local/modules/WireTransfer/I18n/en_US.php new file mode 100644 index 00000000..ea2c8221 --- /dev/null +++ b/local/modules/WireTransfer/I18n/en_US.php @@ -0,0 +1,9 @@ + 'Account holder name', + 'BIC (Bank Identifier Code)' => 'BIC (Bank Identifier Code)', + 'Bank information parameters have not been defined.' => 'Bank information parameters have not been defined.', + 'IBAN (International Bank Account Number)' => 'IBAN (International Bank Account Number)', + 'Wire transfer configuration' => 'Wire transfer configuration', +); diff --git a/local/modules/WireTransfer/I18n/fr_FR.php b/local/modules/WireTransfer/I18n/fr_FR.php new file mode 100644 index 00000000..b9c2d056 --- /dev/null +++ b/local/modules/WireTransfer/I18n/fr_FR.php @@ -0,0 +1,9 @@ + 'Titulaire du compte', + 'BIC (Bank Identifier Code)' => 'BIC (Bank Identifier Code)', + 'Bank information parameters have not been defined.' => 'Les paramètres bancaires n\'ont pas été définis', + 'IBAN (International Bank Account Number)' => 'IBAN (International Bank Account Number)', + 'Wire transfer configuration' => 'Informations de virement', +); diff --git a/local/modules/WireTransfer/I18n/frontOffice/default/en_US.php b/local/modules/WireTransfer/I18n/frontOffice/default/en_US.php new file mode 100644 index 00000000..14f7de6a --- /dev/null +++ b/local/modules/WireTransfer/I18n/frontOffice/default/en_US.php @@ -0,0 +1,9 @@ + 'Account holder name', + 'BIC code' => 'BIC code', + 'IBAN' => 'IBAN', + 'This order has not been paid using a bank transfert' => 'This order has not been paid using a bank transfert', + 'You may now do a transfer to this bank account: ' => 'You may now do a transfer to this bank account: ', +); diff --git a/local/modules/WireTransfer/I18n/frontOffice/default/fr_FR.php b/local/modules/WireTransfer/I18n/frontOffice/default/fr_FR.php new file mode 100644 index 00000000..3979f603 --- /dev/null +++ b/local/modules/WireTransfer/I18n/frontOffice/default/fr_FR.php @@ -0,0 +1,9 @@ + 'Titulaire du compte', + 'BIC code' => 'Code BIC', + 'IBAN' => 'IBAN', + 'This order has not been paid using a bank transfert' => 'Cette commande n\'a pas été payée par virement bancaire.', + 'You may now do a transfer to this bank account: ' => 'Merci de virer le montant de votre commande sur le compte suivant :', +); diff --git a/local/modules/WireTransfer/LICENSE.txt b/local/modules/WireTransfer/LICENSE.txt new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/local/modules/WireTransfer/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/local/modules/WireTransfer/Listener/SendPaymentConfirmationEmail.php b/local/modules/WireTransfer/Listener/SendPaymentConfirmationEmail.php new file mode 100644 index 00000000..97cb5bdc --- /dev/null +++ b/local/modules/WireTransfer/Listener/SendPaymentConfirmationEmail.php @@ -0,0 +1,121 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace WireTransfer\Listener; + +use WireTransfer\WireTransfer; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Thelia\Action\BaseAction; +use Thelia\Core\Event\Order\OrderEvent; +use Thelia\Core\Event\TheliaEvents; +use Thelia\Mailer\MailerFactory; +use Thelia\Core\Template\ParserInterface; +use Thelia\Model\ConfigQuery; +use Thelia\Model\MessageQuery; +/** + * Class SendEMail + * @package IciRelais\Listener + * @author Thelia + */ +class SendPaymentConfirmationEmail extends BaseAction implements EventSubscriberInterface +{ + + /** + * @var MailerFactory + */ + protected $mailer; + /** + * @var ParserInterface + */ + protected $parser; + + public function __construct(ParserInterface $parser,MailerFactory $mailer) + { + $this->parser = $parser; + $this->mailer = $mailer; + } + + /** + * @return \Thelia\Mailer\MailerFactory + */ + public function getMailer() + { + return $this->mailer; + } + + /* + * @params OrderEvent $order + * + * Checks if order delivery module is icirelais and if order new status is sent, send an email to the customer. + */ + public function sendConfirmationEmail(OrderEvent $event) + { + if ($event->getOrder()->getPaymentModuleId() === WireTransfer::getModuleId()) { + + if ($event->getOrder()->isPaid()) { + $contact_email = ConfigQuery::getStoreEmail(); + + if ($contact_email) { + $message = MessageQuery::create() + ->filterByName('order_confirmation_wiretransfer') + ->findOne(); + + if (null === $message) { + throw new \Exception("Failed to load message 'order_confirmation_wiretransfer'."); + } + + $order = $event->getOrder(); + $customer = $order->getCustomer(); + + $this->parser->assign('order_id', $order->getId()); + $this->parser->assign('order_ref', $order->getRef()); + + $message + ->setLocale($order->getLang()->getLocale()); + + $instance = \Swift_Message::newInstance() + ->addTo($customer->getEmail(), $customer->getFirstname()." ".$customer->getLastname()) + ->addFrom($contact_email, ConfigQuery::getStoreName()) + ; + + // Build subject and body + $message->buildMessage($this->parser, $instance); + + $this->getMailer()->send($instance); + } + } + } + + } + + /** + * @inheritdoc + */ + public static function getSubscribedEvents() + { + return array( + TheliaEvents::ORDER_UPDATE_STATUS => array("sendConfirmationEmail", 128) + ); + } + +} diff --git a/local/modules/WireTransfer/Loop/GetBankInformation.php b/local/modules/WireTransfer/Loop/GetBankInformation.php new file mode 100644 index 00000000..bc4ad242 --- /dev/null +++ b/local/modules/WireTransfer/Loop/GetBankInformation.php @@ -0,0 +1,84 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace WireTransfer\Loop; + +use Thelia\Core\Template\Element\ArraySearchLoopInterface; +use Thelia\Core\Template\Element\BaseLoop; +use Thelia\Core\Template\Element\LoopResult; +use Thelia\Core\Template\Element\LoopResultRow; +use Thelia\Core\Template\Loop\Argument\Argument; +use Thelia\Core\Template\Loop\Argument\ArgumentCollection; +use Thelia\Model\Base\OrderQuery; +use WireTransfer\WireTransfer; + +/** + * Class GetBankInformation + * @package WireTransfer\Loop + * @author Thelia + */ +class GetBankInformation extends BaseLoop implements ArraySearchLoopInterface +{ + /** + * @param LoopResult $loopResult + * + * @return LoopResult + */ + public function parseResults(LoopResult $loopResult) + { + $order = OrderQuery::create()->findPk($this->getOrderId()); + + if ($order !== null || $order->getPaymentModuleId() === WireTransfer::getModuleId() ) { + + $loopResultRow = new LoopResultRow(); + + $loopResultRow + ->set("BIC" , WireTransfer::getConfigValue('bic')) + ->set("IBAN" , WireTransfer::getConfigValue('iban')) + ->set("ACCOUNT_HOLDER_NAME", WireTransfer::getConfigValue('name')) + ; + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } + + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntTypeArgument("order_id", null, true, false) + ); + } + + /** + * this method returns an array + * + * @return array + */ + public function buildArray() + { + // Return an array containing one element, so that parseResults() will be called one time. + return [ 'one-element' ]; + } +} diff --git a/local/modules/WireTransfer/README.md b/local/modules/WireTransfer/README.md new file mode 100644 index 00000000..832c4bf5 --- /dev/null +++ b/local/modules/WireTransfer/README.md @@ -0,0 +1,132 @@ +Wire Tranfer Payment Module +============================ + +Authors: Thelia , Franck Allimant, + +Contents +-------- + +fr_FR: + +1. Installation +2. Utilisation +3. Boucle +4. Intégration + +en_US: + +1. Install notes +2. How to use +3. Loop +4. Integration + + +fr_FR +----- + +Ce module permet à vos clients de payer leurs commandes par virement banciare. + +Il s'agit d'une amélioration du module PaymentTransfer. + +### Installation + +Pour installer le module de paiement par virement, téléchargez l'archive et décompressez la dans ```/local/modules``` + +### Utilisation + +Tout d'abord, activez le module dans le Back-Office, onglet "Modules", puis cliquez sur "Configurer" sur la ligne du module. + +Via la page de configuration, entrez vos informations bancaires et enregistrez. + +### Email de notification de paiement + +Un email de notification de paiement est envoyé à vos clients lorsque vous avez bien reçu leur virement, et que leur commande passe à l'état payé. Le contenu de ce mail est configurable dans le back-office -> Configuration -> Template e-mail -> Confirmation de virement + +### Boucle + +1. Le type de la boucle est `wiretransfer.get.info`. Cette boucle permet de récupérer les informations bancaires. + + - Arguments: + 1. order_id | obligatoire | id de la commande + - Sorties: + 1. $ACCOUNT_HOLDER_NAME: nom du titulaire du compte + 2. $IBAN: Numéro IBAN + 3. $BIC: code BIC + + - Utilisation: + ``` + {loop name="wiretransfer.infos" type="wiretransfer.get.info" order_id=$placed_order_id} +
    {intl d='wiretransfer' l="Account holder name"} :
    +
    {$ACCOUNT_HOLDER_NAME}
    + +
    {intl d='wiretransfer' l="IBAN"} :
    +
    {$IBAN}
    + +
    {intl d='wiretransfer' l="BIC code"} :
    +
    {$BIC}
    + {/loop} + ``` + + +### Intégration + + +Les informations bancaires du commerçant sont affichées sur la page `order-placed.html` du template frontOffice standard, +en utilisant le hook `order-placed.additional-payment-info`. + +en_US +----- + +This module offers wire transfer payment to your customers. + +This is an improvement of the TranferPayment module. + +### Install notes + +To install the wire transfer payment module, download the archive and uncompress it in ```/local/modules``` + +### Usage + +You first need to activate the module in the Back-Office, tab "Modules". Then click on "Configure" on the line of the module. + +Using module's the configuration page, enter you Bank account information and save. + + +### Payment notification e-mail + +A notification email is sent to your customers when you've received their wire transfer, and switcher the order to the "paid" status. + +The content of this e-mail could be configured in the back-office -> Le contenu de ce mail est configurable dans le back-office -> Configuration -> Mailing templates -> Wire transfer confirmation + + +### Loop + +1. The loop type is `wiretransfer.get.info`. This loop returns the bank information. + + - Arguments: + 1. order_id | mandatory | id of the order + + - Output: + 1. $ACCOUNT_HOLDER_NAME: name of the bank account holder + 2. $IBAN: IBAN number + 3. $BIC: BIC code + + - Usage: + ``` + {loop name="wiretransfer.infos" type="wiretransfer.get.info" order_id=$placed_order_id} +
    {intl d='wiretransfer' l="Account holder name"} :
    +
    {$ACCOUNT_HOLDER_NAME}
    + +
    {intl d='wiretransfer' l="IBAN"} :
    +
    {$IBAN}
    + +
    {intl d='wiretransfer' l="BIC code"} :
    +
    {$BIC}
    + {/loop} + ``` + + +### Integration + +The bank account information are displayed in `order-placed.html` file of the default front office template, +using the `order-placed.additional-payment-info` hook. \ No newline at end of file diff --git a/local/modules/WireTransfer/WireTransfer.php b/local/modules/WireTransfer/WireTransfer.php new file mode 100644 index 00000000..4b339897 --- /dev/null +++ b/local/modules/WireTransfer/WireTransfer.php @@ -0,0 +1,111 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace WireTransfer; + +use Propel\Runtime\Connection\ConnectionInterface; +use Thelia\Core\Translation\Translator; +use Thelia\Install\Database; +use Thelia\Log\Tlog; +use Thelia\Model\MessageQuery; +use Thelia\Model\Order; +use Thelia\Module\AbstractPaymentModule; + +/** + * Class WireTransfer + * @package WireTransfer + * author Thelia + */ +class WireTransfer extends AbstractPaymentModule +{ + const MESSAGE_DOMAIN = 'wiretransfer'; + + /** + * @param Order $order + */ + public function pay(Order $order) + { + // Nothing special to do. + } + + /** + * @return boolean true if all parameters have been entered. + */ + public function isValidPayment() + { + // Check that all parameters have been entered. + $valid = + $this->getConfigValue('name', '') != '' + && + $this->getConfigValue('bic', '') != '' + && + $this->getConfigValue('iban', '') != '' + ; + + if (! $valid) { + Tlog::getInstance()->addError( + Translator::getInstance()->trans( + "Bank information parameters have not been defined.", [], self::MESSAGE_DOMAIN + ) + ); + } + + return $valid; + } + + public function install(ConnectionInterface $con = null) + { + $database = new Database($con->getWrappedConnection()); + + // Insert email message + $database->insertSql(null, array(__DIR__ . "/Config/setup.sql")); + + /* insert the images from image folder if not already done */ + $moduleModel = $this->getModuleModel(); + + if (! $moduleModel->isModuleImageDeployed($con)) { + $this->deployImageFolder($moduleModel, sprintf('%s/images', __DIR__), $con); + } + } + + public function destroy(ConnectionInterface $con = null, $deleteModuleData = false) + { + // Delete our message + if (null !== $message = MessageQuery::create()->findOneByName('order_confirmation_wiretransfer')) { + $message->delete($con); + } + + parent::destroy($con, $deleteModuleData); + } + + /** + * if you want, you can manage stock in your module instead of order process. + * Return false to decrease the stock when order status switch to pay + * + * @return bool + */ + public function manageStockOnCreation() + { + return false; + } +} diff --git a/local/modules/WireTransfer/composer.json b/local/modules/WireTransfer/composer.json new file mode 100644 index 00000000..6eeb2c21 --- /dev/null +++ b/local/modules/WireTransfer/composer.json @@ -0,0 +1,11 @@ +{ + "name": "thelia/wire-transfer-module", + "license": "LGPL-3.0+", + "type": "thelia-module", + "require": { + "thelia/installer": "~1.1" + }, + "extra": { + "installer-name": "WireTransfer" + } +} diff --git a/local/modules/WireTransfer/images/logo.png b/local/modules/WireTransfer/images/logo.png new file mode 100644 index 00000000..c131327d Binary files /dev/null and b/local/modules/WireTransfer/images/logo.png differ diff --git a/local/modules/WireTransfer/templates/frontOffice/default/order-placed.additional-payment-info.html b/local/modules/WireTransfer/templates/frontOffice/default/order-placed.additional-payment-info.html new file mode 100644 index 00000000..7b22bee2 --- /dev/null +++ b/local/modules/WireTransfer/templates/frontOffice/default/order-placed.additional-payment-info.html @@ -0,0 +1,20 @@ +{ifloop rel="wiretransfer.infos"} +

    {intl d='wiretransfer.fo.default' l="You may now do a transfer to this bank account: "}

    +
    + {loop name="wiretransfer.infos" type="wiretransfer.get.info" order_id=$placed_order_id} +
    {intl d='wiretransfer.fo.default' l="Account holder name"} :
    +
    {$ACCOUNT_HOLDER_NAME}
    + +
    {intl d='wiretransfer.fo.default' l="IBAN"} :
    +
    {$IBAN}
    + +
    {intl d='wiretransfer.fo.default' l="BIC code"} :
    +
    {$BIC}
    + {/loop} +
    +{/ifloop} +{elseloop rel="wiretransfer.infos"} +
    + {intl d='wiretransfer.fo.default' l="This order has not been paid using a bank transfert"} +
    +{/elseloop} diff --git a/templates/frontOffice/aomc/assets/dist/css/thelia.min.css b/templates/frontOffice/aomc/assets/dist/css/thelia.min.css index dc6c0f04..fb8a3619 100644 --- a/templates/frontOffice/aomc/assets/dist/css/thelia.min.css +++ b/templates/frontOffice/aomc/assets/dist/css/thelia.min.css @@ -2,7 +2,7 @@ * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#f49a17;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#f49a17}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#f49a17}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}legend,pre{color:#7a7a7a}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#f49a17;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#f49a17;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#f49a17;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#f49a17;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#f49a17;background-color:#ccc;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#f49a17}.btn-primary{color:#fff;background-color:#f49a17;border-color:#f49a17}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#f49a17;border-color:#f49a17}.btn-primary .badge{color:#f49a17;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#f49a17}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#f49a17}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.media-object.img-thumbnail,.nav>li>a>img{max-width:none}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#f49a17}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#f49a17}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#f49a17;border-color:#f49a17;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#f49a17}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#f49a17;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#f49a17}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#f49a17;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#f49a17;border-color:#f49a17}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#f49a17}.panel-primary>.panel-heading{color:#fff;background-color:#f49a17;border-color:#f49a17}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f49a17}.panel-primary>.panel-heading .badge{color:#f49a17;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f49a17}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.cart-warning:before,.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}#product #product-gallery #product-thumbnails .carousel-control,.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-success,.open>.dropdown-toggle.btn-warning{background-image:none}.checkbox-inline,.glyphicon,.img-thumbnail,.list-inline>li,.radio-inline,label{display:inline-block}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#545776;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#545776}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#545776}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#7a7a7a;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;color:#7a7a7a;border-bottom:1px solid transparent}label{max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.btn,.caret{display:inline-block;vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{margin-bottom:0;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#545776;text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#545776;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#545776;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#545776;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#545776;background-color:#ccc;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#545776}.btn-primary{color:#fff;background-color:#545776;border-color:#545776}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#545776;border-color:#545776}.btn-primary .badge{color:#545776;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#545776}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#545776}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#545776}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#545776}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#545776}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.close,.list-group-item>.badge,.pager .next>a,.pager .next>span{float:right}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#545776;border-color:#545776;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#545776}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#545776;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#545776}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#545776;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#545776;border-color:#545776}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#545776}.panel-primary>.panel-heading{color:#fff;background-color:#545776;border-color:#545776}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#545776}.panel-primary>.panel-heading .badge{color:#545776;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#545776}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{background-image:none;display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#f49a17}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#f49a17;cursor:default;display:inherit;pointer-events:none}.breadcrumb>li+li:before,.js .dropdown-toggle:after{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}.price{color:#f49a17;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #f9c478}.btn-primary:focus,.btn-primary:hover{background-color:#f49a17;color:#b66f09}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#f49a17;border:1px solid #f49a17;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#f49a17}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#f49a17;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#f49a17;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#f49a17}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#f49a17}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#f49a17;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#f49a17;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;display:block;font-weight:400;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#f49a17;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}.availability .in-stock .out,.availability .out-of-stock .in{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px;font-weight:100}.filter .filter-content .checkbox label,.filter .filter-content .radio label{font-weight:100}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#f49a17;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#f49a17;background-color:rgba(244,154,23,.4)}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.active:after{background:#f49a17;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#f49a17}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#f49a17;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#f49a17}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#f49a17;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #f49a17;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#f49a17;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#f49a17;border-color:#f49a17;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#f49a17;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#f49a17;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#f49a17;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#f49a17}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776;color:#fff}a:focus,a:hover{color:#343649} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#545776}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#545776;cursor:default;display:inherit;pointer-events:none}.price{color:#545776;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #545776}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#545776;border:1px solid #545776;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#545776}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#545776;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#545776;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#545776}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#545776}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#545776;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#545776;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;font-weight:400;display:block;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#545776;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.availability .in-stock .out,.availability .out-of-stock .in,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.filter .filter-content .checkbox label,.filter .filter-content .radio label,.filter .filter-heading,.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#545776;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#545776}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#545776;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#545776;color:#fff}.navbar .navbar-nav>.active:after{background:#545776;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#545776}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#545776;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#545776}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#545776;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #545776;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#545776;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#545776;border-color:#545776;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#545776;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#545776}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#545776;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#545776;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#545776}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff}a:focus,a:hover{color:#343649}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}.overlay:before{background-color:rgba(84,87,118,.4)}.btn-primary:focus,.btn-primary:hover{background-color:#fff;border-color:#545776;color:#545776} \ No newline at end of file diff --git a/templates/frontOffice/aomc/assets/src/css/thelia.css b/templates/frontOffice/aomc/assets/src/css/thelia.css index 57997195..f090c1bf 100644 --- a/templates/frontOffice/aomc/assets/src/css/thelia.css +++ b/templates/frontOffice/aomc/assets/src/css/thelia.css @@ -1083,7 +1083,7 @@ textarea { line-height: inherit; } a { - color: #f49a17; + color: #545776; text-decoration: none; } a:hover, @@ -1322,7 +1322,7 @@ mark, color: #e5e5e5; } .text-primary { - color: #f49a17; + color: #545776; } a.text-primary:hover, a.text-primary:focus { @@ -1358,7 +1358,7 @@ a.text-danger:focus { } .bg-primary { color: #fff; - background-color: #f49a17; + background-color: #545776; } a.bg-primary:hover, a.bg-primary:focus { @@ -3005,7 +3005,7 @@ select[multiple].input-lg { .btn:hover, .btn:focus, .btn.focus { - color: #f49a17; + color: #545776; text-decoration: none; } .btn:active, @@ -3027,25 +3027,25 @@ fieldset[disabled] a.btn { pointer-events: none; } .btn-default { - color: #f49a17; + color: #545776; background-color: #f7f7f7; border-color: #ccc; } .btn-default:focus, .btn-default.focus { - color: #f49a17; + color: #545776; background-color: #dedede; border-color: #8c8c8c; } .btn-default:hover { - color: #f49a17; + color: #545776; background-color: #dedede; border-color: #adadad; } .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { - color: #f49a17; + color: #545776; background-color: #dedede; border-color: #adadad; } @@ -3058,7 +3058,7 @@ fieldset[disabled] a.btn { .btn-default:active.focus, .btn-default.active.focus, .open > .dropdown-toggle.btn-default.focus { - color: #f49a17; + color: #545776; background-color: #cccccc; border-color: #8c8c8c; } @@ -3081,12 +3081,12 @@ fieldset[disabled] .btn-default.focus { } .btn-default .badge { color: #f7f7f7; - background-color: #f49a17; + background-color: #545776; } .btn-primary { color: #fff; - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; } .btn-primary:focus, .btn-primary.focus { @@ -3133,11 +3133,11 @@ fieldset[disabled] .btn-primary:focus, .btn-primary.disabled.focus, .btn-primary[disabled].focus, fieldset[disabled] .btn-primary.focus { - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; } .btn-primary .badge { - color: #f49a17; + color: #545776; background-color: #fff; } .btn-success { @@ -3369,7 +3369,7 @@ fieldset[disabled] .btn-danger.focus { background-color: #fff; } .btn-link { - color: #f49a17; + color: #545776; font-weight: normal; border-radius: 0; } @@ -3529,7 +3529,7 @@ tbody.collapse.in { color: #fff; text-decoration: none; outline: 0; - background-color: #f49a17; + background-color: #545776; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, @@ -3961,7 +3961,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav .open > a:hover, .nav .open > a:focus { background-color: #eee; - border-color: #f49a17; + border-color: #545776; } .nav .nav-divider { height: 1px; @@ -4054,7 +4054,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #fff; - background-color: #f49a17; + background-color: #545776; } .nav-stacked > li { float: none; @@ -4467,13 +4467,13 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #fff; - background-color: #f49a17; + background-color: #545776; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #fff; - background-color: #f49a17; + background-color: #545776; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, @@ -4498,7 +4498,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { - background-color: #f49a17; + background-color: #545776; color: #fff; } @media (max-width: 991px) { @@ -4508,13 +4508,13 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #fff; - background-color: #f49a17; + background-color: #545776; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #fff; - background-color: #f49a17; + background-color: #545776; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, @@ -4678,7 +4678,7 @@ fieldset[disabled] .navbar-inverse .btn-link:focus { padding: 6px 12px; line-height: 1.42857143; text-decoration: none; - color: #f49a17; + color: #545776; background-color: #f9f9f9; border: 1px solid #ddd; margin-left: -1px; @@ -4711,8 +4711,8 @@ fieldset[disabled] .navbar-inverse .btn-link:focus { .pagination > .active > span:focus { z-index: 3; color: #fff; - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; cursor: default; } .pagination > .disabled > span, @@ -4829,7 +4829,7 @@ a.label:focus { background-color: #cccccc; } .label-primary { - background-color: #f49a17; + background-color: #545776; } .label-primary[href]:hover, .label-primary[href]:focus { @@ -4897,7 +4897,7 @@ a.badge:focus { } .list-group-item.active > .badge, .nav-pills > .active > a > .badge { - color: #f49a17; + color: #545776; background-color: #fff; } .list-group-item > .badge { @@ -4970,7 +4970,7 @@ a.badge:focus { a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active { - border-color: #f49a17; + border-color: #545776; } .thumbnail .caption { padding: 9px; @@ -5075,7 +5075,7 @@ a.thumbnail.active { line-height: 20px; color: #fff; text-align: center; - background-color: #f49a17; + background-color: #545776; box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); transition: width 0.6s ease; } @@ -5223,8 +5223,8 @@ button.list-group-item { .list-group-item.active:focus { z-index: 2; color: #fff; - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; } .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, @@ -5619,22 +5619,22 @@ button.list-group-item-danger.active:focus { border-bottom-color: #f5f5f5; } .panel-primary { - border-color: #f49a17; + border-color: #545776; } .panel-primary > .panel-heading { color: #fff; - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; } .panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #f49a17; + border-top-color: #545776; } .panel-primary > .panel-heading .badge { - color: #f49a17; + color: #545776; background-color: #fff; } .panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #f49a17; + border-bottom-color: #545776; } .panel-success { border-color: #d6e9c6; @@ -8977,7 +8977,7 @@ header .header .language-container .currency-switch .select { .checkout-progress .btn-step:active, .checkout-progress .btn-step.active { color: #fff; - background: #f49a17; + background: #545776; } .checkout-progress .btn-step:hover .step-nb, .checkout-progress .btn-step:focus .step-nb, @@ -8986,13 +8986,13 @@ header .header .language-container .currency-switch .select { border-right: 1px solid #fff; } .checkout-progress .btn-step.active { - background: #f49a17; + background: #545776; cursor: default; display: inherit; pointer-events: none; } .price { - color: #f49a17; + color: #545776; font-size: 20px; font-weight: bold; font-style: italic; @@ -9066,11 +9066,11 @@ a { } .btn-primary { font-style: italic; - border-left: 3px solid #f9c478; + border-left: 3px solid #545776; } .btn-primary:hover, .btn-primary:focus { - background-color: #f49a17; + background-color: #545776; color: #b66f09; } .btn-default { @@ -9243,8 +9243,8 @@ a { } @media (min-width: 992px) { .navbar .list-subnav { - background-color: #f49a17; - border: 1px solid #f49a17; + background-color: #545776; + border: 1px solid #545776; border-radius: 0; box-shadow: none; } @@ -9254,14 +9254,14 @@ a { } .navbar .list-subnav > li > a:hover, .navbar .list-subnav > li > a:focus { - color: #f49a17; + color: #545776; background-color: #fff; } .navbar .list-subnav > .active > a, .navbar .list-subnav > .active > a:hover, .navbar .list-subnav > .active > a:focus { background-color: #fff; - color: #f49a17; + color: #545776; } } .navbar .full-width .dropdown-menu .dropdown-content { @@ -9288,7 +9288,7 @@ a { padding: 0; } #account .panel-heading .panel-title > a { - background: #f49a17; + background: #545776; color: #fff; display: block; padding: 12px 15px; @@ -9300,7 +9300,7 @@ a { } #account .panel-heading .panel-title > a.collapsed:hover, #account .panel-heading .panel-title > a.collapsed:focus { - background: #f49a17; + background: #545776; color: #fff; } #account .panel-body { @@ -9358,7 +9358,7 @@ a { } .table-order thead th.subprice, .table-cart thead th.subprice { - color: #f49a17; + color: #545776; } .table-order tbody td.price, .table-cart tbody td.price, @@ -9383,7 +9383,7 @@ a { } .table-order tbody td.subprice .price, .table-cart tbody td.subprice .price { - color: #f49a17; + color: #545776; } .table-order tfoot th, .table-cart tfoot th, @@ -9490,7 +9490,7 @@ a { list-style: none; } .block .block-content .block-subtitle { - color: #f49a17; + color: #545776; font-size: 16px; font-weight: 300; margin: 0 0 6px 0; @@ -9516,7 +9516,7 @@ a { -ms-transform: translate(0, 0); transform: translate(0, 0); content: "\f054"; - color: #f49a17; + color: #545776; margin-left: -15px; margin-right: 5px; } @@ -9560,7 +9560,7 @@ a { background-color: #f7f7f7; } .block-nav .block-content li a.accordion-toggle:after { - color: #f49a17; + color: #545776; display: inline-block; font: normal normal normal 14px/1 FontAwesome; font-size: inherit; @@ -9905,7 +9905,7 @@ a.label-delivered:focus { padding: 10px 0 100px; } .page-404 #main-label { - color: #f49a17; + color: #545776; font-size: 9em; font-weight: bold; text-align: center; @@ -9992,7 +9992,7 @@ label { .overlay:before { content: ''; overflow: visible; - background-color: #f49a17; + background-color: #545776; background-color: rgba(244, 154, 23, 0.4); } .overlay:after { @@ -10044,7 +10044,7 @@ label { -ms-transform: translate(0, 0); transform: translate(0, 0); content: "\f007"; - color: #f49a17; + color: #545776; font-size: 19px; line-height: 0; margin-right: .5em; @@ -10052,19 +10052,19 @@ label { .navbar li > a.cart:hover > .badge, .navbar li > a.cart:focus > .badge { background-color: #fff; - color: #f49a17; + color: #545776; } .navbar li.cart-not-empty > a.cart { - background-color: #f49a17; + background-color: #545776; color: #fff; } .navbar li.cart-not-empty > a.cart > .badge { background-color: #fff; - color: #f49a17; + color: #545776; } .navbar li.cart-not-empty > a.cart:hover, .navbar li.cart-not-empty > a.cart:focus { - background-color: #f49a17; + background-color: #545776; color: #fff; } .navbar li.cart-not-empty > a.cart:before { @@ -10096,11 +10096,11 @@ label { } .navbar .navbar-nav > .active > a:hover, .navbar .navbar-nav > .active > a:focus { - background-color: #f49a17; + background-color: #545776; color: #fff; } .navbar .navbar-nav > .active:after { - background: #f49a17; + background: #545776; content: ""; display: block; position: absolute; @@ -10112,7 +10112,7 @@ label { .navbar .navbar-nav > .open > a, .navbar .navbar-nav > .open > a:hover, .navbar .navbar-nav > .open > a:focus { - background-color: #f49a17; + background-color: #545776; color: #fff; } .navbar .navbar-nav > .open > a:before, @@ -10200,7 +10200,7 @@ td.product .name > a:focus, transform: translate(0, 40%); } #products-new .products-grid .item > article { - border-bottom: 4px solid #f49a17; + border-bottom: 4px solid #545776; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; overflow: hidden; @@ -10216,7 +10216,7 @@ td.product .name > a:focus, } #products-new .products-grid .item > article .product-info:hover, #products-new .products-grid .item > article .product-info:focus { - background-color: #f49a17; + background-color: #545776; } #products-new .products-grid .item > article .product-info .name { min-height: 40px; @@ -10279,7 +10279,7 @@ td.product .name > a:focus, } #products-upsell .products-heading h3 { background: #fff; - color: #f49a17; + color: #545776; padding-right: 15px; position: absolute; top: -24px; @@ -10402,7 +10402,7 @@ td.product .name > a:focus, font-size: 21px; } #product-details .product-promo .sale-saving { - color: #f49a17; + color: #545776; } #product-details .product-promo .sale-saving:before { display: inline-block; @@ -10635,7 +10635,7 @@ td.product .name > a:focus, margin-left: 2px; } .block.block-contact .block-content ul > li:before { - color: #f49a17; + color: #545776; float: left; line-height: 1; margin-right: .4em; @@ -10682,7 +10682,7 @@ td.product .name > a:focus, color: #b66f09; } #categories.block-nav .block-content li .accordion-toggle:after { - border: 1px solid #f49a17; + border: 1px solid #545776; border-radius: 10px; line-height: 17px; text-align: center; @@ -10700,7 +10700,7 @@ td.product .name > a:focus, display: none; } .toolbar .amount { - color: #f49a17; + color: #545776; font-size: 22px; font-weight: normal; } @@ -10737,8 +10737,8 @@ td.product .name > a:focus, .pagination > li > span:hover:active, .pagination > li > a:focus:active, .pagination > li > span:focus:active { - background-color: #f49a17; - border-color: #f49a17; + background-color: #545776; + border-color: #545776; color: #fff; } .pagination > li:first-child > a, @@ -10817,7 +10817,7 @@ td.product .name > a:focus, -ms-transform: translate(0, 0); transform: translate(0, 0); content: "\f077"; - color: #f49a17; + color: #545776; display: block; font-size: 1.5em; line-height: 0; @@ -10835,7 +10835,7 @@ td.product .name > a:focus, padding: 20px 40px; } #payment-success.panel .panel-body > h3 { - color: #f49a17; + color: #545776; } #account .panel { box-shadow: none; @@ -10867,7 +10867,7 @@ td.product .name > a:focus, #account-info .list-info .mobile:before, #account-info .list-info .tel:before, #account-info .list-info .email:before { - color: #f49a17; + color: #545776; line-height: 1; margin-right: .4em; vertical-align: middle; @@ -10914,7 +10914,7 @@ td.product .name > a:focus, padding: 0; } #account-info .group-btn a > i { - color: #f49a17; + color: #545776; font-size: 20px; line-height: 1; margin-right: .3em; @@ -10981,7 +10981,7 @@ td.product .name > a:focus, } #sale-details .sale-discount-information .sale-saving { font-size: 120%; - color: #f49a17; + color: #545776; } #sale-details .sale-discount-information .sale-saving:before { display: inline-block; @@ -11031,4 +11031,18 @@ header #nom-site { } a:hover, a:focus { color: #343649; +} +.navbar .navbar-nav > .open > a, +.navbar .navbar-nav > .open > a:hover, +.navbar .navbar-nav > .open > a:focus { + background-color: #545776; + color: #fff; +} +.overlay:before { + background-color: rgba(84, 87, 118, 0.4); +} +.btn-primary:focus, .btn-primary:hover { + background-color: #fff; + border-color: #545776; + color: #545776; } \ No newline at end of file diff --git a/web/assets/backOffice/default/Carousel/assets/js/8a1ea34.js b/web/assets/backOffice/default/Carousel/assets/js/8a1ea34.js deleted file mode 100644 index 54b03e5f..00000000 --- a/web/assets/backOffice/default/Carousel/assets/js/8a1ea34.js +++ /dev/null @@ -1,6 +0,0 @@ -$(function() { - // Set proper image ID in delete from - $('a.image-delete').click(function(ev) { - $('#image_delete_id').val($(this).data('id')); - }); -}); diff --git a/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/img/4c1ceb5.png b/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/img/4c1ceb5.png new file mode 100644 index 00000000..9322ffd6 Binary files /dev/null and b/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/img/4c1ceb5.png differ diff --git a/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/js/57d9d69.js b/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/js/57d9d69.js new file mode 100644 index 00000000..01e7f309 --- /dev/null +++ b/web/assets/backOffice/default/MondialRelay/mondialrelay/assets/js/57d9d69.js @@ -0,0 +1 @@ +!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function s(s){var e=!1;return t('[data-notify="container"]').each(function(i,n){var a=t(n),o=a.find('[data-notify="title"]').text().trim(),r=a.find('[data-notify="message"]').html().trim(),l=o===t("
    "+s.settings.content.title+"
    ").html().trim(),d=r===t("
    "+s.settings.content.message+"
    ").html().trim(),g=a.hasClass("alert-"+s.settings.type);return l&&d&&g&&(e=!0),!e}),e}function e(e,n,a){var o={content:{message:"object"==typeof n?n.message:n,title:n.title?n.title:"",icon:n.icon?n.icon:"",url:n.url?n.url:"#",target:n.target?n.target:"-"}};a=t.extend(!0,{},o,a),this.settings=t.extend(!0,{},i,a),this._defaults=i,"-"===this.settings.content.target&&(this.settings.content.target=this.settings.url_target),this.animations={start:"webkitAnimationStart oanimationstart MSAnimationStart animationstart",end:"webkitAnimationEnd oanimationend MSAnimationEnd animationend"},"number"==typeof this.settings.offset&&(this.settings.offset={x:this.settings.offset,y:this.settings.offset}),(this.settings.allow_duplicates||!this.settings.allow_duplicates&&!s(this))&&this.init()}var i={element:"body",position:null,type:"info",allow_dismiss:!0,allow_duplicates:!0,newest_on_top:!1,showProgressbar:!1,placement:{from:"top",align:"right"},offset:20,spacing:10,z_index:1031,delay:5e3,timer:1e3,url_target:"_blank",mouse_over:null,animate:{enter:"animated fadeInDown",exit:"animated fadeOutUp"},onShow:null,onShown:null,onClose:null,onClosed:null,icon_type:"class",template:''};String.format=function(){for(var t=arguments[0],s=1;s .progress-bar').removeClass("progress-bar-"+t.settings.type),t.settings.type=i[n],this.$ele.addClass("alert-"+i[n]).find('[data-notify="progressbar"] > .progress-bar').addClass("progress-bar-"+i[n]);break;case"icon":var a=this.$ele.find('[data-notify="icon"]');"class"===t.settings.icon_type.toLowerCase()?a.removeClass(t.settings.content.icon).addClass(i[n]):(a.is("img")||a.find("img"),a.attr("src",i[n]));break;case"progress":var o=t.settings.delay-t.settings.delay*(i[n]/100);this.$ele.data("notify-delay",o),this.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i[n]).css("width",i[n]+"%");break;case"url":this.$ele.find('[data-notify="url"]').attr("href",i[n]);break;case"target":this.$ele.find('[data-notify="url"]').attr("target",i[n]);break;default:this.$ele.find('[data-notify="'+n+'"]').html(i[n])}var r=this.$ele.outerHeight()+parseInt(t.settings.spacing)+parseInt(t.settings.offset.y);t.reposition(r)},close:function(){t.close()}}},buildNotify:function(){var s=this.settings.content;this.$ele=t(String.format(this.settings.template,this.settings.type,s.title,s.message,s.url,s.target)),this.$ele.attr("data-notify-position",this.settings.placement.from+"-"+this.settings.placement.align),this.settings.allow_dismiss||this.$ele.find('[data-notify="dismiss"]').css("display","none"),(this.settings.delay<=0&&!this.settings.showProgressbar||!this.settings.showProgressbar)&&this.$ele.find('[data-notify="progressbar"]').remove()},setIcon:function(){"class"===this.settings.icon_type.toLowerCase()?this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon):this.$ele.find('[data-notify="icon"]').is("img")?this.$ele.find('[data-notify="icon"]').attr("src",this.settings.content.icon):this.$ele.find('[data-notify="icon"]').append('Notify Icon')},styleDismiss:function(){this.$ele.find('[data-notify="dismiss"]').css({position:"absolute",right:"10px",top:"5px",zIndex:this.settings.z_index+2})},styleURL:function(){this.$ele.find('[data-notify="url"]').css({backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)",height:"100%",left:0,position:"absolute",top:0,width:"100%",zIndex:this.settings.z_index+1})},placement:function(){var s=this,e=this.settings.offset.y,i={display:"inline-block",margin:"0px auto",position:this.settings.position?this.settings.position:"body"===this.settings.element?"fixed":"absolute",transition:"all .5s ease-in-out",zIndex:this.settings.z_index},n=!1,a=this.settings;switch(t('[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])').each(function(){e=Math.max(e,parseInt(t(this).css(a.placement.from))+parseInt(t(this).outerHeight())+parseInt(a.spacing))}),this.settings.newest_on_top===!0&&(e=this.settings.offset.y),i[this.settings.placement.from]=e+"px",this.settings.placement.align){case"left":case"right":i[this.settings.placement.align]=this.settings.offset.x+"px";break;case"center":i.left=0,i.right=0}this.$ele.css(i).addClass(this.settings.animate.enter),t.each(Array("webkit-","moz-","o-","ms-",""),function(t,e){s.$ele[0].style[e+"AnimationIterationCount"]=1}),t(this.settings.element).append(this.$ele),this.settings.newest_on_top===!0&&(e=parseInt(e)+parseInt(this.settings.spacing)+this.$ele.outerHeight(),this.reposition(e)),t.isFunction(s.settings.onShow)&&s.settings.onShow.call(this.$ele),this.$ele.one(this.animations.start,function(){n=!0}).one(this.animations.end,function(){s.$ele.removeClass(s.settings.animate.enter),t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)}),setTimeout(function(){n||t.isFunction(s.settings.onShown)&&s.settings.onShown.call(this)},600)},bind:function(){var s=this;if(this.$ele.find('[data-notify="dismiss"]').on("click",function(){s.close()}),this.$ele.mouseover(function(){t(this).data("data-hover","true")}).mouseout(function(){t(this).data("data-hover","false")}),this.$ele.data("data-hover","false"),this.settings.delay>0){s.$ele.data("notify-delay",s.settings.delay);var e=setInterval(function(){var t=parseInt(s.$ele.data("notify-delay"))-s.settings.timer;if("false"===s.$ele.data("data-hover")&&"pause"===s.settings.mouse_over||"pause"!=s.settings.mouse_over){var i=(s.settings.delay-t)/s.settings.delay*100;s.$ele.data("notify-delay",t),s.$ele.find('[data-notify="progressbar"] > div').attr("aria-valuenow",i).css("width",i+"%")}t<=-s.settings.timer&&(clearInterval(e),s.close())},s.settings.timer)}},close:function(){var s=this,e=parseInt(this.$ele.css(this.settings.placement.from)),i=!1;this.$ele.attr("data-closing","true").addClass(this.settings.animate.exit),s.reposition(e),t.isFunction(s.settings.onClose)&&s.settings.onClose.call(this.$ele),this.$ele.one(this.animations.start,function(){i=!0}).one(this.animations.end,function(){t(this).remove(),t.isFunction(s.settings.onClosed)&&s.settings.onClosed.call(this)}),setTimeout(function(){i||(s.$ele.remove(),s.settings.onClosed&&s.settings.onClosed(s.$ele))},600)},reposition:function(s){var e=this,i='[data-notify-position="'+this.settings.placement.from+"-"+this.settings.placement.align+'"]:not([data-closing="true"])',n=this.$ele.nextAll(i);this.settings.newest_on_top===!0&&(n=this.$ele.prevAll(i)),n.each(function(){t(this).css(e.settings.placement.from,s),s=parseInt(s)+parseInt(e.settings.spacing)+t(this).outerHeight()})}}),t.notify=function(t,s){var i=new e(this,t,s);return i.notify},t.notifyDefaults=function(s){return i=t.extend(!0,{},i,s)},t.notifyClose=function(s){"warning"===s&&(s="danger"),"undefined"==typeof s||"all"===s?t("[data-notify]").find('[data-notify="dismiss"]').trigger("click"):"success"===s||"info"===s||"warning"===s||"danger"===s?t(".alert-"+s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):s?t(s+"[data-notify]").find('[data-notify="dismiss"]').trigger("click"):t('[data-notify-position="'+s+'"]').find('[data-notify="dismiss"]').trigger("click")},t.notifyCloseExcept=function(s){"warning"===s&&(s="danger"),"success"===s||"info"===s||"warning"===s||"danger"===s?t("[data-notify]").not(".alert-"+s).find('[data-notify="dismiss"]').trigger("click"):t("[data-notify]").not(s).find('[data-notify="dismiss"]').trigger("click")}}); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/img/flags/321605c.png b/web/assets/backOffice/default/template-assets/assets/img/flags/321605c.png deleted file mode 100644 index ce11f1f8..00000000 Binary files a/web/assets/backOffice/default/template-assets/assets/img/flags/321605c.png and /dev/null differ diff --git a/web/assets/backOffice/default/template-assets/assets/img/flags/c84f4a3.png b/web/assets/backOffice/default/template-assets/assets/img/flags/c84f4a3.png deleted file mode 100644 index 43ebed3b..00000000 Binary files a/web/assets/backOffice/default/template-assets/assets/img/flags/c84f4a3.png and /dev/null differ diff --git a/web/assets/backOffice/default/template-assets/assets/img/flags/ec67243.png b/web/assets/backOffice/default/template-assets/assets/img/flags/ec67243.png deleted file mode 100644 index b89db685..00000000 Binary files a/web/assets/backOffice/default/template-assets/assets/img/flags/ec67243.png and /dev/null differ diff --git a/web/assets/backOffice/default/template-assets/assets/js/6ddf5b3.js b/web/assets/backOffice/default/template-assets/assets/js/6ddf5b3.js deleted file mode 100644 index 7a868acd..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/6ddf5b3.js +++ /dev/null @@ -1,10 +0,0 @@ -//! moment.js -//! version : 2.8.1 -//! authors : Tim Wood, Iskren Chernev, Moment.js contributors -//! license : MIT -//! momentjs.com -(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function d(a){rb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function e(a,b){var c=!0;return l(function(){return c&&(d(a),c=!1),b.apply(this,arguments)},b)}function f(a,b){nc[a]||(d(b),nc[a]=!0)}function g(a,b){return function(c){return o(a.call(this,c),b)}}function h(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function i(){}function j(a,b){b!==!1&&E(a),m(this,a),this._d=new Date(+a._d)}function k(a){var b=x(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=rb.localeData(),this._bubble()}function l(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return b.hasOwnProperty("toString")&&(a.toString=b.toString),b.hasOwnProperty("valueOf")&&(a.valueOf=b.valueOf),a}function m(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Fb.length>0)for(c in Fb)d=Fb[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function n(a){return 0>a?Math.ceil(a):Math.floor(a)}function o(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.lengthd;d++)(c&&a[d]!==b[d]||!c&&z(a[d])!==z(b[d]))&&g++;return g+f}function w(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=gc[a]||hc[b]||b}return a}function x(a){var b,c,d={};for(c in a)a.hasOwnProperty(c)&&(b=w(c),b&&(d[b]=a[c]));return d}function y(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}rb[b]=function(e,f){var g,h,i=rb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=rb().utc().set(d,a);return i.call(rb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function z(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function A(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function B(a,b,c){return fb(rb([a,11,31+b-c]),b,c).week}function C(a){return D(a)?366:365}function D(a){return a%4===0&&a%100!==0||a%400===0}function E(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[yb]<0||a._a[yb]>11?yb:a._a[zb]<1||a._a[zb]>A(a._a[xb],a._a[yb])?zb:a._a[Ab]<0||a._a[Ab]>23?Ab:a._a[Bb]<0||a._a[Bb]>59?Bb:a._a[Cb]<0||a._a[Cb]>59?Cb:a._a[Db]<0||a._a[Db]>999?Db:-1,a._pf._overflowDayOfYear&&(xb>b||b>zb)&&(b=zb),a._pf.overflow=b)}function F(a){return null==a._isValid&&(a._isValid=!isNaN(a._d.getTime())&&a._pf.overflow<0&&!a._pf.empty&&!a._pf.invalidMonth&&!a._pf.nullInput&&!a._pf.invalidFormat&&!a._pf.userInvalidated,a._strict&&(a._isValid=a._isValid&&0===a._pf.charsLeftOver&&0===a._pf.unusedTokens.length)),a._isValid}function G(a){return a?a.toLowerCase().replace("_","-"):a}function H(a){for(var b,c,d,e,f=0;f0;){if(d=I(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function I(a){var b=null;if(!Eb[a]&&Gb)try{b=rb.locale(),require("./locale/"+a),rb.locale(b)}catch(c){}return Eb[a]}function J(a,b){return b._isUTC?rb(a).zone(b._offset||0):rb(a).local()}function K(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function L(a){var b,c,d=a.match(Kb);for(b=0,c=d.length;c>b;b++)d[b]=mc[d[b]]?mc[d[b]]:K(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function M(a,b){return a.isValid()?(b=N(b,a.localeData()),ic[b]||(ic[b]=L(b)),ic[b](a)):a.localeData().invalidDate()}function N(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Lb.lastIndex=0;d>=0&&Lb.test(a);)a=a.replace(Lb,c),Lb.lastIndex=0,d-=1;return a}function O(a,b){var c,d=b._strict;switch(a){case"Q":return Wb;case"DDDD":return Yb;case"YYYY":case"GGGG":case"gggg":return d?Zb:Ob;case"Y":case"G":case"g":return _b;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?$b:Pb;case"S":if(d)return Wb;case"SS":if(d)return Xb;case"SSS":if(d)return Yb;case"DDD":return Nb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Rb;case"a":case"A":return b._locale._meridiemParse;case"X":return Ub;case"Z":case"ZZ":return Sb;case"T":return Tb;case"SSSS":return Qb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?Xb:Mb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Mb;case"Do":return Vb;default:return c=new RegExp(X(W(a.replace("\\","")),"i"))}}function P(a){a=a||"";var b=a.match(Sb)||[],c=b[b.length-1]||[],d=(c+"").match(ec)||["-",0,0],e=+(60*d[1])+z(d[2]);return"+"===d[0]?-e:e}function Q(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[yb]=3*(z(b)-1));break;case"M":case"MM":null!=b&&(e[yb]=z(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b),null!=d?e[yb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[zb]=z(b));break;case"Do":null!=b&&(e[zb]=z(parseInt(b,10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=z(b));break;case"YY":e[xb]=rb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[xb]=z(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"H":case"HH":case"h":case"hh":e[Ab]=z(b);break;case"m":case"mm":e[Bb]=z(b);break;case"s":case"ss":e[Cb]=z(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Db]=z(1e3*("0."+b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=P(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=z(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=rb.parseTwoDigitYear(b)}}function R(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[xb],fb(rb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[xb],fb(rb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=gb(d,e,f,h,g),a._a[xb]=i.year,a._dayOfYear=i.dayOfYear}function S(a){var c,d,e,f,g=[];if(!a._d){for(e=U(a),a._w&&null==a._a[zb]&&null==a._a[yb]&&R(a),a._dayOfYear&&(f=b(a._a[xb],e[xb]),a._dayOfYear>C(f)&&(a._pf._overflowDayOfYear=!0),d=bb(f,0,a._dayOfYear),a._a[yb]=d.getUTCMonth(),a._a[zb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];a._d=(a._useUTC?bb:ab).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm)}}function T(a){var b;a._d||(b=x(a._i),a._a=[b.year,b.month,b.day,b.hour,b.minute,b.second,b.millisecond],S(a))}function U(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function V(a){if(a._f===rb.ISO_8601)return void Z(a);a._a=[],a._pf.empty=!0;var b,c,d,e,f,g=""+a._i,h=g.length,i=0;for(d=N(a._f,a._locale).match(Kb)||[],b=0;b0&&a._pf.unusedInput.push(f),g=g.slice(g.indexOf(c)+c.length),i+=c.length),mc[e]?(c?a._pf.empty=!1:a._pf.unusedTokens.push(e),Q(e,c,a)):a._strict&&!c&&a._pf.unusedTokens.push(e);a._pf.charsLeftOver=h-i,g.length>0&&a._pf.unusedInput.push(g),a._isPm&&a._a[Ab]<12&&(a._a[Ab]+=12),a._isPm===!1&&12===a._a[Ab]&&(a._a[Ab]=0),S(a),E(a)}function W(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function X(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Y(a){var b,d,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;fg)&&(e=g,d=b));l(a,d||b)}function Z(a){var b,c,d=a._i,e=ac.exec(d);if(e){for(a._pf.iso=!0,b=0,c=cc.length;c>b;b++)if(cc[b][1].exec(d)){a._f=cc[b][0]+(e[6]||" ");break}for(b=0,c=dc.length;c>b;b++)if(dc[b][1].exec(d)){a._f+=dc[b][0];break}d.match(Sb)&&(a._f+="Z"),V(a)}else a._isValid=!1}function $(a){Z(a),a._isValid===!1&&(delete a._isValid,rb.createFromInputFallback(a))}function _(b){var c,d=b._i;d===a?b._d=new Date:u(d)?b._d=new Date(+d):null!==(c=Hb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?$(b):t(d)?(b._a=d.slice(0),S(b)):"object"==typeof d?T(b):"number"==typeof d?b._d=new Date(d):rb.createFromInputFallback(b)}function ab(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function bb(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function cb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function db(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function eb(a,b,c){var d=rb.duration(a).abs(),e=wb(d.as("s")),f=wb(d.as("m")),g=wb(d.as("h")),h=wb(d.as("d")),i=wb(d.as("M")),j=wb(d.as("y")),k=e0,k[4]=c,db.apply({},k)}function fb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=rb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function gb(a,b,c,d,e){var f,g,h=bb(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:C(a-1)+g}}function hb(b){var c=b._i,d=b._f;return b._locale=b._locale||rb.localeData(b._l),null===c||d===a&&""===c?rb.invalid({nullInput:!0}):("string"==typeof c&&(b._i=c=b._locale.preparse(c)),rb.isMoment(c)?new j(c,!0):(d?t(d)?Y(b):V(b):_(b),new j(b)))}function ib(a,b){var c,d;if(1===b.length&&t(b[0])&&(b=b[0]),!b.length)return rb();for(c=b[0],d=1;d=0?"+":"-";return b+o(Math.abs(a),6)},gg:function(){return o(this.weekYear()%100,2)},gggg:function(){return o(this.weekYear(),4)},ggggg:function(){return o(this.weekYear(),5)},GG:function(){return o(this.isoWeekYear()%100,2)},GGGG:function(){return o(this.isoWeekYear(),4)},GGGGG:function(){return o(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return z(this.milliseconds()/100)},SS:function(){return o(z(this.milliseconds()/10),2)},SSS:function(){return o(this.milliseconds(),3)},SSSS:function(){return o(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+":"+o(z(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+o(z(a/60),2)+o(z(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},nc={},oc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];kc.length;)tb=kc.pop(),mc[tb+"o"]=h(mc[tb],tb);for(;lc.length;)tb=lc.pop(),mc[tb+tb]=g(mc[tb],2);mc.DDDD=g(mc.DDD,3),l(i.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a){var b,c,d;for(this._monthsParse||(this._monthsParse=[]),b=0;12>b;b++)if(this._monthsParse[b]||(c=rb.utc([2e3,b]),d="^"+this.months(c,"")+"|^"+this.monthsShort(c,""),this._monthsParse[b]=new RegExp(d.replace(".",""),"i")),this._monthsParse[b].test(a))return b},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=rb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b){var c=this._calendar[a];return"function"==typeof c?c.apply(b):c},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",preparse:function(a){return a},postformat:function(a){return a},week:function(a){return fb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),rb=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=d,g._l=e,g._strict=f,g._isUTC=!1,g._pf=c(),hb(g)},rb.suppressDeprecationWarnings=!1,rb.createFromInputFallback=e("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i)}),rb.min=function(){var a=[].slice.call(arguments,0);return ib("isBefore",a)},rb.max=function(){var a=[].slice.call(arguments,0);return ib("isAfter",a)},rb.utc=function(b,d,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=d,g._strict=f,g._pf=c(),hb(g).utc()},rb.unix=function(a){return rb(1e3*a)},rb.duration=function(a,b){var c,d,e,f,g=a,h=null;return rb.isDuration(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(g={},b?g[b]=a:g.milliseconds=a):(h=Ib.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:z(h[zb])*c,h:z(h[Ab])*c,m:z(h[Bb])*c,s:z(h[Cb])*c,ms:z(h[Db])*c}):(h=Jb.exec(a))?(c="-"===h[1]?-1:1,e=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*c},g={y:e(h[2]),M:e(h[3]),d:e(h[4]),h:e(h[5]),m:e(h[6]),s:e(h[7]),w:e(h[8])}):"object"==typeof g&&("from"in g||"to"in g)&&(f=q(rb(g.from),rb(g.to)),g={},g.ms=f.milliseconds,g.M=f.months),d=new k(g),rb.isDuration(a)&&a.hasOwnProperty("_locale")&&(d._locale=a._locale),d},rb.version=ub,rb.defaultFormat=bc,rb.ISO_8601=function(){},rb.momentProperties=Fb,rb.updateOffset=function(){},rb.relativeTimeThreshold=function(b,c){return jc[b]===a?!1:c===a?jc[b]:(jc[b]=c,!0)},rb.lang=e("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return rb.locale(a,b)}),rb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?rb.defineLocale(a,b):rb.localeData(a),c&&(rb.duration._locale=rb._locale=c)),rb._locale._abbr},rb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Eb[a]||(Eb[a]=new i),Eb[a].set(b),rb.locale(a),Eb[a]):(delete Eb[a],null)},rb.langData=e("moment.langData is deprecated. Use moment.localeData instead.",function(a){return rb.localeData(a)}),rb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return rb._locale;if(!t(a)){if(b=I(a))return b;a=[a]}return H(a)},rb.isMoment=function(a){return a instanceof j||null!=a&&a.hasOwnProperty("_isAMomentObject")},rb.isDuration=function(a){return a instanceof k};for(tb=oc.length-1;tb>=0;--tb)y(oc[tb]);rb.normalizeUnits=function(a){return w(a)},rb.invalid=function(a){var b=rb.utc(0/0);return null!=a?l(b._pf,a):b._pf.userInvalidated=!0,b},rb.parseZone=function(){return rb.apply(null,arguments).parseZone()},rb.parseTwoDigitYear=function(a){return z(a)+(z(a)>68?1900:2e3)},l(rb.fn=j.prototype,{clone:function(){return rb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=rb(this).utc();return 00:!1},parsingFlags:function(){return l({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._d.getTimezoneOffset(),"m")),this},format:function(a){var b=M(this,a||rb.defaultFormat);return this.localeData().postformat(b)},add:r(1,"add"),subtract:r(-1,"subtract"),diff:function(a,b,c){var d,e,f=J(a,this),g=6e4*(this.zone()-f.zone());return b=w(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+f.daysInMonth()),e=12*(this.year()-f.year())+(this.month()-f.month()),e+=(this-rb(this).startOf("month")-(f-rb(f).startOf("month")))/d,e-=6e4*(this.zone()-rb(this).startOf("month").zone()-(f.zone()-rb(f).startOf("month").zone()))/d,"year"===b&&(e/=12)):(d=this-f,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-g)/864e5:"week"===b?(d-g)/6048e5:d),c?e:n(e)},from:function(a,b){return rb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(rb(),a)},calendar:function(a){var b=a||rb(),c=J(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this))},isLeapYear:function(){return D(this.year())},isDST:function(){return this.zone()+rb(a).startOf(b)},isBefore:function(a,b){return b="undefined"!=typeof b?b:"millisecond",+this.clone().startOf(b)<+rb(a).startOf(b)},isSame:function(a,b){return b=b||"ms",+this.clone().startOf(b)===+J(a,this).startOf(b)},min:e("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),this>a?this:a}),max:e("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=rb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._d.getTimezoneOffset():("string"==typeof a&&(a=P(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._d.getTimezoneOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?s(this,rb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,rb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?rb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return A(this.year(),this.month())},dayOfYear:function(a){var b=wb((rb(this).startOf("day")-rb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=fb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=fb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=fb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return B(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return B(this.year(),a.dow,a.doy)},get:function(a){return a=w(a),this[a]()},set:function(a,b){return a=w(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){return b===a?this._locale._abbr:(this._locale=rb.localeData(b),this)},lang:e("moment().lang() is deprecated. Use moment().localeData() instead.",function(b){return b===a?this.localeData():(this._locale=rb.localeData(b),this)}),localeData:function(){return this._locale}}),rb.fn.millisecond=rb.fn.milliseconds=mb("Milliseconds",!1),rb.fn.second=rb.fn.seconds=mb("Seconds",!1),rb.fn.minute=rb.fn.minutes=mb("Minutes",!1),rb.fn.hour=rb.fn.hours=mb("Hours",!0),rb.fn.date=mb("Date",!0),rb.fn.dates=e("dates accessor is deprecated. Use date instead.",mb("Date",!0)),rb.fn.year=mb("FullYear",!0),rb.fn.years=e("years accessor is deprecated. Use year instead.",mb("FullYear",!0)),rb.fn.days=rb.fn.day,rb.fn.months=rb.fn.month,rb.fn.weeks=rb.fn.week,rb.fn.isoWeeks=rb.fn.isoWeek,rb.fn.quarters=rb.fn.quarter,rb.fn.toJSON=rb.fn.toISOString,l(rb.duration.fn=k.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=n(d/1e3),g.seconds=a%60,b=n(a/60),g.minutes=b%60,c=n(b/60),g.hours=c%24,e+=n(c/24),h=n(nb(e)),e-=n(ob(h)),f+=n(e/30),e%=30,h+=n(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return n(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*z(this._months/12)},humanize:function(a){var b=eb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=rb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=rb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=w(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=w(a),b=this._days+this._milliseconds/864e5,"month"===a||"year"===a)return c=this._months+12*nb(b),"month"===a?c:c/12;switch(b+=ob(this._months/12),a){case"week":return b/7;case"day":return b;case"hour":return 24*b;case"minute":return 24*b*60;case"second":return 24*b*60*60;case"millisecond":return 24*b*60*60*1e3;default:throw new Error("Unknown unit "+a)}},lang:rb.fn.lang,locale:rb.fn.locale,toIsoString:e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}});for(tb in fc)fc.hasOwnProperty(tb)&&pb(tb.toLowerCase());rb.duration.fn.asMilliseconds=function(){return this.as("ms")},rb.duration.fn.asSeconds=function(){return this.as("s")},rb.duration.fn.asMinutes=function(){return this.as("m")},rb.duration.fn.asHours=function(){return this.as("h")},rb.duration.fn.asDays=function(){return this.as("d")},rb.duration.fn.asWeeks=function(){return this.as("weeks")},rb.duration.fn.asMonths=function(){return this.as("M")},rb.duration.fn.asYears=function(){return this.as("y")},rb.locale("en",{ordinal:function(a){var b=a%10,c=1===z(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),function(a){a(rb)}(function(a){return a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiem:function(a,b,c){return 12>a?c?"vm":"VM":c?"nm":"NM"},longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de") -},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){var b={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return a.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},meridiem:function(a){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){var b={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return a.defineLocale("ar",{months:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),monthsShort:"يناير/ كانون الثاني_فبراير/ شباط_مارس/ آذار_أبريل/ نيسان_مايو/ أيار_يونيو/ حزيران_يوليو/ تموز_أغسطس/ آب_سبتمبر/ أيلول_أكتوبر/ تشرين الأول_نوفمبر/ تشرين الثاني_ديسمبر/ كانون الأول".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},meridiem:function(a){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){var b={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};return a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiem:function(a){return 4>a?"gecə":12>a?"səhər":17>a?"gündüz":"axşam"},ordinal:function(a){if(0===a)return a+"-ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:c?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===d?c?"хвіліна":"хвіліну":"h"===d?c?"гадзіна":"гадзіну":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_"),accusative:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),accusative:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_")},d=/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.defineLocale("be",{months:d,monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:e,weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., LT",LLLL:"dddd, D MMMM YYYY г., LT"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:c,mm:c,h:c,hh:c,d:"дзень",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiem:function(a){return 4>a?"ночы":12>a?"раніцы":17>a?"дня":"вечара"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},c={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};return a.defineLocale("bn",{months:"জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি".split("_"),weekdaysMin:"রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কএক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"রাত":10>a?"শকাল":17>a?"দুপুর":20>a?"বিকেল":"রাত"},week:{dow:0,doy:6}})}),function(a){a(rb)}(function(a){var b={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},c={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};return a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"མཚན་མོ":10>a?"ཞོགས་ཀས":17>a?"ཉིན་གུང":20>a?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}),function(a){a(rb)}(function(b){function c(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+f(d[c],a)}function d(a){switch(e(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function e(a){return a>9?e(a%10):a}function f(a,b){return 2===b?g(a):a}function g(b){var c={m:"v",b:"v",d:"z"};return c[b.charAt(0)]===a?b:c[b.charAt(0)]+b.substring(1)}return b.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),longDateFormat:{LT:"h[e]mm A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY LT",LLLL:"dddd, D [a viz] MMMM YYYY LT"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:c,h:"un eur",hh:"%d eur",d:"un devezh",dd:c,M:"ur miz",MM:c,y:"ur bloaz",yy:d},ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a){return a>1&&5>a&&1!==~~(a/10)}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(b(a)?"minuty":"minut"):f+"minutami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodin"):f+"hodinami";break;case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(b(a)?"dny":"dní"):f+"dny";break;case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(b(a)?"měsíce":"měsíců"):f+"měsíci";break;case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(b(a)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");return a.defineLocale("cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H.mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("cv",{months:"кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав".split("_"),monthsShort:"кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кĕç_эрн_шăм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кç_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]",LLL:"YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT",LLLL:"dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ĕнер] LT [сехетре]",nextWeek:"[Çитес] dddd LT [сехетре]",lastWeek:"[Иртнĕ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/çул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пĕр-ик çеккунт",m:"пĕр минут",mm:"%d минут",h:"пĕр сехет",hh:"%d сехет",d:"пĕр кун",dd:"%d кун",M:"пĕр уйăх",MM:"%d уйăх",y:"пĕр çул",yy:"%d çул"},ordinal:"%d-мĕш",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd [d.] D. MMMM YYYY LT"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?d[c][0]:d[c][1]}return a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?d[c][0]:d[c][1]}return a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm [Uhr]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Heute um] LT",sameElse:"L",nextDay:"[Morgen um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gestern um] LT",lastWeek:"[letzten] dddd [um] LT"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:b,mm:"%d Minuten",h:b,hh:"%d Stunden",d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return"function"==typeof c&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinal:function(a){return a+"η"},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY LT",LLLL:"dddd, D MMMM, YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}})}),function(a){a(rb)}(function(a){return a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ĵa_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, YYYY LT",LLLL:"dddd, [la] D[-an de] MMMM, YYYY LT"},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"je %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinal:"%da",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");return a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mi_Ju_Vi_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [del] YYYY",LLL:"D [de] MMMM [del] YYYY LT",LLLL:"dddd, D [de] MMMM [del] YYYY LT"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}return a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:"%d päeva",M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] LT",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] LT",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] LT",llll:"ddd, YYYY[ko] MMM D[a] LT"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"}; - return a.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},meridiem:function(a){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]}).replace(/,/g,"،")},ordinal:"%dم",week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){function b(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]];return a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] LT",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] LT",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] LT",llll:"ddd, Do MMM YYYY, [klo] LT"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D. MMMM, YYYY LT"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")}})}),function(a){a(rb)}(function(a){return a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("gl",{months:"Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro".split("_"),monthsShort:"Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.".split("_"),weekdays:"Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado".split("_"),weekdaysShort:"Dom._Lun._Mar._Mér._Xov._Ven._Sáb.".split("_"),weekdaysMin:"Do_Lu_Ma_Mé_Xo_Ve_Sá".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(a){return"uns segundos"===a?"nuns segundos":"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY LT",LLLL:"dddd, D [ב]MMMM YYYY LT",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a+" שנים"}}})}),function(a){a(rb)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}return a.defineLocale("hr",{months:"sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_"),monthsShort:"sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:b,mm:b,h:b,hh:b,d:"dan",dd:b,M:"mjesec",MM:b,y:"godinu",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D., LT",LLLL:"YYYY. MMMM D., dddd LT"},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:b,m:b,mm:b,h:b,hh:b,d:b,dd:b,M:b,MM:b,y:b,yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a,b){var c={nominative:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_"),accusative:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a){var b="հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_");return b[a.month()]}function d(a){var b="կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_");return b[a.day()]}return a.defineLocale("hy-am",{months:b,monthsShort:c,weekdays:d,weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., LT",LLLL:"dddd, D MMMM YYYY թ., LT"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiem:function(a){return 4>a?"գիշերվա":12>a?"առավոտվա":17>a?"ցերեկվա":"երեկոյան"},ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a){return a%100===11?!0:a%10===1?!1:!0}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return b(a)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return b(a)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return b(a)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return b(a)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return b(a)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}return a.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd, D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"D_L_Ma_Me_G_V_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:"[lo scorso] dddd [alle] LT",sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日LT",LLLL:"YYYY年M月D日LT dddd"},meridiem:function(a){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}),function(a){a(rb)}(function(a){function b(a,b){var c={nominative:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),accusative:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},d=/D[oD] *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function c(a,b){var c={nominative:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),accusative:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_")},d=/(წინა|შემდეგ)/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.defineLocale("ka",{months:b,monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:c,weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(a)?a.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},ordinal:function(a){return 0===a?a:1===a?a+"-ლი":20>a||100>=a&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("km",{months:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysMin:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[ថ្ងៃនៈ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 mm분",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 LT",LLLL:"YYYY년 MMMM D일 dddd LT"},meridiem:function(a){return 12>a?"오전":"오후"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinal:"%d일",meridiemParse:/(오전|오후)/,isPM:function(a){return"오후"===a}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?d[c][0]:d[c][1]}function c(a){var b=a.substr(0,a.indexOf(" "));return e(b)?"a "+a:"an "+a}function d(a){var b=a.substr(0,a.indexOf(" "));return e(b)?"viru "+a:"virun "+a}function e(a){if(a=parseInt(a,10),isNaN(a))return!1;if(0>a)return!0;if(10>a)return a>=4&&7>=a?!0:!1;if(100>a){var b=a%10,c=a/10;return e(0===b?c:b)}if(1e4>a){for(;a>=10;)a/=10;return e(a)}return a/=1e3,e(a)}return a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),longDateFormat:{LT:"H:mm [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:c,past:d,s:"e puer Sekonnen",m:b,mm:"%d Minutten",h:b,hh:"%d Stonnen",d:b,dd:"%d Deeg",M:b,MM:"%d Méint",y:b,yy:"%d Joer"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return h[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}function g(a,b){var c=-1===b.indexOf("dddd HH:mm"),d=i[a.day()];return c?d:d.substring(0,d.length-2)+"į"}var h={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},i="sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_");return a.defineLocale("lt",{months:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:g,weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], LT [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, LT [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], LT [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, LT [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:b,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d=a.split("_");return c?b%10===1&&11!==b?d[2]:d[3]:b%10===1&&11!==b?d[0]:d[1]}function c(a,c,e){return a+" "+b(d[e],a,c)}var d={mm:"minūti_minūtes_minūte_minūtes",hh:"stundu_stundas_stunda_stundas",dd:"dienu_dienas_diena_dienas",MM:"mēnesi_mēnešus_mēnesis_mēneši",yy:"gadu_gadus_gads_gadi"};return a.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, LT",LLLL:"YYYY. [gada] D. MMMM, dddd, LT"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"%s vēlāk",past:"%s agrāk",s:"dažas sekundes",m:"minūti",mm:c,h:"stundu",hh:c,d:"dienu",dd:c,M:"mēnesi",MM:c,y:"gadu",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Во изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Во изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiem:function(a){return 4>a?"രാത്രി":12>a?"രാവിലെ":17>a?"ഉച്ച കഴിഞ്ഞ്":20>a?"വൈകുന്നേരം":"രാത്രി"}})}),function(a){a(rb)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%s नंतर",past:"%s पूर्वी",s:"सेकंद",m:"एक मिनिट",mm:"%d मिनिटे",h:"एक तास",hh:"%d तास",d:"एक दिवस",dd:"%d दिवस",M:"एक महिना",MM:"%d महिने",y:"एक वर्ष",yy:"%d वर्षे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 4>a?"रात्री":10>a?"सकाळी":17>a?"दुपारी":20>a?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}),function(a){a(rb)}(function(a){return a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] LT",LLLL:"dddd, D MMMM YYYY [pukul] LT"},meridiem:function(a){return 11>a?"pagi":15>a?"tengahari":19>a?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},c={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};return a.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"H.mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] LT",LLLL:"dddd D. MMMM YYYY [kl.] LT"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}}) -}),function(a){a(rb)}(function(a){var b={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आइ._सो._मङ्_बु._बि._शु._श.".split("_"),longDateFormat:{LT:"Aको h:mm बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return b[a]})},meridiem:function(a){return 3>a?"राती":10>a?"बिहान":15>a?"दिउँसो":18>a?"बेलुका":20>a?"साँझ":"राती"},calendar:{sameDay:"[आज] LT",nextDay:"[भोली] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडी",s:"केही समय",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_");return a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,d){return/-MMM-/.test(d)?c[a.month()]:b[a.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(a,c,d){var e=a+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(b(a)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(b(a)?"godziny":"godzin");case"MM":return e+(b(a)?"miesiące":"miesięcy");case"yy":return e+(b(a)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return a.defineLocale("pl",{months:function(a,b){return/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"N_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] LT",LLLL:"dddd, D [de] MMMM [de] YYYY [às] LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº"})}),function(a){a(rb)}(function(a){return a.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"dom_2ª_3ª_4ª_5ª_6ª_sáb".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY LT",LLLL:"dddd, D [de] MMMM [de] YYYY LT"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinal:"%dº",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}return a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:b,h:"o oră",hh:b,d:"o zi",dd:b,M:"o lună",MM:b,y:"un an",yy:b},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),accusative:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),accusative:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_")},d=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function f(a,b){var c={nominative:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),accusative:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_")},d=/\[ ?[Вв] ?(?:прошлую|следующую)? ?\] ?dddd/.test(b)?"accusative":"nominative";return c[d][a.day()]}return a.defineLocale("ru",{months:d,monthsShort:e,weekdays:f,weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., LT",LLLL:"dddd, D MMMM YYYY г., LT"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(){return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT"},lastWeek:function(){switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){function b(a){return a>1&&5>a}function c(a,c,d,e){var f=a+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(b(a)?"minúty":"minút"):f+"minútami";break;case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(b(a)?"hodiny":"hodín"):f+"hodinami";break;case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(b(a)?"dni":"dní"):f+"dňami";break;case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(b(a)?"mesiace":"mesiacov"):f+"mesiacmi";break;case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(b(a)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return a.defineLocale("sk",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd D. MMMM YYYY LT"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){function b(a,b,c){var d=a+" ";switch(c){case"m":return b?"ena minuta":"eno minuto";case"mm":return d+=1===a?"minuta":2===a?"minuti":3===a||4===a?"minute":"minut";case"h":return b?"ena ura":"eno uro";case"hh":return d+=1===a?"ura":2===a?"uri":3===a||4===a?"ure":"ur";case"dd":return d+=1===a?"dan":"dni";case"MM":return d+=1===a?"mesec":2===a?"meseca":3===a||4===a?"mesece":"mesecev";case"yy":return d+=1===a?"leto":2===a?"leti":3===a||4===a?"leta":"let"}}return a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[prejšnja] dddd [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"%s nazaj",s:"nekaj sekund",m:b,mm:b,h:b,hh:b,d:"en dan",dd:b,M:"en mesec",MM:b,y:"eno leto",yy:b},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),meridiem:function(a){return 12>a?"PD":"MD"},longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},ordinal:"%d.",week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){var b={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,c,d){var e=b.words[d];return 1===d.length?c?e[0]:e[1]:a+" "+b.correctGrammaticalCase(a,e)}};return a.defineLocale("sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:b.translate,mm:b.translate,h:b.translate,hh:b.translate,d:"дан",dd:b.translate,M:"месец",MM:b.translate,y:"годину",yy:b.translate},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){var b={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(a,c,d){var e=b.words[d];return 1===d.length?c?e[0]:e[1]:a+" "+b.correctGrammaticalCase(a,e)}};return a.defineLocale("sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY LT",LLLL:"dddd, D. MMMM YYYY LT"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:b.translate,mm:b.translate,h:b.translate,hh:b.translate,d:"dan",dd:b.translate,M:"mesec",MM:b.translate,y:"godinu",yy:b.translate},ordinal:"%d.",week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"dddd LT",lastWeek:"[Förra] dddd[en] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":3===b?"e":"e";return a+c},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, LT",LLLL:"dddd, D MMMM YYYY, LT"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},ordinal:function(a){return a+"வது"},meridiem:function(a){return a>=6&&10>=a?" காலை":a>=10&&14>=a?" நண்பகல்":a>=14&&18>=a?" எற்பாடு":a>=18&&20>=a?" மாலை":a>=20&&24>=a?" இரவு":a>=0&&6>=a?" வைகறை":void 0},week:{dow:0,doy:6}})}),function(a){a(rb)}(function(a){return a.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา LT",LLLL:"วันddddที่ D MMMM YYYY เวลา LT"},meridiem:function(a){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}),function(a){a(rb)}(function(a){return a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM DD, YYYY LT"},calendar:{sameDay:"[Ngayon sa] LT",nextDay:"[Bukas sa] LT",nextWeek:"dddd [sa] LT",lastDay:"[Kahapon sa] LT",lastWeek:"dddd [huling linggo] LT",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){var b={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd, D MMMM YYYY LT"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){if(0===a)return a+"'ıncı";var c=a%10,d=a%100-c,e=a>=100?100:null;return a+(b[c]||b[d]||b[e])},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){return a.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"dddd D MMMM YYYY LT"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}),function(a){a(rb)}(function(a){function b(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(a,c,d){var e={mm:"хвилина_хвилини_хвилин",hh:"година_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":a+" "+b(e[d],+a)}function d(a,b){var c={nominative:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_"),accusative:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_")},d=/D[oD]? *MMMM?/.test(b)?"accusative":"nominative";return c[d][a.month()]}function e(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function f(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}return a.defineLocale("uk",{months:d,monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:e,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., LT",LLLL:"dddd, D MMMM YYYY р., LT"},calendar:{sameDay:f("[Сьогодні "),nextDay:f("[Завтра "),lastDay:f("[Вчора "),nextWeek:f("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return f("[Минулої] dddd [").call(this);case 1:case 2:case 4:return f("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiem:function(a){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("uz",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY LT",LLLL:"D MMMM YYYY, dddd LT"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}),function(a){a(rb)}(function(a){return a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY LT",LLLL:"dddd, D MMMM [năm] YYYY LT",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY LT",llll:"ddd, D MMM YYYY LT"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinal:function(a){return a},week:{dow:1,doy:4}})}),function(a){a(rb)}(function(a){return a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日LT",LLLL:"YYYY年MMMD日ddddLT",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日LT",llll:"YYYY年MMMD日ddddLT"},meridiem:function(a,b){var c=100*a+b;return 600>c?"凌晨":900>c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()-b.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var b,c;return b=a().startOf("week"),c=this.unix()c?"早上":1130>c?"上午":1230>c?"中午":1800>c?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日"; - case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}})}),rb.locale("en"),Gb?module.exports=rb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(vb.moment=sb),rb}),qb(!0)):qb()}).call(this); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/8dabf18.js b/web/assets/backOffice/default/template-assets/assets/js/8dabf18.js deleted file mode 100644 index 13b75438..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/8dabf18.js +++ /dev/null @@ -1,94 +0,0 @@ -/* -* TypeWatch 2.2 -* -* Examples/Docs: github.com/dennyferra/TypeWatch -* -* Copyright(c) 2013 -* Denny Ferrassoli - dennyferra.com -* Charles Christolini -* -* Dual licensed under the MIT and GPL licenses: -* http://www.opensource.org/licenses/mit-license.php -* http://www.gnu.org/licenses/gpl.html -*/ - -(function(jQuery) { - jQuery.fn.typeWatch = function(o) { - // The default input types that are supported - var _supportedInputTypes = - ['TEXT', 'TEXTAREA', 'PASSWORD', 'TEL', 'SEARCH', 'URL', 'EMAIL', 'DATETIME', 'DATE', 'MONTH', 'WEEK', 'TIME', 'DATETIME-LOCAL', 'NUMBER', 'RANGE']; - - // Options - var options = jQuery.extend({ - wait: 750, - callback: function() { }, - highlight: true, - captureLength: 2, - inputTypes: _supportedInputTypes - }, o); - - function checkElement(timer, override) { - var value = jQuery(timer.el).val(); - - // Fire if text >= options.captureLength AND text != saved text OR if override AND text >= options.captureLength - if ((value.length >= options.captureLength && value.toUpperCase() != timer.text) - || (override && value.length >= options.captureLength)) - { - timer.text = value.toUpperCase(); - timer.cb.call(timer.el, value); - } - }; - - function watchElement(elem) { - var elementType = elem.type.toUpperCase(); - if (jQuery.inArray(elementType, options.inputTypes) >= 0) { - - // Allocate timer element - var timer = { - timer: null, - text: jQuery(elem).val().toUpperCase(), - cb: options.callback, - el: elem, - wait: options.wait - }; - - // Set focus action (highlight) - if (options.highlight) { - jQuery(elem).focus( - function() { - this.select(); - }); - } - - // Key watcher / clear and reset the timer - var startWatch = function(evt) { - var timerWait = timer.wait; - var overrideBool = false; - var evtElementType = this.type.toUpperCase(); - - // If enter key is pressed and not a TEXTAREA and matched inputTypes - if (typeof evt.keyCode != 'undefined' && evt.keyCode == 13 && evtElementType != 'TEXTAREA' && jQuery.inArray(evtElementType, options.inputTypes) >= 0) { - timerWait = 1; - overrideBool = true; - } - - var timerCallbackFx = function() { - checkElement(timer, overrideBool) - } - - // Clear timer - clearTimeout(timer.timer); - timer.timer = setTimeout(timerCallbackFx, timerWait); - }; - - jQuery(elem).on('keydown paste cut input', startWatch); - } - }; - - // Watch Each Element - return this.each(function() { - watchElement(this); - }); - - }; -})(jQuery); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/ce34340.js b/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/ce34340.js deleted file mode 100644 index a2e54e12..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/ce34340.js +++ /dev/null @@ -1,9 +0,0 @@ -/*! version : 4.15.35 - ========================================================= - bootstrap-datetimejs - https://github.com/Eonasdan/bootstrap-datetimepicker - Copyright (c) 2015 Jonathan Peterson - ========================================================= - */ -!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j={},k=b().startOf("d"),l=k.clone(),m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==g.indexOf("Y");case"M":return-1!==g.indexOf("M");case"d":return-1!==g.toLowerCase().indexOf("d");case"h":case"H":return-1!==g.toLowerCase().indexOf("h");case"m":return-1!==g.indexOf("m");case"s":return-1!==g.indexOf("s");default:return!1}},y=function(){return x("h")||x("m")||x("s")},z=function(){return x("y")||x("M")||x("d")},A=function(){var b=a("").append(a("").append(a("").addClass("prev").attr("data-action","previous").append(a("").addClass(d.icons.previous))).append(a("").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("").addClass("next").attr("data-action","next").append(a("").addClass(d.icons.next)))),c=a("").append(a("").append(a("").attr("colspan",d.calendarWeeks?"8":"7")));return[a("
    ").addClass("datepicker-days").append(a("").addClass("table-condensed").append(b).append(a(""))),a("
    ").addClass("datepicker-months").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
    ").addClass("datepicker-years").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone())),a("
    ").addClass("datepicker-decades").append(a("
    ").addClass("table-condensed").append(b.clone()).append(c.clone()))]},B=function(){var b=a(""),c=a(""),e=a("");return x("h")&&(b.append(a("
    ").append(a("").attr({href:"#",tabindex:"-1",title:"Increment Hour"}).addClass("btn").attr("data-action","incrementHours").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-hour").attr({"data-time-component":"hours",title:"Pick Hour"}).attr("data-action","showHours"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:"Decrement Hour"}).addClass("btn").attr("data-action","decrementHours").append(a("").addClass(d.icons.down))))),x("m")&&(x("h")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:"Increment Minute"}).addClass("btn").attr("data-action","incrementMinutes").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:"Pick Minute"}).attr("data-action","showMinutes"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:"Decrement Minute"}).addClass("btn").attr("data-action","decrementMinutes").append(a("").addClass(d.icons.down))))),x("s")&&(x("m")&&(b.append(a("").addClass("separator")),c.append(a("").addClass("separator").html(":")),e.append(a("").addClass("separator"))),b.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:"Increment Second"}).addClass("btn").attr("data-action","incrementSeconds").append(a("").addClass(d.icons.up)))),c.append(a("").append(a("").addClass("timepicker-second").attr({"data-time-component":"seconds",title:"Pick Second"}).attr("data-action","showSeconds"))),e.append(a("").append(a("").attr({href:"#",tabindex:"-1",title:"Decrement Second"}).addClass("btn").attr("data-action","decrementSeconds").append(a("").addClass(d.icons.down))))),f||(b.append(a("").addClass("separator")),c.append(a("").append(a("").addClass("separator"))),a("
    ").addClass("timepicker-picker").append(a("").addClass("table-condensed").append([b,c,e]))},C=function(){var b=a("
    ").addClass("timepicker-hours").append(a("
    ").addClass("table-condensed")),c=a("
    ").addClass("timepicker-minutes").append(a("
    ").addClass("table-condensed")),d=a("
    ").addClass("timepicker-seconds").append(a("
    ").addClass("table-condensed")),e=[B()];return x("h")&&e.push(b),x("m")&&e.push(c),x("s")&&e.push(d),e},D=function(){var b=[];return d.showTodayButton&&b.push(a("
    ").append(a("").attr({"data-action":"today",title:d.tooltips.today}).append(a("").addClass(d.icons.today)))),!d.sideBySide&&z()&&y()&&b.push(a("").append(a("").attr({"data-action":"togglePicker",title:"Select Time"}).append(a("").addClass(d.icons.time)))),d.showClear&&b.push(a("").append(a("").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("").addClass(d.icons.clear)))),d.showClose&&b.push(a("").append(a("").attr({"data-action":"close",title:d.tooltips.close}).append(a("").addClass(d.icons.close)))),a("").addClass("table-condensed").append(a("").append(a("").append(b)))},E=function(){var b=a("
    ").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("
    ").addClass("datepicker").append(A()),e=a("
    ").addClass("timepicker").append(C()),g=a("
      ").addClass("list-unstyled"),h=a("
    • ").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(D());return d.inline&&b.removeClass("dropdown-menu"),f&&b.addClass("usetwentyfour"),x("s")&&!f&&b.addClass("wider"),d.sideBySide&&z()&&y()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(h),b.append(a("
      ").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(h),b):("top"===d.toolbarPlacement&&g.append(h),z()&&g.append(a("
    • ").addClass(d.collapse&&y()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&g.append(h),y()&&g.append(a("
    • ").addClass(d.collapse&&z()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&g.append(h),b.append(g))},F=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},G=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"relative"!==b.css("position")&&(b=b.parents().filter(function(){return"relative"===a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a relative positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?e.top+c.outerHeight():"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},H=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},I=function(a){"y"===a&&(a="YYYY"),H({type:"dp.update",change:a,viewDate:l.clone()})},J=function(a){o&&(a&&(i=Math.max(p,Math.min(3,i+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[i].clsName).show())},K=function(){var b=a("
    "),c=l.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a(""),d.calendarWeeks&&e.append('"),j.push(e)),f="",c.isBefore(l,"M")&&(f+=" old"),c.isAfter(l,"M")&&(f+=" new"),c.isSame(k,"d")&&!m&&(f+=" active"),P(c,"d")||(f+=" disabled"),c.isSame(b(),"d")&&(f+=" today"),(0===c.day()||6===c.day())&&(f+=" weekend"),e.append('"),c.add(1,"d");h.find("tbody").empty().append(j),R(),S(),T()}},V=function(){var b=o.find(".timepicker-hours table"),c=l.clone().startOf("d"),d=[],e=a("");for(l.hour()>11&&!f&&c.hour(12);c.isSame(l,"d")&&(f||l.hour()<12&&c.hour()<12||l.hour()>11);)c.hour()%4===0&&(e=a(""),d.push(e)),e.append('"),c.add(1,"h");b.empty().append(d)},W=function(){for(var b=o.find(".timepicker-minutes table"),c=l.clone().startOf("h"),e=[],f=a(""),g=1===d.stepping?5:d.stepping;l.isSame(c,"h");)c.minute()%(4*g)===0&&(f=a(""),e.push(f)),f.append('"),c.add(g,"m");b.empty().append(e)},X=function(){for(var b=o.find(".timepicker-seconds table"),c=l.clone().startOf("m"),d=[],e=a("");l.isSame(c,"m");)c.second()%20===0&&(e=a(""),d.push(e)),e.append('"),c.add(5,"s");b.empty().append(d)},Y=function(){var a,b,c=o.find(".timepicker span[data-time-component]");f||(a=o.find(".timepicker [data-action=togglePeriod]"),b=k.clone().add(k.hours()>=12?-12:12,"h"),a.text(k.format("A")),P(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(k.format(f?"HH":"hh")),c.filter("[data-time-component=minutes]").text(k.format("mm")),c.filter("[data-time-component=seconds]").text(k.format("ss")),V(),W(),X()},Z=function(){o&&(U(),Y())},$=function(a){var b=m?null:k;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(P(a)?(k=a,l=k.clone(),e.val(k.format(g)),c.data("date",k.format(g)),m=!1,Z(),H({type:"dp.change",date:k.clone(),oldDate:b})):(d.keepInvalid||e.val(m?"":k.format(g)),H({type:"dp.error",date:a})))):(m=!0,e.val(""),c.data("date",""),H({type:"dp.change",date:!1,oldDate:b}),void Z())},_=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?j:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",G),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,H({type:"dp.hide",date:k.clone()}),e.blur(),j)):j},aa=function(){$(null)},ba={next:function(){var a=q[i].navFnc;l.add(q[i].navStep,a),U(),I(a)},previous:function(){var a=q[i].navFnc;l.subtract(q[i].navStep,a),U(),I(a)},pickerSwitch:function(){J(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));l.month(c),i===p?($(k.clone().year(l.year()).month(l.month())),d.inline||_()):(J(-1),U()),I("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;l.year(c),i===p?($(k.clone().year(l.year())),d.inline||_()):(J(-1),U()),I("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;l.year(c),i===p?($(k.clone().year(l.year())),d.inline||_()):(J(-1),U()),I("YYYY")},selectDay:function(b){var c=l.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),$(c.date(parseInt(a(b.target).text(),10))),y()||d.keepOpen||d.inline||_()},incrementHours:function(){var a=k.clone().add(1,"h");P(a,"h")&&$(a)},incrementMinutes:function(){var a=k.clone().add(d.stepping,"m");P(a,"m")&&$(a)},incrementSeconds:function(){var a=k.clone().add(1,"s");P(a,"s")&&$(a)},decrementHours:function(){var a=k.clone().subtract(1,"h");P(a,"h")&&$(a)},decrementMinutes:function(){var a=k.clone().subtract(d.stepping,"m");P(a,"m")&&$(a)},decrementSeconds:function(){var a=k.clone().subtract(1,"s");P(a,"s")&&$(a)},togglePeriod:function(){$(k.clone().add(k.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);f||(k.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),$(k.clone().hours(c)),ba.showPicker.call(j)},selectMinute:function(b){$(k.clone().minutes(parseInt(a(b.target).text(),10))),ba.showPicker.call(j)},selectSecond:function(b){$(k.clone().seconds(parseInt(a(b.target).text(),10))),ba.showPicker.call(j)},clear:aa,today:function(){P(b(),"d")&&$(b())},close:_},ca=function(b){return a(b.currentTarget).is(".disabled")?!1:(ba[a(b.currentTarget).data("action")].apply(j,arguments),!1)},da=function(){var c,f={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return e.prop("disabled")||!d.ignoreReadonly&&e.prop("readonly")||o?j:(void 0!==e.val()&&0!==e.val().trim().length?$(fa(e.val().trim())):d.useCurrent&&m&&(e.is("input")&&0===e.val().trim().length||d.inline)&&(c=b(),"string"==typeof d.useCurrent&&(c=f[d.useCurrent](c)),$(c)),o=E(),K(),Q(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),Z(),J(),a(window).on("resize",G),o.on("click","[data-action]",ca),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),o.show(),G(),d.focusOnShow&&!e.is(":focus")&&e.focus(),H({type:"dp.show"}),j)},ea=function(){return o?_():da()},fa=function(a){return a=void 0===d.parseInputDate?b.isMoment(a)||a instanceof Date?b(a):b(a,h,d.useStrict):d.parseInputDate(a),a.locale(d.locale),a},ga=function(a){var b,c,e,f,g=null,h=[],i={},k=a.which,l="p";w[k]=l;for(b in w)w.hasOwnProperty(b)&&w[b]===l&&(h.push(b),parseInt(b,10)!==k&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[k]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(j,o),a.stopPropagation(),a.preventDefault())},ha=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ia=function(b){var c=a(b.target).val().trim(),d=c?fa(c):null;return $(d),b.stopImmediatePropagation(),!1},ja=function(){e.on({change:ia,blur:d.debug?"":_,keydown:ga,keyup:ha,focus:d.allowInputToggle?da:""}),c.is("input")?e.on({focus:da}):n&&(n.on("click",ea),n.on("mousedown",!1))},ka=function(){e.off({change:ia,blur:blur,keydown:ga,keyup:ha,focus:d.allowInputToggle?_:""}),c.is("input")?e.off({focus:da}):n&&(n.off("click",ea),n.off("mousedown",!1))},la=function(b){var c={};return a.each(b,function(){var a=fa(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},ma=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},na=function(){var a=d.format||"L LT";g=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=k.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return k.localeData().longDateFormat(a)||a})}),h=d.extraFormats?d.extraFormats.slice():[],h.indexOf(a)<0&&h.indexOf(g)<0&&h.push(g),f=g.toLowerCase().indexOf("a")<1&&g.replace(/\[.*?\]/g,"").indexOf("h")<1,x("y")&&(p=2),x("M")&&(p=1),x("d")&&(p=0),i=Math.max(p,i),m||$(k)};if(j.destroy=function(){_(),ka(),c.removeData("DateTimePicker"),c.removeData("date")},j.toggle=ea,j.show=da,j.hide=_,j.disable=function(){return _(),n&&n.hasClass("btn")&&n.addClass("disabled"),e.prop("disabled",!0),j},j.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),e.prop("disabled",!1),j},j.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,j},j.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===j[a])throw new TypeError("option "+a+" is not recognized!");j[a](b)}),j},j.date=function(a){if(0===arguments.length)return m?null:k.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return $(null===a?null:fa(a)),j},j.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a sting or boolean:false parameter "+a);return d.format=a,g&&na(),j},j.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,j},j.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,h&&na(),j},j.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,Z(),j;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=la(b),d.enabledDates=!1,Z(),j},j.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,Z(),j;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=la(b),d.disabledDates=!1,Z(),j},j.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,Z(),j;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!P(k,"d");){if(k.add(1,"d"),7===b)throw"Tried 7 times to find a valid date";b++}$(k)}return Z(),j},j.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,Z(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=fa(a);if(!c.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&c.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+c.format(g));return d.maxDate=c,d.useCurrent&&!d.keepInvalid&&k.isAfter(a)&&$(d.maxDate),l.isAfter(c)&&(l=c.clone().subtract(d.stepping,"m")),Z(),j},j.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,Z(),j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=fa(a);if(!c.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&c.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+c.format(g));return d.minDate=c,d.useCurrent&&!d.keepInvalid&&k.isBefore(a)&&$(d.minDate),l.isBefore(c)&&(l=c.clone().add(d.stepping,"m")),Z(),j},j.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,j;"string"==typeof a&&("now"===a||"moment"===a)&&(a=b());var c=fa(a);if(!c.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!P(c))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=c,(d.defaultDate&&d.inline||""===e.val().trim()&&void 0===e.attr("placeholder"))&&$(d.defaultDate),j},j.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,k.locale(d.locale),l.locale(d.locale),g&&na(),o&&(_(),da()),j},j.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,j)},j.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,j},j.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?j:(d.collapse=a,o&&(_(),da()),j)},j.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(_(),da()),j},j.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(_(),da()),j},j.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,j},j.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(_(),da()),j},j.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,i=Math.max(r.indexOf(a),p),J(),j},j.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(_(),da()),j},j.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return Z(),j},j.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,Z(),j},j.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(_(),da()),j},j.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(_(),da()),j},j.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(_(),da()),j},j.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,j},j.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,j},j.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,j},j.clear=function(){return aa(),j},j.keyBinds=function(a){return d.keyBinds=a,j},j.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,j},j.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,j},j.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,j},j.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");return d.keepInvalid=a,j},j.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,j},j.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,j},j.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,Z(),j;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,Z(),j},j.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,Z(),j;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter"); - if(d.disabledHours=ma(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!P(k,"h");){if(k.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}$(k)}return Z(),j},j.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,Z(),j;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=ma(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!P(k,"h");){if(k.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}$(k)}return Z(),j},j.viewDate=function(a){if(0===arguments.length)return l.clone();if(!a)return l=k.clone(),j;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return l=fa(a),I(),j},c.is("input"))e=c;else if(e=c.find(d.datepickerInput),0===e.size())e=c.find("input");else if(!e.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").size()?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!e.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return a.extend(!0,d,F()),j.options(d),na(),ja(),e.prop("disabled")&&j.disable(),e.is("input")&&0!==e.val().trim().length?$(fa(e.val().trim())):d.defaultDate&&void 0===e.attr("placeholder")&&$(d.defaultDate),d.inline&&da(),j};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data("DateTimePicker")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data("DateTimePicker",c(d,b)))})},a.fn.datetimepicker.defaults={format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")?this.date(c.clone().subtract(7,"d")):this.date(c.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var c=this.date()||b();a.find(".datepicker").is(":visible")?this.date(c.clone().add(7,"d")):this.date(c.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")?this.date(c.clone().subtract(1,"y")):this.date(c.clone().add(1,"h"))}},"control down":function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")?this.date(c.clone().add(1,"y")):this.date(c.clone().subtract(1,"h"))}},left:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"d"))}},right:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"d"))}},pageUp:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var c=this.date()||b();a.find(".datepicker").is(":visible")&&this.date(c.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(b())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}}); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/eecd007.css b/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/eecd007.css deleted file mode 100644 index 6dccc24c..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/bootstrap-datetimepicker/eecd007.css +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Datetimepicker for Bootstrap 3 - * version : 4.15.35 - * https://github.com/Eonasdan/bootstrap-datetimepicker/ - */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0} \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/jqplot/07b8b55.js b/web/assets/backOffice/default/template-assets/assets/js/jqplot/07b8b55.js deleted file mode 100644 index f25712c3..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/jqplot/07b8b55.js +++ /dev/null @@ -1,3 +0,0 @@ -/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com - jsDate | (c) 2010-2013 Chris Leonello - */(function(L){var u;L.fn.emptyForce=function(){for(var ah=0,ai;(ai=L(this)[ah])!=null;ah++){if(ai.nodeType===1){L.cleanData(ai.getElementsByTagName("*"))}if(L.jqplot.use_excanvas){ai.outerHTML=""}else{while(ai.firstChild){ai.removeChild(ai.firstChild)}}ai=null}return L(this)};L.fn.removeChildForce=function(ah){while(ah.firstChild){this.removeChildForce(ah.firstChild);ah.removeChild(ah.firstChild)}};L.fn.jqplot=function(){var ah=[];var aj=[];for(var ak=0,ai=arguments.length;ak'+ao+"");L("#"+an).addClass("jqplot-error");document.getElementById(an).style.background=L.jqplot.config.errorBackground;document.getElementById(an).style.border=L.jqplot.config.errorBorder;document.getElementById(an).style.fontFamily=L.jqplot.config.errorFontFamily;document.getElementById(an).style.fontSize=L.jqplot.config.errorFontSize;document.getElementById(an).style.fontStyle=L.jqplot.config.errorFontStyle;document.getElementById(an).style.fontWeight=L.jqplot.config.errorFontWeight}}else{am.init(an,aj,ah);am.draw();am.themeEngine.init.call(am);return am}};L.jqplot.version="1.0.8";L.jqplot.revision="1250";L.jqplot.targetCounter=1;L.jqplot.CanvasManager=function(){if(typeof L.jqplot.CanvasManager.canvases=="undefined"){L.jqplot.CanvasManager.canvases=[];L.jqplot.CanvasManager.free=[]}var ah=[];this.getCanvas=function(){var ak;var aj=true;if(!L.jqplot.use_excanvas){for(var al=0,ai=L.jqplot.CanvasManager.canvases.length;al887){L.jqplot.support_canvas_text.result=true}else{L.jqplot.support_canvas_text.result=!!(document.createElement("canvas").getContext&&typeof document.createElement("canvas").getContext("2d").fillText=="function")}}return L.jqplot.support_canvas_text.result};L.jqplot.use_excanvas=((!L.support.boxModel||!L.support.objectAll||!$support.leadingWhitespace)&&!L.jqplot.support_canvas())?true:false;L.jqplot.preInitHooks=[];L.jqplot.postInitHooks=[];L.jqplot.preParseOptionsHooks=[];L.jqplot.postParseOptionsHooks=[];L.jqplot.preDrawHooks=[];L.jqplot.postDrawHooks=[];L.jqplot.preDrawSeriesHooks=[];L.jqplot.postDrawSeriesHooks=[];L.jqplot.preDrawLegendHooks=[];L.jqplot.addLegendRowHooks=[];L.jqplot.preSeriesInitHooks=[];L.jqplot.postSeriesInitHooks=[];L.jqplot.preParseSeriesOptionsHooks=[];L.jqplot.postParseSeriesOptionsHooks=[];L.jqplot.eventListenerHooks=[];L.jqplot.preDrawSeriesShadowHooks=[];L.jqplot.postDrawSeriesShadowHooks=[];L.jqplot.ElemContainer=function(){this._elem;this._plotWidth;this._plotHeight;this._plotDimensions={height:null,width:null}};L.jqplot.ElemContainer.prototype.createElement=function(ak,am,ai,aj,an){this._offsets=am;var ah=ai||"jqplot";var al=document.createElement(ak);this._elem=L(al);this._elem.addClass(ah);this._elem.css(aj);this._elem.attr(an);al=null;return this._elem};L.jqplot.ElemContainer.prototype.getWidth=function(){if(this._elem){return this._elem.outerWidth(true)}else{return null}};L.jqplot.ElemContainer.prototype.getHeight=function(){if(this._elem){return this._elem.outerHeight(true)}else{return null}};L.jqplot.ElemContainer.prototype.getPosition=function(){if(this._elem){return this._elem.position()}else{return{top:null,left:null,bottom:null,right:null}}};L.jqplot.ElemContainer.prototype.getTop=function(){return this.getPosition().top};L.jqplot.ElemContainer.prototype.getLeft=function(){return this.getPosition().left};L.jqplot.ElemContainer.prototype.getBottom=function(){return this._elem.css("bottom")};L.jqplot.ElemContainer.prototype.getRight=function(){return this._elem.css("right")};function w(ah){L.jqplot.ElemContainer.call(this);this.name=ah;this._series=[];this.show=false;this.tickRenderer=L.jqplot.AxisTickRenderer;this.tickOptions={};this.labelRenderer=L.jqplot.AxisLabelRenderer;this.labelOptions={};this.label=null;this.showLabel=true;this.min=null;this.max=null;this.autoscale=false;this.pad=1.2;this.padMax=null;this.padMin=null;this.ticks=[];this.numberTicks;this.tickInterval;this.renderer=L.jqplot.LinearAxisRenderer;this.rendererOptions={};this.showTicks=true;this.showTickMarks=true;this.showMinorTicks=true;this.drawMajorGridlines=true;this.drawMinorGridlines=false;this.drawMajorTickMarks=true;this.drawMinorTickMarks=true;this.useSeriesColor=false;this.borderWidth=null;this.borderColor=null;this.scaleToHiddenSeries=false;this._dataBounds={min:null,max:null};this._intervalStats=[];this._offsets={min:null,max:null};this._ticks=[];this._label=null;this.syncTicks=null;this.tickSpacing=75;this._min=null;this._max=null;this._tickInterval=null;this._numberTicks=null;this.__ticks=null;this._options={}}w.prototype=new L.jqplot.ElemContainer();w.prototype.constructor=w;w.prototype.init=function(){if(L.isFunction(this.renderer)){this.renderer=new this.renderer()}this.tickOptions.axis=this.name;if(this.tickOptions.showMark==null){this.tickOptions.showMark=this.showTicks}if(this.tickOptions.showMark==null){this.tickOptions.showMark=this.showTickMarks}if(this.tickOptions.showLabel==null){this.tickOptions.showLabel=this.showTicks}if(this.label==null||this.label==""){this.showLabel=false}else{this.labelOptions.label=this.label}if(this.showLabel==false){this.labelOptions.show=false}if(this.pad==0){this.pad=1}if(this.padMax==0){this.padMax=1}if(this.padMin==0){this.padMin=1}if(this.padMax==null){this.padMax=(this.pad-1)/2+1}if(this.padMin==null){this.padMin=(this.pad-1)/2+1}this.pad=this.padMax+this.padMin-1;if(this.min!=null||this.max!=null){this.autoscale=false}if(this.syncTicks==null&&this.name.indexOf("y")>-1){this.syncTicks=true}else{if(this.syncTicks==null){this.syncTicks=false}}this.renderer.init.call(this,this.rendererOptions)};w.prototype.draw=function(ah,ai){if(this.__ticks){this.__ticks=null}return this.renderer.draw.call(this,ah,ai)};w.prototype.set=function(){this.renderer.set.call(this)};w.prototype.pack=function(ai,ah){if(this.show){this.renderer.pack.call(this,ai,ah)}if(this._min==null){this._min=this.min;this._max=this.max;this._tickInterval=this.tickInterval;this._numberTicks=this.numberTicks;this.__ticks=this._ticks}};w.prototype.reset=function(){this.renderer.reset.call(this)};w.prototype.resetScale=function(ah){L.extend(true,this,{min:null,max:null,numberTicks:null,tickInterval:null,_ticks:[],ticks:[]},ah);this.resetDataBounds()};w.prototype.resetDataBounds=function(){var ao=this._dataBounds;ao.min=null;ao.max=null;var ai,ap,am;var aj=(this.show)?true:false;for(var al=0;alao.max)||ao.max==null){ao.max=am[ak][0]}}else{if((am[ak][ah]!=null&&am[ak][ah]ao.max)||ao.max==null){ao.max=am[ak][an]}}}if(aj&&ap.renderer.constructor!==L.jqplot.BarRenderer){aj=false}else{if(aj&&this._options.hasOwnProperty("forceTickAt0")&&this._options.forceTickAt0==false){aj=false}else{if(aj&&ap.renderer.constructor===L.jqplot.BarRenderer){if(ap.barDirection=="vertical"&&this.name!="xaxis"&&this.name!="x2axis"){if(this._options.pad!=null||this._options.padMin!=null){aj=false}}else{if(ap.barDirection=="horizontal"&&(this.name=="xaxis"||this.name=="x2axis")){if(this._options.pad!=null||this._options.padMin!=null){aj=false}}}}}}}}if(aj&&this.renderer.constructor===L.jqplot.LinearAxisRenderer&&ao.min>=0){this.padMin=1;this.forceTickAt0=true}};function q(ah){L.jqplot.ElemContainer.call(this);this.show=false;this.location="ne";this.labels=[];this.showLabels=true;this.showSwatches=true;this.placement="insideGrid";this.xoffset=0;this.yoffset=0;this.border;this.background;this.textColor;this.fontFamily;this.fontSize;this.rowSpacing="0.5em";this.renderer=L.jqplot.TableLegendRenderer;this.rendererOptions={};this.preDraw=false;this.marginTop=null;this.marginRight=null;this.marginBottom=null;this.marginLeft=null;this.escapeHtml=false;this._series=[];L.extend(true,this,ah)}q.prototype=new L.jqplot.ElemContainer();q.prototype.constructor=q;q.prototype.setOptions=function(ah){L.extend(true,this,ah);if(this.placement=="inside"){this.placement="insideGrid"}if(this.xoffset>0){if(this.placement=="insideGrid"){switch(this.location){case"nw":case"w":case"sw":if(this.marginLeft==null){this.marginLeft=this.xoffset+"px"}this.marginRight="0px";break;case"ne":case"e":case"se":default:if(this.marginRight==null){this.marginRight=this.xoffset+"px"}this.marginLeft="0px";break}}else{if(this.placement=="outside"){switch(this.location){case"nw":case"w":case"sw":if(this.marginRight==null){this.marginRight=this.xoffset+"px"}this.marginLeft="0px";break;case"ne":case"e":case"se":default:if(this.marginLeft==null){this.marginLeft=this.xoffset+"px"}this.marginRight="0px";break}}}this.xoffset=0}if(this.yoffset>0){if(this.placement=="outside"){switch(this.location){case"sw":case"s":case"se":if(this.marginTop==null){this.marginTop=this.yoffset+"px"}this.marginBottom="0px";break;case"ne":case"n":case"nw":default:if(this.marginBottom==null){this.marginBottom=this.yoffset+"px"}this.marginTop="0px";break}}else{if(this.placement=="insideGrid"){switch(this.location){case"sw":case"s":case"se":if(this.marginBottom==null){this.marginBottom=this.yoffset+"px"}this.marginTop="0px";break;case"ne":case"n":case"nw":default:if(this.marginTop==null){this.marginTop=this.yoffset+"px"}this.marginBottom="0px";break}}}this.yoffset=0}};q.prototype.init=function(){if(L.isFunction(this.renderer)){this.renderer=new this.renderer()}this.renderer.init.call(this,this.rendererOptions)};q.prototype.draw=function(ai,aj){for(var ah=0;ah');this.target.append(az);az.height(aD);az.width(aA);az.css("top",this.eventCanvas._offsets.top);az.css("left",this.eventCanvas._offsets.left);var aC=L('
    ');az.append(aC);aC.html(this.noDataIndicator.indicator);var aB=aC.height();var ax=aC.width();aC.height(aB);aC.width(ax);aC.css("top",(aD-aB)/2+"px")})}}this.data=L.extend(true,[],ar);this.parseOptions(ay);if(this.textColor){this.target.css("color",this.textColor)}if(this.fontFamily){this.target.css("font-family",this.fontFamily)}if(this.fontSize){this.target.css("font-size",this.fontSize)}this.title.init();this.legend.init();this._sumy=0;this._sumx=0;this.computePlotData();for(var at=0;at0){for(var aq=au;aq--;){var an=this._plotData[aq][ap][av];if(aw*an>=0){this._plotData[au][ap][av]+=an;this._stackData[au][ap][av]+=an;break}}}}}else{for(var ar=0;ar0){at._prevPlotData=this.series[au-1]._plotData}at._sumy=0;at._sumx=0;for(ar=at.data.length-1;ar>-1;ar--){at._sumy+=at.data[ar][1];at._sumx+=at.data[ar][0]}}};this.populatePlotData=function(au,av){this._plotData=[];this._stackData=[];au._stackData=[];au._plotData=[];var ay={x:[],y:[]};if(this.stackSeries&&!au.disableStack){au._stack=true;var ax=(au._stackAxis==="x")?0:1;var az=L.extend(true,[],au.data);var aA=L.extend(true,[],au.data);var an,am,ao,aw,al;for(var ar=0;ar=0){aA[aq][ax]+=aw}}}for(var at=0;at0){au._prevPlotData=this.series[av-1]._plotData}au._sumy=0;au._sumx=0;for(at=au.data.length-1;at>-1;at--){au._sumy+=au.data[at][1];au._sumx+=au.data[at][0]}};this.getNextSeriesColor=(function(am){var al=0;var an=am.seriesColors;return function(){if(al=0&&an>=0){al.top+=aK;al.bottom+=aK;al.left+=an;al.right+=an}}var am=["top","bottom","left","right"];for(var aB in am){if(this._gridPadding[am[aB]]==null&&al[am[aB]]>0){this._gridPadding[am[aB]]=al[am[aB]]}else{if(this._gridPadding[am[aB]]==null){this._gridPadding[am[aB]]=this._defaultGridPadding[am[aB]]}}}var aA=this._gridPadding;if(this.legend.placement==="outsideGrid"){aA={top:this.title.getHeight(),left:0,right:0,bottom:0};if(this.legend.location==="s"){aA.left=this._gridPadding.left;aA.right=this._gridPadding.right}}ar.xaxis.pack({position:"absolute",bottom:this._gridPadding.bottom-ar.xaxis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});ar.yaxis.pack({position:"absolute",top:0,left:this._gridPadding.left-ar.yaxis.getWidth(),height:this._height},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});ar.x2axis.pack({position:"absolute",top:this._gridPadding.top-ar.x2axis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});for(aH=8;aH>0;aH--){ar[aG[aH-1]].pack({position:"absolute",top:0,right:this._gridPadding.right-az[aH-1]},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top})}var au=(this._width-this._gridPadding.left-this._gridPadding.right)/2+this._gridPadding.left-ar.yMidAxis.getWidth()/2;ar.yMidAxis.pack({position:"absolute",top:0,left:au,zIndex:9,textAlign:"center"},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});this.target.append(this.grid.createElement(this._gridPadding,this));this.grid.draw();var aq=this.series;var aJ=aq.length;for(aH=0,aE=aJ;aHax)?av:ax;var ar=this.series[aw];var aq=this.series[au];if(aq.renderer.smooth){var ap=aq.renderer._smoothedData.slice(0).reverse()}else{var ap=aq.gridData.slice(0).reverse()}if(ar.renderer.smooth){var at=ar.renderer._smoothedData.concat(ap)}else{var at=ar.gridData.concat(ap)}var ao=(an.color!==null)?an.color:this.series[ax].fillColor;var ay=(an.baseSeries!==null)?an.baseSeries:aw;var am=this.series[ay].renderer.shapeRenderer;var al={fillStyle:ao,fill:true,closePath:true};am.draw(ar.shadowCanvas._ctx,at,al)};this.bindCustomEvents=function(){this.eventCanvas._elem.bind("click",{plot:this},this.onClick);this.eventCanvas._elem.bind("dblclick",{plot:this},this.onDblClick);this.eventCanvas._elem.bind("mousedown",{plot:this},this.onMouseDown);this.eventCanvas._elem.bind("mousemove",{plot:this},this.onMouseMove);this.eventCanvas._elem.bind("mouseenter",{plot:this},this.onMouseEnter);this.eventCanvas._elem.bind("mouseleave",{plot:this},this.onMouseLeave);if(this.captureRightClick){this.eventCanvas._elem.bind("mouseup",{plot:this},this.onRightClick);this.eventCanvas._elem.get(0).oncontextmenu=function(){return false}}else{this.eventCanvas._elem.bind("mouseup",{plot:this},this.onMouseUp)}};function ai(av){var au=av.data.plot;var ap=au.eventCanvas._elem.offset();var at={x:av.pageX-ap.left,y:av.pageY-ap.top};var aq={xaxis:null,yaxis:null,x2axis:null,y2axis:null,y3axis:null,y4axis:null,y5axis:null,y6axis:null,y7axis:null,y8axis:null,y9axis:null,yMidAxis:null};var ar=["xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];var al=au.axes;var am,ao;for(am=11;am>0;am--){ao=ar[am-1];if(al[ao].show){aq[ao]=al[ao].series_p2u(at[ao.charAt(0)])}}return{offsets:ap,gridPos:at,dataPos:aq}}function ak(al,am){var aq=am.series;var aW,aU,aT,aO,aP,aJ,aI,aw,au,az,aA,aK;var aS,aX,aQ,ar,aH,aM,aV;var an,aN;for(aT=am.seriesStack.length-1;aT>=0;aT--){aW=am.seriesStack[aT];aO=aq[aW];aV=aO._highlightThreshold;switch(aO.renderer.constructor){case L.jqplot.BarRenderer:aJ=al.x;aI=al.y;for(aU=0;aUaH[0][0]&&aJaH[2][1]&&aIaH[0][0]+aV[0][0]&&aJaH[2][1]&&aI0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aPaO._innerRadius){for(aU=0;aU0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aP0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw=ay[0][1]&&aI<=ay[3][1]&&aJ>=at[0]&&aJ<=aE[0]){return{seriesIndex:aO.index,pointIndex:aU,gridData:null,data:aO.data[aU]}}}break;case L.jqplot.LineRenderer:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){if((aO.fill||(aO.renderer.bands.show&&aO.renderer.bands.fill))&&(!am.plugins.highlighter||!am.plugins.highlighter.show)){var ax=false;if(aJ>aO._boundingBox[0][0]&&aJaO._boundingBox[1][1]&&aI=aI||aB[1]=aI){if(aC[0]+(aI-aC[1])/(aB[1]-aC[1])*(aB[0]-aC[0])0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{if(aQ[0]!=null&&aQ[1]!=null){aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}}}break;default:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){aN=aO.markerRenderer.size/2+aO.neighborThreshold;an=(aN>0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}break}}return null}this.onClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onDblClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotDblClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseDown=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseDown");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseUp=function(an){var am=ai(an);var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,null,an.data.plot])};this.onRightClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);if(ap.captureRightClick){if(an.which==3){var al=L.Event("jqplotRightClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}else{var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}}};this.onMouseMove=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseMove");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseEnter=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseEnter");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.onMouseLeave=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseLeave");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.drawSeries=function(an,al){var ap,ao,am;al=(typeof(an)==="number"&&al==null)?an:al;an=(typeof(an)==="object")?an:{};if(al!=u){ao=this.series[al];am=ao.shadowCanvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.drawShadow(am,an,this);am=ao.canvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.draw(am,an,this);if(ao.renderer.constructor==L.jqplot.BezierCurveRenderer){if(al660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak.push("rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")")}}else{var al=L.jqplot.getColorComponents(ai);var ah=[al[0],al[1],al[2]];var an=ah[0]+ah[1]+ah[2];for(var aj=0;aj<3;aj++){ah[aj]=(an>660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak="rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")"}return ak};L.jqplot.ColorGenerator=function(ai){ai=ai||L.jqplot.config.defaultColors;var ah=0;this.next=function(){if(ah0){return ai[ah--]}else{ah=ai.length-1;return ai[ah]}};this.get=function(ak){var aj=ak-ai.length*Math.floor(ak/ai.length);return ai[aj]};this.setColors=function(aj){ai=aj};this.reset=function(){ah=0};this.getIndex=function(){return ah};this.setIndex=function(aj){ah=aj}};L.jqplot.hex2rgb=function(aj,ah){aj=aj.replace("#","");if(aj.length==3){aj=aj.charAt(0)+aj.charAt(0)+aj.charAt(1)+aj.charAt(1)+aj.charAt(2)+aj.charAt(2)}var ai;ai="rgba("+parseInt(aj.slice(0,2),16)+", "+parseInt(aj.slice(2,4),16)+", "+parseInt(aj.slice(4,6),16);if(ah){ai+=", "+ah}ai+=")";return ai};L.jqplot.rgb2hex=function(am){var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/;var ah=am.match(aj);var al="#";for(var ak=1;ak<4;ak++){var ai;if(ah[ak].search(/%/)!=-1){ai=parseInt(255*ah[ak]/100,10).toString(16);if(ai.length==1){ai="0"+ai}}else{ai=parseInt(ah[ak],10).toString(16);if(ai.length==1){ai="0"+ai}}al+=ai}return al};L.jqplot.normalize2rgb=function(ai,ah){if(ai.search(/^ *rgba?\(/)!=-1){return ai}else{if(ai.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/)!=-1){return L.jqplot.hex2rgb(ai,ah)}else{throw new Error("Invalid color spec")}}};L.jqplot.getColorComponents=function(am){am=L.jqplot.colorKeywordMap[am]||am;var ak=L.jqplot.normalize2rgb(am);var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/;var ah=ak.match(aj);var ai=[];for(var al=1;al<4;al++){if(ah[al].search(/%/)!=-1){ai[al-1]=parseInt(255*ah[al]/100,10)}else{ai[al-1]=parseInt(ah[al],10)}}ai[3]=parseFloat(ah[4])?parseFloat(ah[4]):1;return ai};L.jqplot.colorKeywordMap={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",aqua:"rgb( 0, 255, 255)",aquamarine:"rgb(127, 255, 212)",azure:"rgb(240, 255, 255)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",black:"rgb( 0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb( 0, 0, 255)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",burlywood:"rgb(222, 184, 135)",cadetblue:"rgb( 95, 158, 160)",chartreuse:"rgb(127, 255, 0)",chocolate:"rgb(210, 105, 30)",coral:"rgb(255, 127, 80)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",crimson:"rgb(220, 20, 60)",cyan:"rgb( 0, 255, 255)",darkblue:"rgb( 0, 0, 139)",darkcyan:"rgb( 0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb( 0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb( 85, 107, 47)",darkorange:"rgb(255, 140, 0)",darkorchid:"rgb(153, 50, 204)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkslateblue:"rgb( 72, 61, 139)",darkslategray:"rgb( 47, 79, 79)",darkslategrey:"rgb( 47, 79, 79)",darkturquoise:"rgb( 0, 206, 209)",darkviolet:"rgb(148, 0, 211)",deeppink:"rgb(255, 20, 147)",deepskyblue:"rgb( 0, 191, 255)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb( 30, 144, 255)",firebrick:"rgb(178, 34, 34)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb( 34, 139, 34)",fuchsia:"rgb(255, 0, 255)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",goldenrod:"rgb(218, 165, 32)",gray:"rgb(128, 128, 128)",grey:"rgb(128, 128, 128)",green:"rgb( 0, 128, 0)",greenyellow:"rgb(173, 255, 47)",honeydew:"rgb(240, 255, 240)",hotpink:"rgb(255, 105, 180)",indianred:"rgb(205, 92, 92)",indigo:"rgb( 75, 0, 130)",ivory:"rgb(255, 255, 240)",khaki:"rgb(240, 230, 140)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lightblue:"rgb(173, 216, 230)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightsalmon:"rgb(255, 160, 122)",lightseagreen:"rgb( 32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightyellow:"rgb(255, 255, 224)",lime:"rgb( 0, 255, 0)",limegreen:"rgb( 50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",maroon:"rgb(128, 0, 0)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb( 0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumpurple:"rgb(147, 112, 219)",mediumseagreen:"rgb( 60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb( 0, 250, 154)",mediumturquoise:"rgb( 72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb( 25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navy:"rgb( 0, 0, 128)",oldlace:"rgb(253, 245, 230)",olive:"rgb(128, 128, 0)",olivedrab:"rgb(107, 142, 35)",orange:"rgb(255, 165, 0)",orangered:"rgb(255, 69, 0)",orchid:"rgb(218, 112, 214)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",paleturquoise:"rgb(175, 238, 238)",palevioletred:"rgb(219, 112, 147)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",plum:"rgb(221, 160, 221)",powderblue:"rgb(176, 224, 230)",purple:"rgb(128, 0, 128)",red:"rgb(255, 0, 0)",rosybrown:"rgb(188, 143, 143)",royalblue:"rgb( 65, 105, 225)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb( 46, 139, 87)",seashell:"rgb(255, 245, 238)",sienna:"rgb(160, 82, 45)",silver:"rgb(192, 192, 192)",skyblue:"rgb(135, 206, 235)",slateblue:"rgb(106, 90, 205)",slategray:"rgb(112, 128, 144)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",springgreen:"rgb( 0, 255, 127)",steelblue:"rgb( 70, 130, 180)",tan:"rgb(210, 180, 140)",teal:"rgb( 0, 128, 128)",thistle:"rgb(216, 191, 216)",tomato:"rgb(255, 99, 71)",turquoise:"rgb( 64, 224, 208)",violet:"rgb(238, 130, 238)",wheat:"rgb(245, 222, 179)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellowgreen:"rgb(154, 205, 50)"};L.jqplot.AxisLabelRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.axis;this.show=true;this.label="";this.fontFamily=null;this.fontSize=null;this.textColor=null;this._elem;this.escapeHTML=false;L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisLabelRenderer.prototype.constructor=L.jqplot.AxisLabelRenderer;L.jqplot.AxisLabelRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype.draw=function(ah,ai){if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L('
    ');if(Number(this.label)){this._elem.css("white-space","nowrap")}if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}return this._elem};L.jqplot.AxisLabelRenderer.prototype.pack=function(){};L.jqplot.AxisTickRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.mark="outside";this.axis;this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.size=4;this.markSize=6;this.show=true;this.showLabel=true;this.label=null;this.value=null;this._styles={};this.formatter=L.jqplot.DefaultTickFormatter;this.prefix="";this.suffix="";this.formatString="";this.fontFamily;this.fontSize;this.textColor;this.escapeHTML=false;this._elem;this._breakTick=false;L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisTickRenderer.prototype.constructor=L.jqplot.AxisTickRenderer;L.jqplot.AxisTickRenderer.prototype.setTick=function(ah,aj,ai){this.value=ah;this.axis=aj;if(ai){this.isMinorTick=true}return this};L.jqplot.AxisTickRenderer.prototype.draw=function(){if(this.label===null){this.label=this.prefix+this.formatter(this.formatString,this.value)+this.suffix}var ai={position:"absolute"};if(Number(this.label)){ai.whitSpace="nowrap"}if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L(document.createElement("div"));this._elem.addClass("jqplot-"+this.axis+"-tick");if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}this._elem.css(ai);for(var ah in this._styles){this._elem.css(ah,this._styles[ah])}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}if(this._breakTick){this._elem.addClass("jqplot-breakTick")}return this._elem};L.jqplot.DefaultTickFormatter=function(ah,ai){if(typeof ai=="number"){if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.PercentTickFormatter=function(ah,ai){if(typeof ai=="number"){ai=100*ai;if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.AxisTickRenderer.prototype.pack=function(){};L.jqplot.CanvasGridRenderer=function(){this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.CanvasGridRenderer.prototype.init=function(ai){this._ctx;L.extend(true,this,ai);var ah={lineJoin:"miter",lineCap:"round",fill:false,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:false,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(ah)};L.jqplot.CanvasGridRenderer.prototype.createElement=function(ak){var aj;if(this._elem){if(L.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==u){aj=this._elem.get(0);window.G_vmlCanvasManager.uninitElement(aj);aj=null}this._elem.emptyForce();this._elem=null}aj=ak.canvasManager.getCanvas();var ah=this._plotDimensions.width;var ai=this._plotDimensions.height;aj.width=ah;aj.height=ai;this._elem=L(aj);this._elem.addClass("jqplot-grid-canvas");this._elem.css({position:"absolute",left:0,top:0});aj=ak.canvasManager.initCanvas(aj);this._top=this._offsets.top;this._bottom=ai-this._offsets.bottom;this._left=this._offsets.left;this._right=ah-this._offsets.right;this._width=this._right-this._left;this._height=this._bottom-this._top;aj=null;return this._elem};L.jqplot.CanvasGridRenderer.prototype.draw=function(){this._ctx=this._elem.get(0).getContext("2d");var at=this._ctx;var aw=this._axes;at.save();at.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height);at.fillStyle=this.backgroundColor||this.background;at.fillRect(this._left,this._top,this._width,this._height);at.save();at.lineJoin="miter";at.lineCap="butt";at.lineWidth=this.gridLineWidth;at.strokeStyle=this.gridLineColor;var aA,az,ap,aq;var am=["xaxis","yaxis","x2axis","y2axis"];for(var ay=4;ay>0;ay--){var aD=am[ay-1];var ah=aw[aD];var aB=ah._ticks;var ar=aB.length;if(ah.show){if(ah.drawBaseline){var aC={};if(ah.baselineWidth!==null){aC.lineWidth=ah.baselineWidth}if(ah.baselineColor!==null){aC.strokeStyle=ah.baselineColor}switch(aD){case"xaxis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"yaxis":ao(this._left,this._bottom,this._left,this._top,aC);break;case"x2axis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"y2axis":ao(this._right,this._bottom,this._right,this._top,aC);break}}for(var au=ar;au>0;au--){var an=aB[au-1];if(an.show){var ak=Math.round(ah.u2p(an.value))+0.5;switch(aD){case"xaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._top,ak,this._bottom)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._bottom;az=this._bottom+ap;break;case"inside":aA=this._bottom-ap;az=this._bottom;break;case"cross":aA=this._bottom-ap;az=this._bottom+ap;break;default:aA=this._bottom;az=this._bottom+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"yaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._right,ak,this._left,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._left-ap;az=this._left;break;case"inside":aA=this._left;az=this._left+ap;break;case"cross":aA=this._left-ap;az=this._left+ap;break;default:aA=this._left-ap;az=this._left;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;case"x2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._bottom,ak,this._top)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._top-ap;az=this._top;break;case"inside":aA=this._top;az=this._top+ap;break;case"cross":aA=this._top-ap;az=this._top+ap;break;default:aA=this._top-ap;az=this._top;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"y2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._left,ak,this._right,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._right;az=this._right+ap;break;case"inside":aA=this._right-ap;az=this._right;break;case"cross":aA=this._right-ap;az=this._right+ap;break;default:aA=this._right;az=this._right+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;default:break}}}an=null}ah=null;aB=null}am=["y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];for(var ay=7;ay>0;ay--){var ah=aw[am[ay-1]];var aB=ah._ticks;if(ah.show){var ai=aB[ah.numberTicks-1];var al=aB[0];var aj=ah.getLeft();var av=[[aj,ai.getTop()+ai.getHeight()/2],[aj,al.getTop()+al.getHeight()/2+1]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",fill:false,closePath:false})}ao(av[0][0],av[0][1],av[1][0],av[1][1],{lineCap:"butt",strokeStyle:ah.borderColor,lineWidth:ah.borderWidth});for(var au=aB.length;au>0;au--){var an=aB[au-1];ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;if(an.showMark&&an.mark){switch(aq){case"outside":aA=aj;az=aj+ap;break;case"inside":aA=aj-ap;az=aj;break;case"cross":aA=aj-ap;az=aj+ap;break;default:aA=aj;az=aj+ap;break}av=[[aA,ak],[az,ak]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}an=null}al=null}ah=null;aB=null}at.restore();function ao(aH,aG,aE,ax,aF){at.save();aF=aF||{};if(aF.lineWidth==null||aF.lineWidth!=0){L.extend(true,at,aF);at.beginPath();at.moveTo(aH,aG);at.lineTo(aE,ax);at.stroke();at.restore()}}if(this.shadow){var av=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(at,av)}if(this.borderWidth!=0&&this.drawBorder){ao(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:aw.x2axis.borderColor,lineWidth:aw.x2axis.borderWidth});ao(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:aw.y2axis.borderColor,lineWidth:aw.y2axis.borderWidth});ao(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:aw.xaxis.borderColor,lineWidth:aw.xaxis.borderWidth});ao(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:aw.yaxis.borderColor,lineWidth:aw.yaxis.borderWidth})}at.restore();at=null;aw=null};L.jqplot.DivTitleRenderer=function(){};L.jqplot.DivTitleRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.DivTitleRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}var ak=this.renderer;var aj=document.createElement("div");this._elem=L(aj);this._elem.addClass("jqplot-title");if(!this.text){this.show=false;this._elem.height(0);this._elem.width(0)}else{if(this.text){var ah;if(this.color){ah=this.color}else{if(this.textColor){ah=this.textColor}}var ai={position:"absolute",top:"0px",left:"0px"};if(this._plotWidth){ai.width=this._plotWidth+"px"}if(this.fontSize){ai.fontSize=this.fontSize}if(typeof this.textAlign==="string"){ai.textAlign=this.textAlign}else{ai.textAlign="center"}if(ah){ai.color=ah}if(this.paddingBottom){ai.paddingBottom=this.paddingBottom}if(this.fontFamily){ai.fontFamily=this.fontFamily}this._elem.css(ai);if(this.escapeHtml){this._elem.text(this.text)}else{this._elem.html(this.text)}}}aj=null;return this._elem};L.jqplot.DivTitleRenderer.prototype.pack=function(){};var r=0.1;L.jqplot.LinePattern=function(aw,aq){var ap={dotted:[r,L.jqplot.config.dotGapLength],dashed:[L.jqplot.config.dashLength,L.jqplot.config.gapLength],solid:null};if(typeof aq==="string"){if(aq[0]==="."||aq[0]==="-"){var ax=aq;aq=[];for(var ao=0,al=ax.length;ao0)&&(aC>0)){aA/=aB;az/=aB;while(true){var aD=aC*ar;if(aD=aq.length){ak=0}ar=aq[ak]}else{au=ay;at=aE;if((ak&1)==0){aw.lineTo(au,at)}else{aw.moveTo(au,at)}ar-=aB/aC;break}}}};var ai=function(){aw.beginPath()};var am=function(){aj(an,ah)};return{moveTo:av,lineTo:aj,beginPath:ai,closePath:am}};L.jqplot.LineRenderer=function(){this.shapeRenderer=new L.jqplot.ShapeRenderer();this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.LineRenderer.prototype.init=function(ai,an){ai=ai||{};this._type="line";this.renderer.animation={show:false,direction:"left",speed:2500,_supported:true};this.renderer.smooth=false;this.renderer.tension=null;this.renderer.constrainSmoothing=true;this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];this.renderer.bandData=[];this.renderer.bands={show:false,hiData:[],lowData:[],color:this.color,showLines:false,fill:true,fillColor:null,_min:null,_max:null,interval:"3%"};var al={highlightMouseOver:ai.highlightMouseOver,highlightMouseDown:ai.highlightMouseDown,highlightColor:ai.highlightColor};delete (ai.highlightMouseOver);delete (ai.highlightMouseDown);delete (ai.highlightColor);L.extend(true,this.renderer,ai);this.renderer.options=ai;if(this.renderer.bandData.length>1&&(!ai.bands||ai.bands.show==null)){this.renderer.bands.show=true}else{if(ai.bands&&ai.bands.show==null&&ai.bands.interval!=null){this.renderer.bands.show=true}}if(this.fill){this.renderer.bands.show=false}if(this.renderer.bands.show){this.renderer.initBands.call(this,this.renderer.options,an)}if(this._stack){this.renderer.smooth=false}var am={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,strokeStyle:this.color,fillStyle:this.fillColor,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shapeRenderer.init(am);var aj=ai.shadowOffset;if(aj==null){if(this.lineWidth>2.5){aj=1.25*(1+(Math.atan((this.lineWidth/2.5))/0.785398163-1)*0.6)}else{aj=1.25*Math.atan((this.lineWidth/2.5))/0.785398163}}var ah={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,angle:this.shadowAngle,offset:aj,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shadowRenderer.init(ah);this._areaPoints=[];this._boundingBox=[[],[]];if(!this.isTrendline&&this.fill||this.renderer.bands.show){this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColor=null;if(al.highlightMouseDown&&al.highlightMouseOver==null){al.highlightMouseOver=false}L.extend(true,this,{highlightMouseOver:al.highlightMouseOver,highlightMouseDown:al.highlightMouseDown,highlightColor:al.highlightColor});if(!this.highlightColor){var ak=(this.renderer.bands.show)?this.renderer.bands.fillColor:this.fillColor;this.highlightColor=L.jqplot.computeHighlightColors(ak)}if(this.highlighter){this.highlighter.show=false}}if(!this.isTrendline&&an){an.plugins.lineRenderer={};an.postInitHooks.addOnce(z);an.postDrawHooks.addOnce(af);an.eventListenerHooks.addOnce("jqplotMouseMove",h);an.eventListenerHooks.addOnce("jqplotMouseDown",e);an.eventListenerHooks.addOnce("jqplotMouseUp",ad);an.eventListenerHooks.addOnce("jqplotClick",g);an.eventListenerHooks.addOnce("jqplotRightClick",s)}};L.jqplot.LineRenderer.prototype.initBands=function(ak,av){var al=ak.bandData||[];var an=this.renderer.bands;an.hiData=[];an.lowData=[];var aB=this.data;an._max=null;an._min=null;if(al.length==2){if(L.isArray(al[0][0])){var ao;var ah=0,ar=0;for(var aw=0,at=al[0].length;awan._max)||an._max==null){an._max=ao[1]}if((ao[1]!=null&&ao[1]an._max)||an._max==null){an._max=ao[1];ar=1}if((ao[1]!=null&&ao[1]al[1][0])?0:1;var aC=(aj)?0:1;for(var aw=0,at=aB.length;aw2&&!L.isArray(al[0][0])){var aj=(al[0][0]>al[0][1])?0:1;var aC=(aj)?0:1;for(var aw=0,at=al.length;awan._max)||an._max==null){an._max=am[aw][1]}}for(var aw=0,at=ap.length;aw0){aR=Math.abs((ap[aQ][1]-ap[aQ-1][1])/(ap[aQ][0]-ap[aQ-1][0]))}am=aR/aG+aE;aM=aF*A(am)-aF*A(aE)+aS;aT=(aO+aM)/2}else{aT=aU}for(aK=0;aK2){var ao;if(this.renderer.constrainSmoothing){ao=J.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}else{ao=F.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}}};L.jqplot.LineRenderer.prototype.makeGridData=function(ao,aq){var am=this._xaxis.series_u2p;var ah=this._yaxis.series_u2p;var ar=[];var aj=[];this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];var al=this.renderer.bands;var ai=false;for(var an=0;an2){var ap;if(this.renderer.constrainSmoothing){ap=J.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}else{ap=F.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}}return ar};L.jqplot.LineRenderer.prototype.draw=function(ax,aI,ai,aB){var aC;var aq=L.extend(true,{},ai);var ak=(aq.shadow!=u)?aq.shadow:this.shadow;var aJ=(aq.showLine!=u)?aq.showLine:this.showLine;var aA=(aq.fill!=u)?aq.fill:this.fill;var ah=(aq.fillAndStroke!=u)?aq.fillAndStroke:this.fillAndStroke;var ar,ay,av,aE;ax.save();if(aI.length){if(aJ){if(aA){if(this.fillToZero){var aF=this.negativeColor;if(!this.useNegativeColors){aF=aq.fillStyle}var ao=false;var ap=aq.fillStyle;if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var aw=[];var aL=(this.renderer.smooth)?this.renderer._smoothedPlotData:this._plotData;this._areaPoints=[];var aG=this._yaxis.series_u2p(this.fillToValue);var aj=this._xaxis.series_u2p(this.fillToValue);aq.closePath=true;if(this.fillAxis=="y"){aw.push([aI[0][0],aG]);this._areaPoints.push([aI[0][0],aG]);for(var aC=0;aC0;aC--){aI.push(au[aC-1])}if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this._areaPoints=aI;this.renderer.shapeRenderer.draw(ax,aI,aq)}}else{if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var al=ax.canvas.height;aI.unshift([aI[0][0],al]);var aD=aI.length;aI.push([aI[aD-1][0],al])}else{var au=this._prevGridData;for(var aC=au.length;aC>0;aC--){aI.push(au[aC-1])}}this._areaPoints=aI;if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this.renderer.shapeRenderer.draw(ax,aI,aq)}if(ah){var az=L.extend(true,{},aq,{fill:false,closePath:false});this.renderer.shapeRenderer.draw(ax,aH,az);if(this.markerRenderer.show){if(this.renderer.smooth){aH=this.gridData}for(aC=0;aCat[0]||ar==null){ar=at[0]}if(aEat[1]||ay==null){ay=at[1]}}if(this.type==="line"&&this.renderer.bands.show){aE=this._yaxis.series_u2p(this.renderer.bands._min);ay=this._yaxis.series_u2p(this.renderer.bands._max)}this._boundingBox=[[ar,aE],[av,ay]];if(this.markerRenderer.show&&!aA){if(this.renderer.smooth){aI=this.gridData}for(aC=0;aCao){ao=aj}}}al=null;am=null;if(ah){ai=this._label._elem.outerWidth(true);an=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){ao=ao+ai;this._elem.css({width:ao+"px",left:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}else{ao=ao+ai;this._elem.css({width:ao+"px",right:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}}}}};L.jqplot.LinearAxisRenderer.prototype.createTicks=function(aj){var aT=this._ticks;var aK=this.ticks;var az=this.name;var aB=this._dataBounds;var ah=(this.name.charAt(0)==="x")?this._plotDimensions.width:this._plotDimensions.height;var an;var a6,aI;var ap,ao;var a4,a0;var aH=this.min;var a5=this.max;var aW=this.numberTicks;var ba=this.tickInterval;var am=30;this._scalefact=(Math.max(ah,am+1)-am)/300;if(aK.length){for(a0=0;a0this.breakPoints[0]&&aO[0]<=this.breakPoints[1]){aU.show=false;aU.showGridline=false;aU.label=aO[1]}else{aU.label=aO[1]}}}else{aU.label=aO[1]}aU.setTick(aO[0],this.name);this._ticks.push(aU)}else{if(L.isPlainObject(aO)){L.extend(true,aU,aO);aU.axis=this.name;this._ticks.push(aU)}else{aU.value=aO;if(this.breakPoints){if(aO==this.breakPoints[0]){aU.label=this.breakTickLabel;aU._breakTick=true;aU.showGridline=false;aU.showMark=false}else{if(aO>this.breakPoints[0]&&aO<=this.breakPoints[1]){aU.show=false;aU.showGridline=false}}}aU.setTick(aO,this.name);this._ticks.push(aU)}}}this.numberTicks=aK.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.tickInterval=(this.max-this.min)/(this.numberTicks-1)}else{if(az=="xaxis"||az=="x2axis"){ah=this._plotDimensions.width}else{ah=this._plotDimensions.height}var ax=this.numberTicks;if(this.alignTicks){if(this.name==="x2axis"&&aj.axes.xaxis.show){ax=aj.axes.xaxis.numberTicks}else{if(this.name.charAt(0)==="y"&&this.name!=="yaxis"&&this.name!=="yMidAxis"&&aj.axes.yaxis.show){ax=aj.axes.yaxis.numberTicks}}}a6=((this.min!=null)?this.min:aB.min);aI=((this.max!=null)?this.max:aB.max);var av=aI-a6;var aS,ay;var at;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}if(this.min==null||this.max==null&&this.tickInterval==null&&!this.autoscale){if(this.forceTickAt0){if(a6>0){a6=0}if(aI<0){aI=0}}if(this.forceTickAt100){if(a6>100){a6=100}if(aI<100){aI=100}}var aE=false,a1=false;if(this.min!=null){aE=true}else{if(this.max!=null){a1=true}}var aP=L.jqplot.LinearTickGenerator(a6,aI,this._scalefact,ax,aE,a1);var aw=(this.min!=null)?a6:a6+av*(this.padMin-1);var aQ=(this.max!=null)?aI:aI-av*(this.padMax-1);if(a6aQ){aw=(this.min!=null)?a6:a6-av*(this.padMin-1);aQ=(this.max!=null)?aI:aI+av*(this.padMax-1);aP=L.jqplot.LinearTickGenerator(aw,aQ,this._scalefact,ax,aE,a1)}this.min=aP[0];this.max=aP[1];this.numberTicks=aP[2];this._autoFormatString=aP[3];this.tickInterval=aP[4]}else{if(a6==aI){var ai=0.05;if(a6>0){ai=Math.max(Math.log(a6)/Math.LN10,0.05)}a6-=ai;aI+=ai}if(this.autoscale&&this.min==null&&this.max==null){var ak,al,ar;var aC=false;var aN=false;var aA={min:null,max:null,average:null,stddev:null};for(var a0=0;a0a2){a2=aR[aZ]}}}var au=(a2-aG)/a2;if(aV.renderer.constructor==L.jqplot.BarRenderer){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{aC=false;if(aV.fill&&aV.fillToZero&&aG<0&&a2>0){aN=true}else{aN=false}}}else{if(aV.fill){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{if(aG<0&&a2>0&&aV.fillToZero){aC=false;aN=true}else{aC=false;aN=false}}}else{if(aG<0){aC=false}}}}}if(aC){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);this.min=0;aH=0;al=aI/(this.numberTicks-1);at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));if(al/at==parseInt(al/at,10)){al+=at}this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*(this.numberTicks-1)}else{if(aN){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);var aJ=Math.ceil(Math.abs(a6)/av*(this.numberTicks-1));var a9=this.numberTicks-1-aJ;al=Math.max(Math.abs(a6/aJ),Math.abs(aI/a9));at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*a9;this.min=-this.tickInterval*aJ}else{if(this.numberTicks==null){if(this.tickInterval){this.numberTicks=3+Math.ceil(av/this.tickInterval)}else{this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing)}}if(this.tickInterval==null){al=av/(this.numberTicks-1);if(al<1){at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)))}else{at=1}this.tickInterval=Math.ceil(al*at*this.pad)/at}else{at=1/this.tickInterval}ak=this.tickInterval*(this.numberTicks-1);ar=(ak-av)/2;if(this.min==null){this.min=Math.floor(at*(a6-ar))/at}if(this.max==null){this.max=this.min+ak}}}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM}else{aS=(this.min!=null)?this.min:a6-av*(this.padMin-1);ay=(this.max!=null)?this.max:aI+av*(this.padMax-1);av=ay-aS;if(this.numberTicks==null){if(this.tickInterval!=null){this.numberTicks=Math.ceil((ay-aS)/this.tickInterval)+1}else{if(ah>100){this.numberTicks=parseInt(3+(ah-100)/75,10)}else{this.numberTicks=2}}}if(this.tickInterval==null){this.tickInterval=av/(this.numberTicks-1)}if(this.max==null){ay=aS+this.tickInterval*(this.numberTicks-1)}if(this.min==null){aS=ay-this.tickInterval*(this.numberTicks-1)}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM;this.min=aS;this.max=ay}if(this.renderer.constructor==L.jqplot.LinearAxisRenderer&&this._autoFormatString==""){av=this.max-this.min;var a7=new this.tickRenderer(this.tickOptions);var aL=a7.formatString||L.jqplot.config.defaultTickFormatString;var aL=aL.match(L.jqplot.sprintf.regex)[0];var a3=0;if(aL){if(aL.search(/[fFeEgGpP]/)>-1){var aY=aL.match(/\%\.(\d{0,})?[eEfFgGpP]/);if(aY){a3=parseInt(aY[1],10)}else{a3=6}}else{if(aL.search(/[di]/)>-1){a3=0}}var aq=Math.pow(10,-a3);if(this.tickIntervalthis.breakPoints[0]&&aAthis.breakPoints[0]&&aAthis.breakPoints[0]&&aA=this.breakPoints[1]){return(aA-au)*ak/al}else{return(aA+this.breakPoints[1]-this.breakPoints[0]-au)*ak/al}};this.series_p2u=function(aA){return aA*al/ak+au}}}else{this.p2u=function(aA){return(aA-am)*al/ak+at};this.u2p=function(aA){return(aA-at)*ak/al+am};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(aA){return(aA-at)*ak/al};this.series_p2u=function(aA){return aA*al/ak+at}}else{this.series_u2p=function(aA){return(aA-au)*ak/al};this.series_p2u=function(aA){return aA*al/ak+au}}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(var av=0;av0){ah=-ap._textRenderer.height*Math.cos(-ap._textRenderer.angle)/2}else{ah=-ap.getHeight()+ap._textRenderer.height*Math.cos(ap._textRenderer.angle)/2}break;case"middle":ah=-ap.getHeight()/2;break;default:ah=-ap.getHeight()/2;break}}else{ah=-ap.getHeight()/2}var az=this.u2p(ap.value)+ah+"px";ap._elem.css("top",az);ap.pack()}}if(aq){var aw=this._label._elem.outerHeight(true);this._label._elem.css("top",ao-ak/2-aw/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}ay=null};function i(ai){var ah;ai=Math.abs(ai);if(ai>=10){ah="%d"}else{if(ai>1){if(ai===parseInt(ai,10)){ah="%d"}else{ah="%.1f"}}else{var aj=-Math.floor(Math.log(ai)/Math.LN10);ah="%."+aj+"f"}}return ah}var b=[0.1,0.2,0.3,0.4,0.5,0.8,1,2,3,4,5];var c=function(ai){var ah=b.indexOf(ai);if(ah>0){return b[ah-1]}else{return b[b.length-1]/100}};var k=function(ai){var ah=b.indexOf(ai);if(ah5){ah=10*aj}else{if(am>2){ah=5*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}else{if(am>5){ah=10*aj}else{if(am>4){ah=5*aj}else{if(am>3){ah=4*aj}else{if(am>2){ah=3*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}}}return ah}function Q(ai,ah){ah=ah||1;var ak=Math.floor(Math.log(ai)/Math.LN10);var am=Math.pow(10,ak);var al=ai/am;var aj;al=al/ah;if(al<=0.38){aj=0.1}else{if(al<=1.6){aj=0.2}else{if(al<=4){aj=0.5}else{if(al<=8){aj=1}else{if(al<=16){aj=2}else{aj=5}}}}}return aj*am}function x(aj,ai){var al=Math.floor(Math.log(aj)/Math.LN10);var an=Math.pow(10,al);var am=aj/an;var ah;var ak;am=am/ai;if(am<=0.38){ak=0.1}else{if(am<=1.6){ak=0.2}else{if(am<=4){ak=0.5}else{if(am<=8){ak=1}else{if(am<=16){ak=2}else{ak=5}}}}}ah=ak*an;return[ah,ak,an]}L.jqplot.LinearTickGenerator=function(an,aq,aj,ak,ao,ar){ao=(ao===null)?false:ao;ar=(ar===null||ao)?false:ar;if(an===aq){aq=(aq)?0:1}aj=aj||1;if(aqat){at=aB}if(ai>aA){aA=ai}})}an.width=at+Number(av);an.height=aA+Number(ax);var ak=an.getContext("2d");ak.save();ak.fillStyle=al;ak.fillRect(0,0,an.width,an.height);ak.restore();ak.translate(au,ar);ak.textAlign="left";ak.textBaseline="top";function aC(aE){var aF=parseInt(L(aE).css("line-height"),10);if(isNaN(aF)){aF=parseInt(L(aE).css("font-size"),10)*1.2}return aF}function aD(aF,aE,aS,aG,aO,aH){var aQ=aC(aF);var aK=L(aF).innerWidth();var aL=L(aF).innerHeight();var aN=aS.split(/\s+/);var aR=aN.length;var aP="";var aM=[];var aU=aO;var aT=aG;for(var aJ=0;aJaK){aM.push(aJ);aP="";aJ--}}if(aM.length===0){if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aS,aT,aO)}else{aP=aN.slice(0,aM[0]).join(" ");if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aP,aT,aU);aU+=aQ;for(var aJ=1,aI=aM.length;aJ0){ak.strokeRect(aI,aL,L(aG).innerWidth(),L(aG).innerHeight())}L(aG).find("div.jqplot-table-legend-swatch-outline").each(function(){var aU=L(this);ak.strokeStyle=aU.css("border-top-color");var aQ=aI+aU.position().left;var aR=aL+aU.position().top;ak.strokeRect(aQ,aR,aU.innerWidth(),aU.innerHeight());aQ+=parseInt(aU.css("padding-left"),10);aR+=parseInt(aU.css("padding-top"),10);var aT=aU.innerHeight()-2*parseInt(aU.css("padding-top"),10);var aP=aU.innerWidth()-2*parseInt(aU.css("padding-left"),10);var aS=aU.children("div.jqplot-table-legend-swatch");ak.fillStyle=aS.css("background-color");ak.fillRect(aQ,aR,aP,aT)});L(aG).find("td.jqplot-table-legend-label").each(function(){var aR=L(this);var aP=aI+aR.position().left;var aQ=aL+aR.position().top+parseInt(aR.css("padding-top"),10);ak.font=aR.jqplotGetComputedFontStyle();ak.fillStyle=aR.css("color");aD(aR,ak,aR.text(),aP,aQ,aM)});var aH=null}else{if(aN=="canvas"){ak.drawImage(aG,aI,aL)}}}}L(this).children().each(function(){aw(this,av,ax)});return an};L.fn.jqplotToImageStr=function(ai){var ah=L(this).jqplotToImageCanvas(ai);if(ah){return ah.toDataURL("image/png")}else{return null}};L.fn.jqplotToImageElem=function(ah){var ai=document.createElement("img");var aj=L(this).jqplotToImageStr(ah);ai.src=aj;return ai};L.fn.jqplotToImageElemStr=function(ah){var ai="";return ai};L.fn.jqplotSaveImage=function(){var ah=L(this).jqplotToImageStr({});if(ah){window.location.href=ah.replace("image/png","image/octet-stream")}};L.fn.jqplotViewImage=function(){var ai=L(this).jqplotToImageElemStr({});var aj=L(this).jqplotToImageStr({});if(ai){var ah=window.open("");ah.document.open("image/png");ah.document.write(ai);ah.document.close();ah=null}};var ag=function(){this.syntax=ag.config.syntax;this._type="jsDate";this.proxy=new Date();this.options={};this.locale=ag.regional.getLocale();this.formatString="";this.defaultCentury=ag.config.defaultCentury;switch(arguments.length){case 0:break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ak))};ag.prototype.getAbbrDayName=function(){return ag.regional[this.locale]["dayNamesShort"][this.proxy.getDay()]};ag.prototype.getAbbrMonthName=function(){return ag.regional[this.locale]["monthNamesShort"][this.proxy.getMonth()]};ag.prototype.getAMPM=function(){return this.proxy.getHours()>=12?"PM":"AM"};ag.prototype.getAmPm=function(){return this.proxy.getHours()>=12?"pm":"am"};ag.prototype.getCentury=function(){return parseInt(this.proxy.getFullYear()/100,10)};ag.prototype.getDate=function(){return this.proxy.getDate()};ag.prototype.getDay=function(){return this.proxy.getDay()};ag.prototype.getDayOfWeek=function(){var ah=this.proxy.getDay();return ah===0?7:ah};ag.prototype.getDayOfYear=function(){var ai=this.proxy;var ah=ai-new Date(""+ai.getFullYear()+"/1/1 GMT");ah+=ai.getTimezoneOffset()*60000;ai=null;return parseInt(ah/60000/60/24,10)+1};ag.prototype.getDayName=function(){return ag.regional[this.locale]["dayNames"][this.proxy.getDay()]};ag.prototype.getFullWeekOfYear=function(){var ak=this.proxy;var ah=this.getDayOfYear();var aj=6-ak.getDay();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getFullYear=function(){return this.proxy.getFullYear()};ag.prototype.getGmtOffset=function(){var ah=this.proxy.getTimezoneOffset()/60;var ai=ah<0?"+":"-";ah=Math.abs(ah);return ai+N(Math.floor(ah),2)+":"+N((ah%1)*60,2)};ag.prototype.getHours=function(){return this.proxy.getHours()};ag.prototype.getHours12=function(){var ah=this.proxy.getHours();return ah>12?ah-12:(ah==0?12:ah)};ag.prototype.getIsoWeek=function(){var ak=this.proxy;var aj=this.getWeekOfYear();var ah=(new Date(""+ak.getFullYear()+"/1/1")).getDay();var ai=aj+(ah>4||ah<=1?0:1);if(ai==53&&(new Date(""+ak.getFullYear()+"/12/31")).getDay()<4){ai=1}else{if(ai===0){ak=new ag(new Date(""+(ak.getFullYear()-1)+"/12/31"));ai=ak.getIsoWeek()}}ak=null;return ai};ag.prototype.getMilliseconds=function(){return this.proxy.getMilliseconds()};ag.prototype.getMinutes=function(){return this.proxy.getMinutes()};ag.prototype.getMonth=function(){return this.proxy.getMonth()};ag.prototype.getMonthName=function(){return ag.regional[this.locale]["monthNames"][this.proxy.getMonth()]};ag.prototype.getMonthNumber=function(){return this.proxy.getMonth()+1};ag.prototype.getSeconds=function(){return this.proxy.getSeconds()};ag.prototype.getShortYear=function(){return this.proxy.getYear()%100};ag.prototype.getTime=function(){return this.proxy.getTime()};ag.prototype.getTimezoneAbbr=function(){return this.proxy.toString().replace(/^.*\(([^)]+)\)$/,"$1")};ag.prototype.getTimezoneName=function(){var ah=/(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString());return ah[1]||ah[2]||"GMT"+this.getGmtOffset()};ag.prototype.getTimezoneOffset=function(){return this.proxy.getTimezoneOffset()};ag.prototype.getWeekOfYear=function(){var ah=this.getDayOfYear();var aj=7-this.getDayOfWeek();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getUnix=function(){return Math.round(this.proxy.getTime()/1000,0)};ag.prototype.getYear=function(){return this.proxy.getYear()};ag.prototype.next=function(ah){ah=ah||"day";return this.clone().add(1,ah)};ag.prototype.set=function(){switch(arguments.length){case 0:this.proxy=new Date();break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ah/12));var ai=aj.getMonth()+(ah%12);if(ai==12){ai=0;aj.setYear(aj.getFullYear()+1)}else{if(ai==-1){ai=11;aj.setYear(aj.getFullYear()-1)}}aj.setMonth(ai)},diff:function(al,aj){var ah=al.getFullYear()-aj.getFullYear();var ai=al.getMonth()-aj.getMonth()+(ah*12);var ak=al.getDate()-aj.getDate();return ai+(ak/30)}},year:{add:function(ai,ah){ai.setYear(ai.getFullYear()+Math[ah>0?"floor":"ceil"](ah))},diff:function(ai,ah){return E.month.diff(ai,ah)/12}}};for(var Y in E){if(Y.substring(Y.length-1)!="s"){E[Y+"s"]=E[Y]}}var H=function(al,ak,ai){if(ag.formats[ai]["shortcuts"][ak]){return ag.strftime(al,ag.formats[ai]["shortcuts"][ak],ai)}else{var ah=(ag.formats[ai]["codes"][ak]||"").split(".");var aj=al["get"+ah[0]]?al["get"+ah[0]]():"";if(ah[1]){aj=N(aj,ah[1])}return aj}};ag.strftime=function(an,ak,aj,ao){var ai="perl";var am=ag.regional.getLocale();if(aj&&ag.formats.hasOwnProperty(aj)){ai=aj}else{if(aj&&ag.regional.hasOwnProperty(aj)){am=aj}}if(ao&&ag.formats.hasOwnProperty(ao)){ai=ao}else{if(ao&&ag.regional.hasOwnProperty(ao)){am=ao}}if(l(an)!="[object Object]"||an._type!="jsDate"){an=new ag(an);an.locale=am}if(!ak){ak=an.formatString||ag.regional[am]["formatString"]}var ah=ak||"%Y-%m-%d",ap="",al;while(ah.length>0){if(al=ah.match(ag.formats[ai].codes.matcher)){ap+=ah.slice(0,al.index);ap+=(al[1]||"")+H(an,al[2],ai);ah=ah.slice(al.index+al[0].length)}else{ap+=ah;ah=""}}return ap};ag.formats={ISO:"%Y-%m-%dT%H:%M:%S.%N%G",SQL:"%Y-%m-%d %H:%M:%S"};ag.formats.perl={codes:{matcher:/()%(#?(%|[a-z]))/i,Y:"FullYear",y:"ShortYear.2",m:"MonthNumber.2","#m":"MonthNumber",B:"MonthName",b:"AbbrMonthName",d:"Date.2","#d":"Date",e:"Date",A:"DayName",a:"AbbrDayName",w:"Day",H:"Hours.2","#H":"Hours",I:"Hours12.2","#I":"Hours12",p:"AMPM",M:"Minutes.2","#M":"Minutes",S:"Seconds.2","#S":"Seconds",s:"Unix",N:"Milliseconds.3","#N":"Milliseconds",O:"TimezoneOffset",Z:"TimezoneName",G:"GmtOffset"},shortcuts:{F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",D:"%m/%d/%y","#c":"%a %b %e %H:%M:%S %Y",v:"%e-%b-%Y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.formats.php={codes:{matcher:/()%((%|[a-z]))/i,a:"AbbrDayName",A:"DayName",d:"Date.2",e:"Date",j:"DayOfYear.3",u:"DayOfWeek",w:"Day",U:"FullWeekOfYear.2",V:"IsoWeek.2",W:"WeekOfYear.2",b:"AbbrMonthName",B:"MonthName",m:"MonthNumber.2",h:"AbbrMonthName",C:"Century.2",y:"ShortYear.2",Y:"FullYear",H:"Hours.2",I:"Hours12.2",l:"Hours12",p:"AMPM",P:"AmPm",M:"Minutes.2",S:"Seconds.2",s:"Unix",O:"TimezoneOffset",z:"GmtOffset",Z:"TimezoneAbbr"},shortcuts:{D:"%m/%d/%y",F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.createDate=function(aj){if(aj==null){return new Date()}if(aj instanceof Date){return aj}if(typeof aj=="number"){return new Date(aj)}var ao=String(aj).replace(/^\s*(.+)\s*$/g,"$1");ao=ao.replace(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/,"$1/$2/$3");ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{4})/i,"$1 $2 $3");var an=ao.match(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i);if(an&&an.length>3){var at=parseFloat(an[3]);var am=ag.config.defaultCentury+at;am=String(am);ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i,an[1]+" "+an[2]+" "+am)}an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})[^0-9]/);function ar(ax,aw){var aC=parseFloat(aw[1]);var aB=parseFloat(aw[2]);var aA=parseFloat(aw[3]);var az=ag.config.defaultCentury;var av,au,aD,ay;if(aC>31){au=aA;aD=aB;av=az+aC}else{au=aB;aD=aC;av=az+aA}ay=aD+"/"+au+"/"+av;return ax.replace(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})/,ay)}if(an&&an.length>3){ao=ar(ao,an)}var an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})$/);if(an&&an.length>3){ao=ar(ao,an)}var al=0;var ai=ag.matchers.length;var aq,ah,ap=ao,ak;while(al31){ah=an;ai=am+ao}else{ah=ao;ai=am+an}var ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNamesShort"]);if(ap==-1){ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNames"])}ak.setFullYear(ai,ap,ah);ak.setHours(0,0,0,0);return ak}else{return al}}];function ab(aj,ak){if(ak.indexOf){return ak.indexOf(aj)}for(var ah=0,ai=ak.length;ah=ap)?"":Array(1+ap-au.length>>>0).join(aq);return at?au+ar:ar+au}function ak(ar){var aq=new String(ar);for(var ap=10;ap>0;ap--){if(aq==(aq=aq.replace(/^(\d+)(\d{3})/,"$1"+L.jqplot.sprintf.thousandsSeparator+"$2"))){break}}return aq}function aj(av,au,ax,ar,at,aq){var aw=ar-av.length;if(aw>0){var ap=" ";if(aq){ap=" "}if(ax||!at){av=an(av,ar,ap,ax)}else{av=av.slice(0,au.length)+an("",aw,"0",true)+av.slice(au.length)}}return av}function ao(ay,aq,aw,ar,ap,av,ax,au){var at=ay>>>0;aw=aw&&at&&{"2":"0b","8":"0","16":"0x"}[aq]||"";ay=aw+an(at.toString(aq),av||0,"0",false);return aj(ay,aw,ar,ap,ax,au)}function ah(au,av,ar,ap,at,aq){if(ap!=null){au=au.slice(0,ap)}return aj(au,"",av,ar,at,aq)}var ai=arguments,al=0,am=ai[al++];return am.replace(L.jqplot.sprintf.regex,function(aM,ax,ay,aB,aO,aJ,av){if(aM=="%%"){return"%"}var aD=false,az="",aA=false,aL=false,aw=false,au=false;for(var aI=0;ay&&aI-1?6:(av=="d")?0:void (0)}else{if(aJ=="*"){aJ=+ai[al++]}else{if(aJ.charAt(0)=="*"){aJ=+ai[aJ.slice(1,-1)]}else{aJ=+aJ}}}var aF=ax?ai[ax.slice(0,-1)]:ai[al++];switch(av){case"s":if(aF==null){return""}return ah(String(aF),aD,aB,aJ,aA,aw);case"c":return ah(String.fromCharCode(+aF),aD,aB,aJ,aA,aw);case"b":return ao(aF,2,aL,aD,aB,aJ,aA,aw);case"o":return ao(aF,8,aL,aD,aB,aJ,aA,aw);case"x":return ao(aF,16,aL,aD,aB,aJ,aA,aw);case"X":return ao(aF,16,aL,aD,aB,aJ,aA,aw).toUpperCase();case"u":return ao(aF,10,aL,aD,aB,aJ,aA,aw);case"i":var ar=parseInt(+aF,10);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"d":var ar=Math.round(+aF);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"e":case"E":case"f":case"F":case"g":case"G":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var at=["toExponential","toFixed","toPrecision"]["efg".indexOf(av.toLowerCase())];var aN=["toString","toUpperCase"]["eEfFgG".indexOf(av)%2];var aK=Math.abs(ar)[at](aJ);var aE=aK.toString().split(".");aE[0]=au?ak(aE[0]):aE[0];aK=aE.join(L.jqplot.sprintf.decimalMark);aF=aH+aK;var aC=aj(aF,aH,aD,aB,aA,aw)[aN]();return aC;case"p":case"P":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aE=String(Number(Math.abs(ar)).toExponential()).split(/e|E/);var aq=(aE[0].indexOf(".")!=-1)?aE[0].length-1:String(ar).length;var aG=(aE[1]<0)?-aE[1]-1:0;if(Math.abs(ar)<1){if(aq+aG<=aJ){aF=aH+Math.abs(ar).toPrecision(aq)}else{if(aq<=aJ-1){aF=aH+Math.abs(ar).toExponential(aq-1)}else{aF=aH+Math.abs(ar).toExponential(aJ-1)}}}else{var ap=(aq<=aJ)?aq:aJ;aF=aH+Math.abs(ar).toPrecision(ap)}var aN=["toString","toUpperCase"]["pP".indexOf(av)%2];return aj(aF,aH,aD,aB,aA,aw)[aN]();case"n":return"";default:return aM}})};L.jqplot.sprintf.thousandsSeparator=",";L.jqplot.sprintf.decimalMark=".";L.jqplot.sprintf.regex=/%%|%(\d+\$)?([-+#0&\' ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g;L.jqplot.getSignificantFigures=function(al){var an=String(Number(Math.abs(al)).toExponential()).split(/e|E/);var am=(an[0].indexOf(".")!=-1)?an[0].length-1:an[0].length;var ai=(an[1]<0)?-an[1]-1:0;var ah=parseInt(an[1],10);var aj=(ah+1>0)?ah+1:0;var ak=(am<=aj)?0:am-ah-1;return{significantDigits:am,digitsLeft:aj,digitsRight:ak,zeros:ai,exponent:ah}};L.jqplot.getPrecision=function(ah){return L.jqplot.getSignificantFigures(ah).digitsRight};var X=L.uiBackCompat!==false;L.jqplot.effects={effect:{}};var m="jqplot.storage.";L.extend(L.jqplot.effects,{version:"1.9pre",save:function(ai,aj){for(var ah=0;ah").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),ah={width:ai.width(),height:ai.height()},ak=document.activeElement;ai.wrap(al);if(ai[0]===ak||L.contains(ai[0],ak)){L(ak).focus()}al=ai.parent();if(ai.css("position")==="static"){al.css({position:"relative"});ai.css({position:"relative"})}else{L.extend(aj,{position:ai.css("position"),zIndex:ai.css("z-index")});L.each(["top","left","bottom","right"],function(am,an){aj[an]=ai.css(an);if(isNaN(parseInt(aj[an],10))){aj[an]="auto"}});ai.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}ai.css(ah);return al.css(aj).show()},removeWrapper:function(ah){var ai=document.activeElement;if(ah.parent().is(".ui-effects-wrapper")){ah.parent().replaceWith(ah);if(ah[0]===ai||L.contains(ah[0],ai)){L(ai).focus()}}return ah}});function j(ai,ah,aj,ak){if(L.isPlainObject(ai)){return ai}ai={effect:ai};if(ah===u){ah={}}if(L.isFunction(ah)){ak=ah;aj=null;ah={}}if(L.type(ah)==="number"||L.fx.speeds[ah]){ak=aj;aj=ah;ah={}}if(L.isFunction(aj)){ak=aj;aj=null}if(ah){L.extend(ai,ah)}aj=aj||ah.duration;ai.duration=L.fx.off?0:typeof aj==="number"?aj:aj in L.fx.speeds?L.fx.speeds[aj]:L.fx.speeds._default;ai.complete=ak||ah.complete;return ai}function ae(ah){if(!ah||typeof ah==="number"||L.fx.speeds[ah]){return true}if(typeof ah==="string"&&!L.jqplot.effects.effect[ah]){if(X&&L.jqplot.effects[ah]){return false}return true}return false}L.fn.extend({jqplotEffect:function(ap,aq,ai,ao){var an=j.apply(this,arguments),ak=an.mode,al=an.queue,am=L.jqplot.effects.effect[an.effect],ah=!am&&X&&L.jqplot.effects[an.effect];if(L.fx.off||!(am||ah)){if(ak){return this[ak](an.duration,an.complete)}else{return this.each(function(){if(an.complete){an.complete.call(this)}})}}function aj(au){var av=L(this),at=an.complete,aw=an.mode;function ar(){if(L.isFunction(at)){at.call(av[0])}if(L.isFunction(au)){au()}}if(av.is(":hidden")?aw==="hide":aw==="show"){ar()}else{am.call(av[0],an,ar)}}if(am){return al===false?this.each(aj):this.queue(al||"fx",aj)}else{return ah.call(this,{options:an,duration:an.duration,callback:an.complete,mode:an.mode})}}});var a=/up|down|vertical/,v=/up|left|vertical|horizontal/;L.jqplot.effects.effect.blind=function(aj,ao){var ak=L(this),ar=["position","top","bottom","left","right","height","width"],ap=L.jqplot.effects.setMode(ak,aj.mode||"hide"),au=aj.direction||"up",am=a.test(au),al=am?"height":"width",aq=am?"top":"left",aw=v.test(au),an={},av=ap==="show",ai,ah,at;if(ak.parent().is(".ui-effects-wrapper")){L.jqplot.effects.save(ak.parent(),ar)}else{L.jqplot.effects.save(ak,ar)}ak.show();at=parseInt(ak.css("top"),10);ai=L.jqplot.effects.createWrapper(ak).css({overflow:"hidden"});ah=am?ai[al]()+at:ai[al]();an[al]=av?String(ah):"0";if(!aw){ak.css(am?"bottom":"right",0).css(am?"top":"left","").css({position:"absolute"});an[aq]=av?"0":String(ah)}if(av){ai.css(al,0);if(!aw){ai.css(aq,ah)}}ai.animate(an,{duration:aj.duration,easing:aj.easing,queue:false,complete:function(){if(ap==="hide"){ak.hide()}L.jqplot.effects.restore(ak,ar);L.jqplot.effects.removeWrapper(ak);ao()}})}})(jQuery); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/jqplot/plugins/85a7852.js b/web/assets/backOffice/default/template-assets/assets/js/jqplot/plugins/85a7852.js deleted file mode 100644 index 0e9d8092..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/jqplot/plugins/85a7852.js +++ /dev/null @@ -1,3 +0,0 @@ -/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com - jsDate | (c) 2010-2013 Chris Leonello - */(function(d){d.jqplot.eventListenerHooks.push(["jqplotMouseMove",f]);d.jqplot.Highlighter=function(h){this.show=d.jqplot.config.enablePlugins;this.markerRenderer=new d.jqplot.MarkerRenderer({shadow:false});this.showMarker=true;this.lineWidthAdjust=2.5;this.sizeAdjust=5;this.showTooltip=true;this.tooltipLocation="nw";this.fadeTooltip=true;this.tooltipFadeSpeed="fast";this.tooltipOffset=2;this.tooltipAxes="both";this.tooltipSeparator=", ";this.tooltipContentEditor=null;this.useAxesFormatters=true;this.tooltipFormatString="%.5P";this.formatString=null;this.yvalues=1;this.bringSeriesToFront=false;this._tooltipElem;this.isHighlighting=false;this.currentNeighbor=null;d.extend(true,this,h)};var b=["nw","n","ne","e","se","s","sw","w"];var e={nw:0,n:1,ne:2,e:3,se:4,s:5,sw:6,w:7};var c=["se","s","sw","w","nw","n","ne","e"];d.jqplot.Highlighter.init=function(k,j,i){var h=i||{};this.plugins.highlighter=new d.jqplot.Highlighter(h.highlighter)};d.jqplot.Highlighter.parseOptions=function(i,h){this.showHighlight=true};d.jqplot.Highlighter.postPlotDraw=function(){if(this.plugins.highlighter&&this.plugins.highlighter.highlightCanvas){this.plugins.highlighter.highlightCanvas.resetCanvas();this.plugins.highlighter.highlightCanvas=null}if(this.plugins.highlighter&&this.plugins.highlighter._tooltipElem){this.plugins.highlighter._tooltipElem.emptyForce();this.plugins.highlighter._tooltipElem=null}this.plugins.highlighter.highlightCanvas=new d.jqplot.GenericCanvas();this.eventCanvas._elem.before(this.plugins.highlighter.highlightCanvas.createElement(this._gridPadding,"jqplot-highlight-canvas",this._plotDimensions,this));this.plugins.highlighter.highlightCanvas.setContext();var h=document.createElement("div");this.plugins.highlighter._tooltipElem=d(h);h=null;this.plugins.highlighter._tooltipElem.addClass("jqplot-highlighter-tooltip");this.plugins.highlighter._tooltipElem.css({position:"absolute",display:"none"});this.eventCanvas._elem.before(this.plugins.highlighter._tooltipElem)};d.jqplot.preInitHooks.push(d.jqplot.Highlighter.init);d.jqplot.preParseSeriesOptionsHooks.push(d.jqplot.Highlighter.parseOptions);d.jqplot.postDrawHooks.push(d.jqplot.Highlighter.postPlotDraw);function a(m,o){var j=m.plugins.highlighter;var p=m.series[o.seriesIndex];var h=p.markerRenderer;var i=j.markerRenderer;i.style=h.style;i.lineWidth=h.lineWidth+j.lineWidthAdjust;i.size=h.size+j.sizeAdjust;var l=d.jqplot.getColorComponents(h.color);var n=[l[0],l[1],l[2]];var k=(l[3]>=0.6)?l[3]*0.6:l[3]*(2-l[3]);i.color="rgba("+n[0]+","+n[1]+","+n[2]+","+k+")";i.init();i.draw(p.gridData[o.pointIndex][0],p.gridData[o.pointIndex][1],j.highlightCanvas._ctx)}function g(A,q,m){var k=A.plugins.highlighter;var D=k._tooltipElem;var r=q.highlighter||{};var t=d.extend(true,{},k,r);if(t.useAxesFormatters){var w=q._xaxis._ticks[0].formatter;var h=q._yaxis._ticks[0].formatter;var E=q._xaxis._ticks[0].formatString;var s=q._yaxis._ticks[0].formatString;var z;var u=w(E,m.data[0]);var l=[];for(var B=1;BB||s+C>m){z.remove()}z=null;f=null}}};c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)})(jQuery); \ No newline at end of file diff --git a/web/assets/backOffice/default/template-assets/assets/js/libs/9f38298.js b/web/assets/backOffice/default/template-assets/assets/js/libs/9f38298.js deleted file mode 100644 index 3434d6c5..00000000 --- a/web/assets/backOffice/default/template-assets/assets/js/libs/9f38298.js +++ /dev/null @@ -1,6 +0,0 @@ -// Underscore.js 1.6.0 -// http://underscorejs.org -// (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -(function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this); -//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/css/4600660.css b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/css/4600660.css new file mode 100644 index 00000000..bca5a3a0 --- /dev/null +++ b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/css/4600660.css @@ -0,0 +1,66 @@ +.location-form { + margin-bottom: 20px; +} + +.location-form button { + padding: 6px 12px !important; +} + +#relay_info { + height: 450px; + overflow-y: scroll; + border: 1px solid #ccc; +} + +#relay_info table { + margin: 0; + width: 100%; +} + +#relay_info table.pickup-points > tbody > tr > td { + border-bottom: 1px solid #ccc; + margin: 0; + padding: 10px; + cursor: pointer; +} +#relay_info table.pickup-points > tbody > tr:hover { + background-color: #f5f5f5; +} + +#relay_info table.pickup-points > tbody > tr > td .name { + font-weight: bold; +} + +#relay_info table.pickup-points > tbody > tr > td .name .numero { + display: inline-block; + border-radius: 2px; + background-color:#e64b62; + color: #fff; + padding: 0 5px; + margin-right: 5px; +} + +#relay_info table.opening-hours { + width: 100%; +} + +#relay_info table.opening-hours tr td { + font-size: 90%; + padding: 3px; +} +#relay_info table.opening-hours tr:nth-child(even) { + background-color:#f5f5f5; +} + +#mondial-relay-pickup { + display: none; +} + +.pickup-home-separator { + margin-top: 20px; + border-top: 1px solid #eee; + padding-top: 30px; + margin-left: -30px; + margin-right: -30px; +} + diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/9869147.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/9869147.png new file mode 100644 index 00000000..c1685e2e Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/9869147.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/04f96ec.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/04f96ec.png new file mode 100644 index 00000000..171756f1 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/04f96ec.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/0694a96.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/0694a96.png new file mode 100644 index 00000000..78d897f2 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/0694a96.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/17c017e.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/17c017e.png new file mode 100644 index 00000000..1e1af8ec Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/17c017e.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1c41508.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1c41508.png new file mode 100644 index 00000000..d99878e0 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1c41508.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1cc1dc7.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1cc1dc7.png new file mode 100644 index 00000000..1b0f4bfa Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/1cc1dc7.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/254e282.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/254e282.png new file mode 100644 index 00000000..6a52d3df Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/254e282.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2c2fed8.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2c2fed8.png new file mode 100644 index 00000000..27d09819 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2c2fed8.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2ce698a.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2ce698a.png new file mode 100644 index 00000000..49ff5906 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/2ce698a.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/35c59c3.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/35c59c3.png new file mode 100644 index 00000000..66ddc662 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/35c59c3.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/3eeffb5.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/3eeffb5.png new file mode 100644 index 00000000..426ecef5 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/3eeffb5.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/44ddad9.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/44ddad9.png new file mode 100644 index 00000000..72cb21f3 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/44ddad9.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/45246c9.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/45246c9.png new file mode 100644 index 00000000..06ca9a82 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/45246c9.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/4fe956b.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/4fe956b.png new file mode 100644 index 00000000..606c4a6f Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/4fe956b.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/5e4f373.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/5e4f373.png new file mode 100644 index 00000000..abefd559 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/5e4f373.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6536e7d.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6536e7d.png new file mode 100644 index 00000000..b0273de2 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6536e7d.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/687a132.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/687a132.png new file mode 100644 index 00000000..94e4c780 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/687a132.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6c3bd75.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6c3bd75.png new file mode 100644 index 00000000..f9bd4f6a Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/6c3bd75.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7854278.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7854278.png new file mode 100644 index 00000000..db39e523 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7854278.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7f3d139.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7f3d139.png new file mode 100644 index 00000000..7c15dacf Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/7f3d139.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/80b352f.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/80b352f.png new file mode 100644 index 00000000..8124f359 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/80b352f.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8572aad.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8572aad.png new file mode 100644 index 00000000..7611b81a Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8572aad.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/867c8c6.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/867c8c6.png new file mode 100644 index 00000000..26b16878 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/867c8c6.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8c37dbd.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8c37dbd.png new file mode 100644 index 00000000..d6e84978 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/8c37dbd.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/956ba3a.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/956ba3a.png new file mode 100644 index 00000000..8676efc9 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/956ba3a.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/af60a52.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/af60a52.png new file mode 100644 index 00000000..8ddc2354 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/af60a52.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/b66a891.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/b66a891.png new file mode 100644 index 00000000..8218fbf2 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/b66a891.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e3589b2.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e3589b2.png new file mode 100644 index 00000000..ef1b5363 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e3589b2.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e643b1f.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e643b1f.png new file mode 100644 index 00000000..805dfbe5 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/e643b1f.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f3f82b0.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f3f82b0.png new file mode 100644 index 00000000..89991633 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f3f82b0.png differ diff --git a/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f995624.png b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f995624.png new file mode 100644 index 00000000..f28b9949 Binary files /dev/null and b/web/assets/frontOffice/aomc/MondialRelay/mondialrelay/assets/img/pins/f995624.png differ diff --git a/web/assets/frontOffice/aomc/template-assets/assets/dist/.source-stamp b/web/assets/frontOffice/aomc/template-assets/assets/dist/.source-stamp index 0fe5066d..4b83c9ba 100644 --- a/web/assets/frontOffice/aomc/template-assets/assets/dist/.source-stamp +++ b/web/assets/frontOffice/aomc/template-assets/assets/dist/.source-stamp @@ -1 +1 @@ -4b012404654a5775a06f782ac735319e \ No newline at end of file +7d5722d38363156eb111709eabd81ce7 \ No newline at end of file diff --git a/web/assets/frontOffice/aomc/template-assets/assets/dist/css/df2556c.css b/web/assets/frontOffice/aomc/template-assets/assets/dist/css/df2556c.css index dc6c0f04..fb8a3619 100644 --- a/web/assets/frontOffice/aomc/template-assets/assets/dist/css/df2556c.css +++ b/web/assets/frontOffice/aomc/template-assets/assets/dist/css/df2556c.css @@ -2,7 +2,7 @@ * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#f49a17;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#f49a17}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#f49a17}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}legend,pre{color:#7a7a7a}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#f49a17;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#f49a17;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#f49a17;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#f49a17;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#f49a17;background-color:#ccc;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#f49a17}.btn-primary{color:#fff;background-color:#f49a17;border-color:#f49a17}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#f49a17;border-color:#f49a17}.btn-primary .badge{color:#f49a17;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#f49a17}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#f49a17}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.media-object.img-thumbnail,.nav>li>a>img{max-width:none}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#f49a17}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#f49a17}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#f49a17;border-color:#f49a17;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#f49a17}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#f49a17;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#f49a17}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#f49a17;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#f49a17;border-color:#f49a17}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#f49a17}.panel-primary>.panel-heading{color:#fff;background-color:#f49a17;border-color:#f49a17}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f49a17}.panel-primary>.panel-heading .badge{color:#f49a17;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f49a17}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.cart-warning:before,.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}#product #product-gallery #product-thumbnails .carousel-control,.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-success,.open>.dropdown-toggle.btn-warning{background-image:none}.checkbox-inline,.glyphicon,.img-thumbnail,.list-inline>li,.radio-inline,label{display:inline-block}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#545776;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#545776}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#545776}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#7a7a7a;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;color:#7a7a7a;border-bottom:1px solid transparent}label{max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.btn,.caret{display:inline-block;vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{margin-bottom:0;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#545776;text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#545776;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#545776;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#545776;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#545776;background-color:#ccc;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#545776}.btn-primary{color:#fff;background-color:#545776;border-color:#545776}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#545776;border-color:#545776}.btn-primary .badge{color:#545776;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#545776}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#545776}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#545776}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#545776}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#545776}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.close,.list-group-item>.badge,.pager .next>a,.pager .next>span{float:right}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#545776;border-color:#545776;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#545776}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#545776;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#545776}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#545776;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#545776;border-color:#545776}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#545776}.panel-primary>.panel-heading{color:#fff;background-color:#545776;border-color:#545776}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#545776}.panel-primary>.panel-heading .badge{color:#545776;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#545776}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{background-image:none;display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#f49a17}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#f49a17;cursor:default;display:inherit;pointer-events:none}.breadcrumb>li+li:before,.js .dropdown-toggle:after{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}.price{color:#f49a17;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #f9c478}.btn-primary:focus,.btn-primary:hover{background-color:#f49a17;color:#b66f09}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#f49a17;border:1px solid #f49a17;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#f49a17}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#f49a17;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#f49a17;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#f49a17}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#f49a17}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#f49a17;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#f49a17;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;display:block;font-weight:400;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#f49a17;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}.availability .in-stock .out,.availability .out-of-stock .in{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px;font-weight:100}.filter .filter-content .checkbox label,.filter .filter-content .radio label{font-weight:100}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#f49a17;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#f49a17;background-color:rgba(244,154,23,.4)}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.active:after{background:#f49a17;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#f49a17}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#f49a17;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#f49a17}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#f49a17;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #f49a17;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#f49a17;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#f49a17;border-color:#f49a17;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#f49a17;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#f49a17;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#f49a17;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#f49a17}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776;color:#fff}a:focus,a:hover{color:#343649} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#545776}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#545776;cursor:default;display:inherit;pointer-events:none}.price{color:#545776;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #545776}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#545776;border:1px solid #545776;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#545776}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#545776;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#545776;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#545776}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#545776}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#545776;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#545776;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;font-weight:400;display:block;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#545776;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.availability .in-stock .out,.availability .out-of-stock .in,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.filter .filter-content .checkbox label,.filter .filter-content .radio label,.filter .filter-heading,.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#545776;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#545776}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#545776;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#545776;color:#fff}.navbar .navbar-nav>.active:after{background:#545776;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#545776}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#545776;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#545776}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#545776;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #545776;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#545776;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#545776;border-color:#545776;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#545776;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#545776}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#545776;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#545776;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#545776}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff}a:focus,a:hover{color:#343649}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}.overlay:before{background-color:rgba(84,87,118,.4)}.btn-primary:focus,.btn-primary:hover{background-color:#fff;border-color:#545776;color:#545776} \ No newline at end of file diff --git a/web/assets/frontOffice/aomc/template-assets/assets/dist/css/thelia.min.css b/web/assets/frontOffice/aomc/template-assets/assets/dist/css/thelia.min.css index dc6c0f04..fb8a3619 100644 --- a/web/assets/frontOffice/aomc/template-assets/assets/dist/css/thelia.min.css +++ b/web/assets/frontOffice/aomc/template-assets/assets/dist/css/thelia.min.css @@ -2,7 +2,7 @@ * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#f49a17;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#f49a17}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#f49a17}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}legend,pre{color:#7a7a7a}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#f49a17;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#f49a17;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#f49a17;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#f49a17;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#f49a17;background-color:#ccc;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#f49a17}.btn-primary{color:#fff;background-color:#f49a17;border-color:#f49a17}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#f49a17;border-color:#f49a17}.btn-primary .badge{color:#f49a17;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#f49a17}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#f49a17}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.media-object.img-thumbnail,.nav>li>a>img{max-width:none}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#f49a17}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#f49a17}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#f49a17;border-color:#f49a17;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#f49a17}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#f49a17;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#f49a17}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#f49a17;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#f49a17;border-color:#f49a17}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#f49a17}.panel-primary>.panel-heading{color:#fff;background-color:#f49a17;border-color:#f49a17}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f49a17}.panel-primary>.panel-heading .badge{color:#f49a17;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f49a17}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.cart-warning:before,.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);.label,audio,canvas,progress,sub,sup,video{vertical-align:baseline}.popover,.tooltip,button,select{text-transform:none}hr,img{border:0}.cart-warning:before,.fa,.glyphicon{-moz-osx-font-smoothing:grayscale}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,.popover,.tooltip,address{font-style:normal}button{overflow:visible}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}#product #product-gallery #product-thumbnails .carousel-control,.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-success,.open>.dropdown-toggle.btn-warning{background-image:none}.checkbox-inline,.glyphicon,.img-thumbnail,.list-inline>li,.radio-inline,label{display:inline-block}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after,.popover,.tooltip,body{font-family:'Open Sans',sans-serif}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{margin:0;font-size:14px;line-height:1.42857143;color:#7a7a7a}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#545776;text-decoration:none}a:focus,a:hover{text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.label,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.initialism,.panel-heading,.table-cart tfoot th.total,.table-cart thead th,.table-order tfoot th.total,.table-order thead th{text-transform:uppercase}.text-muted{color:#e5e5e5}.text-primary{color:#545776}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#545776}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#e5e5e5}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}.dropdown-menu,caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;line-height:1.42857143}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#7a7a7a;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-link,pre code{border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap}.close,.jumbotron p,legend{font-size:21px}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;line-height:inherit;color:#7a7a7a;border-bottom:1px solid transparent}label{max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;display:block;color:#555}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox-inline,.collapsing,.dropdown,.dropup,.has-feedback,.radio-inline{position:relative}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.btn-block+.btn-block,.help-block{margin-top:5px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.btn-group-lg>.btn,.btn-lg,.form-group-lg .form-control,.input-lg{padding:10px 16px;font-size:18px}.input-lg{height:46px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control,.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .checkbox,.form-inline .control-label,.form-inline .form-group,.form-inline .radio{margin-bottom:0;vertical-align:middle}.form-inline .form-control{width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.btn,.caret{display:inline-block;vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{margin-bottom:0;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#545776;text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#545776;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#545776;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#545776;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#545776;background-color:#ccc;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#545776}.btn-primary{color:#fff;background-color:#545776;border-color:#545776}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#545776;border-color:#545776}.btn-primary .badge{color:#545776;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#545776}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{width:0;height:0;margin-left:2px;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#545776}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#cart-address .panel,.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group,.input-group .form-control,.input-group-btn,.input-group-btn>.btn,.nav>li,.nav>li>a,.navbar{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{display:block}.nav>li>a{display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#545776}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#545776}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-static-top{border-radius:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control,.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .checkbox,.navbar-form .control-label,.navbar-form .form-group,.navbar-form .radio{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.breadcrumb,.pagination,.progress{border-radius:3px}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#545776}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.close,.list-group-item>.badge,.pager .next>a,.pager .next>span{float:right}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#545776;border-color:#545776;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;color:#fff;text-align:center;border-radius:.25em}.badge,.progress-bar{font-size:12px;text-align:center}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#545776}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#545776;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-weight:200}.alert,.progress,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.list-group-item,.thumbnail{background-color:#fff;border:1px solid #ddd}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#545776}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert,.panel-body{padding:15px}.alert{border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p+p,.panel-group .panel+.panel{margin-top:5px}.alert>p,.alert>ul{margin-bottom:0}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0%;height:100%;line-height:20px;color:#fff;background-color:#545776;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#545776;border-color:#545776}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive,.panel>.table-responsive>.table{margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#545776}.panel-primary>.panel-heading{color:#fff;background-color:#545776;border-color:#545776}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#545776}.panel-primary>.panel-heading .badge{color:#545776;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#545776}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.popover,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:transform .3s ease-out}.fa,.modal.in .modal-dialog{-ms-transform:translate(0,0)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.carousel-control,.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;font-size:30px;color:#ccc;text-align:center;text-shadow:none;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:none}.affix,.loader{position:fixed}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{background-image:none;display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#f49a17}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#f49a17;cursor:default;display:inherit;pointer-events:none}.breadcrumb>li+li:before,.js .dropdown-toggle:after{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}.price{color:#f49a17;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #f9c478}.btn-primary:focus,.btn-primary:hover{background-color:#f49a17;color:#b66f09}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#f49a17;border:1px solid #f49a17;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#f49a17}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#f49a17;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#f49a17;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#f49a17}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#f49a17}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#f49a17;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#f49a17;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;display:block;font-weight:400;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#f49a17;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}.availability .in-stock .out,.availability .out-of-stock .in{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px;font-weight:100}.filter .filter-content .checkbox label,.filter .filter-content .radio label{font-weight:100}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#f49a17;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#f49a17;background-color:rgba(244,154,23,.4)}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.active:after{background:#f49a17;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#f49a17}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#f49a17;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#f49a17}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#f49a17;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #f49a17;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#f49a17;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#f49a17;border-color:#f49a17;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#f49a17;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#f49a17;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#f49a17;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#f49a17}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:#545776;color:#fff}a:focus,a:hover{color:#343649} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before,.has-error .help-block:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before,.navbar li>a.home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.block-default .block-content li:before,.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before,.js .dropdown-toggle:after{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}#account-info .list-info .tel:before,.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.alert-warning,.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .product-image{padding:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.grid .products-content>ul .item .product-price{padding:0}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-price{margin-bottom:20px}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs{margin-bottom:20px}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description,.main{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}#cart-address .panel{border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#545776}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#545776;cursor:default;display:inherit;pointer-events:none}.price{color:#545776;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #545776}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#545776;border:1px solid #545776;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#545776}}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.alert-warning:before,.block-default .block-content li:before{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#545776;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#545776;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#545776}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#545776}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot td.empty,.table-order tfoot td.empty{border-bottom-color:transparent;border-left-color:transparent}.table-cart tfoot th.total,.table-order tfoot th.total{font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.table-cart-total td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.alert-warning{clear:both;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#545776;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);color:#545776;margin-left:-15px;margin-right:5px}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;font-weight:400;display:block;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#545776;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;font-weight:700;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;font-weight:700;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;font-weight:700;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.availability .in-stock .out,.availability .out-of-stock .in,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.filter .filter-content .checkbox label,.filter .filter-content .radio label,.filter .filter-heading,.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.grid .item .product-image>img{width:100%}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-image>img{width:100%}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}.toolbar .pagination-container{text-align:center}#brands .brands>ul .item+.item{border-top:1px solid #ededed}#brands .brands>ul .item>article .brand-image>img{width:100%}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#545776;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}.page-home #carousel .item{text-align:center}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#545776}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;text-align:center;-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;margin-right:.5em;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f007";color:#545776;font-size:19px;line-height:0}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#545776}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#545776;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#545776;color:#fff}.navbar .navbar-nav>.active:after{background:#545776;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#545776}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#545776;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#545776}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-phone:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li:before{color:#545776;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-title{text-transform:uppercase}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #545776;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#545776;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#545776;border-color:#545776;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f077";color:#545776;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#545776}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#545776;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before,#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .mobile:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);font-size:22px}#account-info .list-info .email:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#545776;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-left:0;padding-right:0;padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .panel-body{padding-left:0;padding-right:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#545776}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px}header img{height:50px}header #nom-site{color:#545776;font-size:36px;font-family:inherit}#products-new .products-grid .item>article{border-bottom:4px solid #545776}#products-new .products-grid .item>article .product-info{background-color:#696d94}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff}a:focus,a:hover{color:#343649}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#545776;color:#fff}.overlay:before{background-color:rgba(84,87,118,.4)}.btn-primary:focus,.btn-primary:hover{background-color:#fff;border-color:#545776;color:#545776} \ No newline at end of file diff --git a/web/assets/frontOffice/default/HookCart/assets/css/219a5fc.css b/web/assets/frontOffice/default/HookCart/assets/css/219a5fc.css deleted file mode 100644 index e69de29b..00000000 diff --git a/web/assets/frontOffice/default/HookCustomer/assets/css/2c26576.css b/web/assets/frontOffice/default/HookCustomer/assets/css/2c26576.css deleted file mode 100644 index e69de29b..00000000 diff --git a/web/assets/frontOffice/default/HookSearch/assets/css/0dc83a3.css b/web/assets/frontOffice/default/HookSearch/assets/css/0dc83a3.css deleted file mode 100644 index 74b18399..00000000 --- a/web/assets/frontOffice/default/HookSearch/assets/css/0dc83a3.css +++ /dev/null @@ -1,11 +0,0 @@ -.header-container .search-container label, -.header-container .search-container .btn-search>span { - position:absolute; - width:1px; - height:1px; - margin:-1px; - padding:0; - overflow:hidden; - clip:rect(0 0 0 0); - border:0 -} \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/.source-stamp b/web/assets/frontOffice/default/template-assets/assets/dist/.source-stamp deleted file mode 100644 index 8ef3b91f..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/.source-stamp +++ /dev/null @@ -1 +0,0 @@ -74f9266027b725af26a7ff05e707e4d8 \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/css/79517f2.css b/web/assets/frontOffice/default/template-assets/assets/dist/css/79517f2.css deleted file mode 100644 index f3675a84..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/css/79517f2.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,address{font-style:normal}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:'Open Sans',sans-serif;font-size:14px;line-height:1.42857143;color:#7a7a7a}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#f49a17;text-decoration:none}a:focus,a:hover{color:#b66f09;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#e5e5e5}.text-primary{color:#f49a17}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#f49a17}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}legend,pre{display:block}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#e5e5e5}legend,pre{color:#7a7a7a}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#f49a17;text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#f49a17;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#f49a17;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#f49a17;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#f49a17;background-color:#ccc;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#f49a17}.btn-primary{color:#fff;background-color:#f49a17;border-color:#f49a17}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#f49a17;border-color:#f49a17}.btn-primary .badge{color:#f49a17;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#f49a17;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#f49a17}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{display:block;position:relative}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#f49a17}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#f49a17}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-danger,.progress-striped .progress-bar-info,.progress-striped .progress-bar-success,.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff;border-radius:3px}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0;border-radius:3px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#f49a17;border-color:#f49a17;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#f49a17}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#f49a17;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#f49a17}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert{padding:15px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#f49a17;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-bar-info{background-color:#5bc0de}.progress-bar-warning{background-color:#f0ad4e}.progress-bar-danger{background-color:#d9534f}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#f49a17;border-color:#f49a17}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#f49a17}.panel-primary>.panel-heading{color:#fff;background-color:#f49a17;border-color:#f49a17}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f49a17}.panel-primary>.panel-heading .badge{color:#f49a17;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f49a17}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:'Open Sans',sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.modal-title,.popover,.tooltip{line-height:1.42857143}.carousel-caption,.carousel-caption .btn,.carousel-control,.popover,.product-price .price-label,.text-hide,.tooltip{text-shadow:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.carousel-caption,.carousel-control,.carousel-indicators,.fa-fw,.fa-li{text-align:center}#categories.block-nav .block-title,#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.panel-heading,.table-cart thead th,.table-order thead th{text-transform:uppercase}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.cart-warning:before,.fa{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;opacity:.5;filter:alpha(opacity=50);font-size:30px;color:#ccc;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.fa-inverse,.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.grid .products-content>ul .item .product-price,.grid .products-content>ul .item>article .product-image{padding:0}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{background-image:none;display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#product #product-details .product-price,#product #product-tabs{margin-bottom:20px}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#cart-address .panel{box-shadow:none;border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#f49a17}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#f49a17;cursor:default;display:inherit;pointer-events:none}.price{color:#f49a17;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #f9c478}.btn-primary:focus,.btn-primary:hover{background-color:#f49a17;color:#b66f09}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{position:fixed;background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.main{margin-bottom:20px}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#f49a17;border:1px solid #f49a17;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#f49a17}}.table-cart tfoot td.empty,.table-cart-total td.empty,.table-order tfoot td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f078"}.alert-warning:before,.block-default .block-content li:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#f49a17;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#f49a17;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#f49a17}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#f49a17}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot th.total,.table-order tfoot th.total{text-transform:uppercase;font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.alert-warning{clear:both;margin-bottom:0;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#f49a17;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f054";color:#f49a17;margin-left:-15px;margin-right:5px}.block-nav .block-content li a.accordion-toggle:after,.has-error .help-block:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;display:block;font-weight:400;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#f49a17;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff;font-weight:700}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}#brands .brands>ul .item>article .brand-image>img,.grid .item .product-image>img,.list .item>article .product-image>img{width:100%}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}.availability .in-stock .out,.availability .out-of-stock .in{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px;font-weight:100}.filter .filter-content .checkbox label,.filter .filter-content .radio label{font-weight:100}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.overlay:after,.page-home #carousel .item,.toolbar .pagination-container{text-align:center}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}#brands .brands>ul .item+.item{border-top:1px solid #ededed}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#f49a17;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f00d";margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#f49a17;background-color:rgba(244,154,23,.4)}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-webkit-transform:translate(0,50%);-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);margin-right:.5em;display:inline-block}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f015";color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0}#product-details .product-promo .sale-saving:before,.navbar li.cart-not-empty>a.cart:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.active:after{background:#f49a17;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-webkit-transform:translate(0,40%);-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom:4px solid #f49a17;border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{background-color:#f6af48;color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#f49a17}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#f49a17;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-family:'Open Sans',sans-serif;font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#f49a17}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-contact .block-content ul>li.contact-address:before,.block.block-newsletter .block-content form .form-group:before{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-email:before,.block.block-contact .block-content ul>li.contact-phone:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);display:inline-block}.block.block-contact .block-content ul>li.contact-phone:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li.contact-contact:before,.js #payment-method .radio .active:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block.block-contact .block-content ul>li:before{color:#f49a17;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #f49a17;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#f49a17;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#f49a17;border-color:#f49a17;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f077";color:#f49a17;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#account .panel-title>a:before,#account-info .list-info .mobile:before{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#account-address .panel-body,#account-orders .panel-body{padding-left:0;padding-right:0}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#f49a17;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .email:before,#account-info .list-info .tel:before{display:inline-block;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f095";font-size:22px}#account-info .list-info .email:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#f49a17;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#f49a17}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px} \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/css/thelia.min.css b/web/assets/frontOffice/default/template-assets/assets/dist/css/thelia.min.css deleted file mode 100644 index f3675a84..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/css/thelia.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * Bootstrap v3.3.6 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.glyphicon,address{font-style:normal}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:'Open Sans',sans-serif;font-size:14px;line-height:1.42857143;color:#7a7a7a}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#f49a17;text-decoration:none}a:focus,a:hover{color:#b66f09;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#e5e5e5}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}dt,kbd kbd{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#e5e5e5}.text-primary{color:#f49a17}a.text-primary:focus,a.text-primary:hover{color:#ce7e0a}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#f49a17}a.bg-primary:focus,a.bg-primary:hover{background-color:#ce7e0a}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}legend,pre{display:block}dd{margin-left:0}@media (min-width:992px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #e5e5e5}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#e5e5e5}legend,pre{color:#7a7a7a}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%;border-radius:3px}caption,th{text-align:left}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4}kbd{color:#fff;background-color:#333;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}caption{padding-top:8px;padding-bottom:8px;color:#e5e5e5}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid transparent}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #e5e5e5;border-radius:3px;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#c7c7c7;opacity:1}.form-control:-ms-input-placeholder{color:#c7c7c7}.form-control::-webkit-input-placeholder{color:#c7c7c7}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px}.input-sm{height:30px;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.collapsing,.dropdown,.dropup{position:relative}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#bababa}@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#f49a17;text-decoration:none}.btn.active,.btn:active{outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#f49a17;background-color:#f7f7f7;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#f49a17;background-color:#dedede;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#f49a17;background-color:#dedede;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#f49a17;background-color:#ccc;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#f7f7f7;border-color:#ccc}.btn-default .badge{color:#f7f7f7;background-color:#f49a17}.btn-primary{color:#fff;background-color:#f49a17;border-color:#f49a17}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#ce7e0a;border-color:#855206}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#ce7e0a;border-color:#c47809}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#ac6908;border-color:#855206}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#f49a17;border-color:#f49a17}.btn-primary .badge{color:#f49a17;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#f49a17;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#b66f09;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#e5e5e5;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-property:height,visibility;transition-duration:.35s;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#7a7a7a}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#6d6d6d;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#f49a17}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#e5e5e5}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#e5e5e5}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:992px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.block,.btn-group.open .dropdown-toggle.btn-link,.btn.active,.btn:active{box-shadow:none}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.nav>li,.nav>li>a{display:block;position:relative}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #e5e5e5;border-radius:3px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#e5e5e5}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#e5e5e5;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#f49a17}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px;margin-right:0;border-radius:3px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li{float:none}.nav-pills>li>a{border-radius:3px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#f49a17}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:992px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:992px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:991px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-danger,.progress-striped .progress-bar-info,.progress-striped .progress-bar-success,.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}@media (min-width:992px){.navbar-toggle{display:none}.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:991px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:992px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}.navbar-text{float:left;margin-left:15px;margin-right:15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:992px){.navbar-left{float:left!important;float:left}.navbar-right{float:right!important;float:right;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f5f5f5;border-color:#fff}.navbar-default .navbar-brand{color:#707070}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#575757;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#707070}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#fff}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}@media (max-width:991px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#707070}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#f49a17}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#707070}.navbar-default .navbar-link:hover{color:#fff}.navbar-default .btn-link{color:#707070}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#fff}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:991px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .btn-link,.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover,.navbar-inverse .navbar-link,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{margin-bottom:20px;list-style:none;background-color:#fff;border-radius:3px}.breadcrumb>li+li:before{padding:0 5px;color:#7a7a7a}.breadcrumb>.active{color:#7a7a7a}.pagination{padding-left:0;margin:20px 0;border-radius:3px}.pager li,.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;background-color:#f9f9f9;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#b66f09;background-color:transparent;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;background-color:#f49a17;border-color:#f49a17;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#e5e5e5;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#f7f7f7;border:1px solid #ccc;border-radius:0}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:transparent}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#e5e5e5;background-color:#f7f7f7;cursor:not-allowed}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.label-default{background-color:#e5e5e5}.label-default[href]:focus,.label-default[href]:hover{background-color:#ccc}.label-primary{background-color:#f49a17}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#ce7e0a}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#e5e5e5;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#f49a17;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#f49a17}.thumbnail .caption{padding:9px;color:#7a7a7a}.alert{padding:15px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:3px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#f49a17;box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-bar-info{background-color:#5bc0de}.progress-bar-warning{background-color:#f0ad4e}.progress-bar-danger{background-color:#d9534f}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#e5e5e5;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#e5e5e5}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#f49a17;border-color:#f49a17}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fdefda}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:0;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#f5f5f5}.panel-default>.panel-heading{color:#7a7a7a;background-color:#f5f5f5;border-color:#f5f5f5}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f5f5f5}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#7a7a7a}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f5f5f5}.panel-primary{border-color:#f49a17}.panel-primary>.panel-heading{color:#fff;background-color:#f49a17;border-color:#f49a17}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f49a17}.panel-primary>.panel-heading .badge{color:#f49a17;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f49a17}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.popover,.tooltip{font-family:'Open Sans',sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;text-decoration:none}.modal-title,.popover,.tooltip{line-height:1.42857143}.carousel-caption,.carousel-caption .btn,.carousel-control,.popover,.product-price .price-label,.text-hide,.tooltip{text-shadow:none}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-content,.popover{background-clip:padding-box}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;text-align:left;text-align:start;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;text-align:start;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2)}.carousel-caption,.carousel-control,.carousel-indicators,.fa-fw,.fa-li{text-align:center}#categories.block-nav .block-title,#filters>h3,#product #product-tabs .nav-tabs li,.availability .in-stock,.availability .out-of-stock,.filter .filter-heading,.panel-heading,.table-cart thead th,.table-order thead th{text-transform:uppercase}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.carousel,.carousel-inner{position:relative}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.left>.arrow:after,.popover.right>.arrow:after{content:" ";bottom:-10px}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{left:1px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff}.carousel-inner{overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.cart-warning:before,.fa{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:10%;opacity:.5;filter:alpha(opacity=50);font-size:30px;color:#ccc;background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#ccc;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:45px;height:45px;margin-top:-15px;font-size:45px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.table-cart tbody td.product .name,.table-order tbody td.product .name,header .header .logo{margin-top:0}.block-thumbnail:after,.block-thumbnail:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.block-thumbnail:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.fa-inverse,.footer-container .footer-info a,.footer-container .footer-info a:focus,.footer-container .footer-info a:hover{color:#fff}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}/*! - * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome/fontawesome-webfont.eot?v=4.3.0);src:url(../fonts/fontawesome/fontawesome-webfont.eot?#iefix&v=4.3.0) format('embedded-opentype'),url(../fonts/fontawesome/fontawesome-webfont.woff2?v=4.3.0) format('woff2'),url(../fonts/fontawesome/fontawesome-webfont.woff?v=4.3.0) format('woff'),url(../fonts/fontawesome/fontawesome-webfont.ttf?v=4.3.0) format('truetype'),url(../fonts/fontawesome/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before,.fa-genderless:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-bed:before,.fa-hotel:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}header .header{margin-bottom:20px}header .header .language-container .search-container{margin-bottom:10px}header .header .language-container .search-container .form-control{width:auto}header .header .language-container .currency-switch,header .header .language-container .language-switch{display:inline-block;position:relative;vertical-align:middle}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{display:inline-block;float:left;margin-left:1em;margin-right:.4em}header .header .language-container .currency-switch .current,header .header .language-container .language-switch .current{display:inline-block;float:left;position:relative}#payment-method.panel .radio,.account-info .email,.account-info .mobile,.account-info .tel,.js .group-qty .form-inline .form-group{display:block}header .header .language-container .currency-switch .select,header .header .language-container .language-switch .select{left:auto;right:0;min-width:80px}.footer-container .footer-banner .banner .col{padding:10px 0}.footer-container .footer-block .blocks,.footer-container .footer-info .info{padding:20px 0}.footer-container .footer-info .info .nav-footer ul li+li:before{margin-right:10px}.account-info address{margin-bottom:0}.account-info li{margin-bottom:20px}.list-payment,.table-order tbody td.qty .group-qty{margin-bottom:0}.table-order-total td{width:50%}#delivery-address .panel-heading{position:relative}.checkout-progress{margin-bottom:20px;width:100%}.cart-warning,.table-cart tbody td.qty .group-qty,.table-cart-mini{margin-bottom:0}.cart-empty{margin:0;padding:40px}.table-cart-total td{width:50%}.cart-warning{clear:both}.pagination>li>a:focus,.pagination>li>span:focus{z-index:3}@media (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{padding-left:.3em;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f078";float:none}}@media (min-width:992px) and (min-width:992px){.navbar .navbar-cart .dropdown>a:after,.navbar .navbar-customer .dropdown>a:after{float:none}}.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{margin:0;padding:20px}@media (max-width:992px){.navbar .navbar-cart .dropdown-menu,.navbar .navbar-customer .dropdown-menu{display:none}}.navbar .navbar-cart .dropdown-menu.cart-content,.navbar .navbar-customer .dropdown-menu.cart-content{width:350px}.navbar .navbar-cart .dropdown-menu.cart-content>p,.navbar .navbar-customer .dropdown-menu.cart-content>p{margin:0}.navbar .navbar-cart .cart-not-empty .cart-content,.navbar .navbar-customer .cart-not-empty .cart-content{border-top:none;padding:0}.navbar .full-width{position:static}.navbar .full-width .dropdown-menu{width:100%;left:0;right:0}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{display:block}.js .dropdown-toggle:after{float:right;padding-left:.3em}@media (min-width:992px){.navbar-collapse .navbar-nav.navbar-right:first-child{margin-right:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:0}.js .dropdown-toggle:after{float:none}}#form-forgotpassword,#form-login{padding:45px}#form-forgotpassword legend,#form-login legend{margin-bottom:10px}#filters,.filter{margin-bottom:20px}.filter{padding:0 15px}.grid .products-content>ul .item .product-price,.grid .products-content>ul .item>article .product-image{padding:0}.filter .filter-heading{margin:0 0 4px}.toolbar{margin-bottom:20px}.toolbar .sorter-container .amount{float:left}.grid .products-content>ul .item>article .product-image,.grid .products-content>ul .item>article .product-info,.grid .products-content>ul .item>article .product-price,.list .products-content>ul .item{width:100%;float:none}.toolbar .sorter-container .sort-by,.toolbar .sorter-container .view-mode{margin-left:40px}.toolbar .pagination-container>.pagination{margin:15px 0 0}.products-content>ul .item .product-info .short-description,.products-content>ul .item .product-price .price-container{display:block;margin-bottom:5px}.grid .products-content>ul .item{margin-bottom:20px}.grid .products-content>ul .item>article{margin:0}.grid .products-content>ul .item>article .name{margin:4px 0}.grid .products-content>ul .item .description{display:none!important}@media (max-width:767px){.grid .products-content>ul .item .description{display:block!important}table.grid .products-content>ul .item .description{display:table!important}tr.grid .products-content>ul .item .description{display:table-row!important}td.grid .products-content>ul .item .description,th.grid .products-content>ul .item .description{display:table-cell!important}}.list .products-content>ul .item+.item{padding-top:15px}.list .products-content>ul .item>article{margin-left:0}.list .products-content>ul .item>article .product-image{margin-bottom:15px;padding:0}.list .products-content>ul .item>article .product-info .name{margin-top:0}.option{margin-bottom:20px;padding:0}.option .option-heading{display:block;margin:0 0 5px}#product #product-gallery .product-image,#product>section{margin-bottom:20px}#product #product-gallery #product-thumbnails .carousel-inner{margin:0 auto;width:90%}#brands .brands>ul .item>article,#folder-contents .contents>ul .item>article,.contents-list .item>article{margin-left:0}#product #product-gallery #product-thumbnails .carousel-control{background-image:none;display:none;width:4%;margin-top:-4px}#brands .brands>ul .item>article .brand-info .name,#folder-contents .contents>ul .item>article .content-info .name,#product #product-details .name,.contents-list .item>article .content-info .name,.page-header,.table-address .radio,.table-delivery .radio{margin-top:0}#product #product-gallery #product-thumbnails ul{margin:0}#product #product-gallery #product-thumbnails ul>li{margin:0;padding:0;width:19%}#product #product-details .product-price,#product #product-tabs{margin-bottom:20px}#folder-contents .contents>ul .item>article .content-image>img,.contents-list .item>article .content-image>img{width:100%}#product #product-details .product-cart{margin-bottom:20px;padding:0}#product #product-tabs .nav-tabs{margin-bottom:-1px}.folder-description{margin-bottom:20px}.contents-list .item{padding-bottom:15px}.contents-list .item+.item{padding-top:15px}.contents-list .item>article .content-image{margin-bottom:15px;padding:0}.brand-description{margin-bottom:20px}#brands .brands>ul .item{padding-bottom:15px}#brands .brands>ul .item+.item{padding-top:15px}#brands .brands>ul .item>article .brand-image{margin-bottom:15px;padding:0}header .header .logo a{text-decoration:none}header .header .language-container{text-align:right}header .header .language-container .currency-switch .dropdown-label,header .header .language-container .language-switch .dropdown-label{font-size:1em;font-weight:300}.footer-container .footer-banner{background-color:#e8e8e8;font-size:19px}.footer-container .footer-banner .banner i{display:block;font-size:2em}.footer-container .footer-banner .banner small{font-size:.65em;display:block;font-style:italic;font-weight:400}.footer-container .footer-banner .banner .col{text-align:center}.footer-container .footer-banner .banner .col+.col{border-top:1px solid #d6d6d6}@media (min-width:768px){.footer-container .footer-banner .banner .col+.col{border-left:1px solid #d6d6d6;border-top:none}}.footer-container .footer-block{background-color:#f5f5f5}.footer-container .footer-info{background-color:#444;color:#fff;font-size:12px}.footer-container .footer-info .info .nav-footer ul li+li:before{content:'-'}.footer-container .footer-info .info .copyright{font-weight:300;text-align:right}#payment-method.panel .panel-body,.cart-warning{text-align:center}.footer-container .footer-info .info .copyright>a{font-weight:700}.cart-warning>a{color:inherit}.cart-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#cart-address .panel{box-shadow:none;border:none}#payment-method.panel .radio label>img{border:1px solid #ddd;border-radius:3px;opacity:.4;filter:alpha(opacity=40)}#payment-method.panel .radio label>img:focus,#payment-method.panel .radio label>img:hover{opacity:1;filter:alpha(opacity=100);transition:opacity .2s ease-in-out}.btn,a{transition:all .3s ease-in-out}#payment-method .list-group-item{border:none}.js #payment-method .radio .active>img,.js #payment-method .radio input:checked+img{opacity:1;filter:alpha(opacity=100)}.checkout-progress .btn-step{padding:16px 24px;background:#eee;color:#555}.checkout-progress .btn-step+.btn-step{border-left:1px solid #555}.checkout-progress .btn-step .step-nb{border-right:1px solid #7a7a7a;font-size:30px;line-height:0;font-weight:600;padding-right:6px;vertical-align:middle}.checkout-progress .btn-step .step-label{font-size:20px;font-weight:100;min-width:250px;padding-left:6px;vertical-align:middle}.checkout-progress .btn-step.active,.checkout-progress .btn-step:active,.checkout-progress .btn-step:focus,.checkout-progress .btn-step:hover{color:#fff;background:#f49a17}.checkout-progress .btn-step.active .step-nb,.checkout-progress .btn-step:active .step-nb,.checkout-progress .btn-step:focus .step-nb,.checkout-progress .btn-step:hover .step-nb{border-right:1px solid #fff}.checkout-progress .btn-step.active{background:#f49a17;cursor:default;display:inherit;pointer-events:none}.price{color:#f49a17;font-size:20px;font-weight:700;font-style:italic;white-space:nowrap}.old-price .price{color:#7a7a7a;font-size:16px;font-weight:600;text-decoration:line-through}#folder-contents .contents>ul .item{padding-bottom:15px}#folder-contents .contents>ul .item+.item{padding-top:15px;border-top:1px solid #ededed}#folder-contents .contents>ul .item>article .content-image{margin-bottom:15px;padding:0}.contents-list .item+.item{border-top:1px solid #ededed}.breadcrumb{padding:0}.breadcrumb>li+li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f105"}.btn{border-radius:0;text-align:left;font-weight:600}.btn-primary{font-style:italic;border-left:3px solid #f9c478}.btn-primary:focus,.btn-primary:hover{background-color:#f49a17;color:#b66f09}.btn-default{border-left:3px solid #ccc}.btn-default:focus,.btn-default:hover{background-color:#f7f7f7}.btn-default.active,.btn-default.active:hover,.btn-default:active,.btn-default:active:hover,.btn-primary.active,.btn-primary.active:hover,.btn-primary:active,.btn-primary:active:hover{background-color:#d5d5d5;border-color:#6f6f6f;color:#fff}.btn-link{font-weight:400}.form-control:focus::-moz-placeholder{color:#eee;opacity:1}.form-control:focus:-ms-input-placeholder{color:#eee}.form-control:focus::-webkit-input-placeholder{color:#eee}#form-login-mini{width:200px}#form-login-mini .mini-forgot-password{font-size:12px}#form-forgotpassword,#form-login{background:#f5f5f5}#form-forgotpassword legend,#form-login legend{font-size:14px;font-weight:700}.fn,.table-address .radio label,.table-delivery .radio label{font-weight:600}#form-forgotpassword .btn-login,#form-login .btn-login{display:block;width:100%}@media (min-width:768px){#form-forgotpassword .group-btn,#form-login .group-btn{text-align:right}#form-forgotpassword .group-btn .btn-login,#form-login .group-btn .btn-login{display:inline-block;width:auto}}@media (min-width:992px){.btn{padding:2px 15px 2px 5px}#form-forgotpassword,#form-login{width:45%}}.no-js .collapse{display:block!important}.loader,.no-js #carousel .carousel-control{display:none}.loader{position:fixed;background:url(../img/ajax-loader.gif) center center no-repeat #fff;background-color:rgba(255,255,255,.5);left:0;top:0;width:100%;height:100%;z-index:100}.oldie{position:absolute}.thumbnail.active{border-color:#7a7a7a}.main{margin-bottom:20px}.fn{display:block}.adr,.org{font-size:12px}.table-address .group-btn,.table-delivery .group-btn{text-align:right}.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{border-color:#f5f5f5;padding:10px 10px 0}@media (min-width:768px){.table-address tbody>tr>td,.table-address tbody>tr>th,.table-address tfoot>tr>td,.table-address tfoot>tr>th,.table-address thead>tr>td,.table-address thead>tr>th,.table-delivery tbody>tr>td,.table-delivery tbody>tr>th,.table-delivery tfoot>tr>td,.table-delivery tfoot>tr>th,.table-delivery thead>tr>td,.table-delivery thead>tr>th{padding:30px 30px 0}}.modal-dialog td{vertical-align:middle}.modal-dialog .close{margin:10px;position:relative;z-index:10}.modal-dialog .btn{margin-left:10px}@media screen and (min-width:768px){.modal-dialog{width:800px}}.navbar.navbar-secondary{z-index:1001}@media (min-width:992px){.navbar .list-subnav{background-color:#f49a17;border:1px solid #f49a17;border-radius:0;box-shadow:none}.navbar .list-subnav>li>a{color:#fff;padding:3px 12px}.navbar .list-subnav>.active>a,.navbar .list-subnav>.active>a:focus,.navbar .list-subnav>.active>a:hover,.navbar .list-subnav>li>a:focus,.navbar .list-subnav>li>a:hover{background-color:#fff;color:#f49a17}}.table-cart tfoot td.empty,.table-cart-total td.empty,.table-order tfoot td.empty,.table-order-total td.empty{border-bottom-color:transparent;border-left-color:transparent}.navbar .full-width .dropdown-menu .dropdown-content{padding:20px}.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading{font-weight:700}.js .dropdown-toggle:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f078"}.alert-warning:before,.block-default .block-content li:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#account .panel-heading{padding:0}#account .panel-heading .panel-title>a{background:#f49a17;color:#fff;display:block;padding:12px 15px;text-decoration:none}#account .panel-heading .panel-title>a.collapsed{background:0 0;color:inherit}#account .panel-heading .panel-title>a.collapsed:focus,#account .panel-heading .panel-title>a.collapsed:hover{background:#f49a17;color:#fff}#account .panel-body{padding:25px}.table-cart tbody>tr>td,.table-cart tbody>tr>th,.table-cart tfoot>tr>td,.table-cart tfoot>tr>th,.table-cart thead>tr>td,.table-cart thead>tr>th,.table-order tbody>tr>td,.table-order tbody>tr>th,.table-order tfoot>tr>td,.table-order tfoot>tr>th,.table-order thead>tr>td,.table-order thead>tr>th{padding:14px;text-align:center;vertical-align:middle}.table-cart tbody>tr>td.product,.table-cart tbody>tr>th.product,.table-cart tfoot>tr>td.product,.table-cart tfoot>tr>th.product,.table-cart thead>tr>td.product,.table-cart thead>tr>th.product,.table-order tbody>tr>td.product,.table-order tbody>tr>th.product,.table-order tfoot>tr>td.product,.table-order tfoot>tr>th.product,.table-order thead>tr>td.product,.table-order thead>tr>th.product{text-align:left}.table-cart tbody>tr>td.image,.table-cart tbody>tr>th.image,.table-cart tfoot>tr>td.image,.table-cart tfoot>tr>th.image,.table-cart thead>tr>td.image,.table-cart thead>tr>th.image,.table-order tbody>tr>td.image,.table-order tbody>tr>th.image,.table-order tfoot>tr>td.image,.table-order tfoot>tr>th.image,.table-order thead>tr>td.image,.table-order thead>tr>th.image{border-right-color:transparent}.table-cart thead th,.table-order thead th{background-color:#f5f5f5;border-bottom-width:1px}.table-cart thead th.subprice,.table-order thead th.subprice{color:#f49a17}.table-cart tbody td.price,.table-cart tbody td.qty,.table-cart tbody td.subprice,.table-order tbody td.price,.table-order tbody td.qty,.table-order tbody td.subprice{padding:35px 10px}.table-cart tbody td.unitprice .price,.table-order tbody td.unitprice .price{color:#7a7a7a}.table-cart tbody td.unitprice .old-price .price,.table-order tbody td.unitprice .old-price .price{font-size:14px}.table-cart tbody td.unitprice .secondary-price .price,.table-order tbody td.unitprice .secondary-price .price{font-size:14px;font-weight:400}.table-cart tbody td.subprice .price,.table-order tbody td.subprice .price{color:#f49a17}.table-cart tfoot td,.table-cart tfoot th,.table-order tfoot td,.table-order tfoot th{background-color:#f5f5f5}.table-cart tfoot td.empty,.table-cart tfoot th.empty,.table-order tfoot td.empty,.table-order tfoot th.empty{background:0 0}.table-cart tfoot td.total,.table-cart tfoot th.total,.table-order tfoot td.total,.table-order tfoot th.total{background-color:#666;color:#fff}.table-cart tfoot td.total .price,.table-cart tfoot th.total .price,.table-order tfoot td.total .price,.table-order tfoot th.total .price{color:inherit}.table-cart tfoot td.shipping .price,.table-order tfoot td.shipping .price{color:#7a7a7a;font-size:19px}.table-cart tfoot td.total .price,.table-order tfoot td.total .price{font-size:19px}.table-cart tfoot th.total,.table-order tfoot th.total{text-transform:uppercase;font-weight:100;font-size:16px}.table-cart-total td.total .price,.table-order-total td.total .price{font-size:19px}.alert-warning{clear:both;margin-bottom:0;text-align:center}.alert-warning>a{color:inherit}.alert-warning:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f071";display:block;font-size:2.2em}.block{background:0 0;border:1px solid transparent;border-radius:0}.block .block-heading{background:0 0;border-bottom:1px solid #dfdfdf;color:#888;margin:0 0 6px;padding-bottom:6px}.block .block-title{font-size:21px;margin-top:0;margin-bottom:0}.block .block-title>a{color:inherit}.block .block-content{font-size:12px;margin-bottom:20px}.block .block-content ul{padding-left:0;list-style:none}.block .block-content .block-subtitle{color:#f49a17;font-size:16px;font-weight:300;margin:0 0 6px}.block-default .block-content li{margin-left:15px;padding-top:6px}.block-default .block-content li a{color:#747474}.block-default .block-content li a:focus,.block-default .block-content li a:hover{color:#b66f09}.block-default .block-content li:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f054";color:#f49a17;margin-left:-15px;margin-right:5px}.block-nav .block-content li a.accordion-toggle:after,.has-error .help-block:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block-links .block-content li a,.block-nav .block-content li a{color:#747474;display:block;font-weight:400;position:relative;font-size:12px}.block-links .block-content li+li a{border-top:1px solid #fff}.block-links .block-content li a{background-color:transparent;padding:10px 3px}.block-links .block-content li a:focus,.block-links .block-content li a:hover{text-decoration:none;background-color:#ebebeb}.block-links .block-content li a>p,.block-nav .block-heading{margin-bottom:0}.block-nav .block-content li a{background-color:transparent;padding:10px 60px 10px 3px}.block-nav .block-content li a:focus,.block-nav .block-content li a:hover{text-decoration:none;background-color:#f7f7f7}.block-nav .block-content li a.accordion-toggle:after{color:#f49a17;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f068"}.block-nav .block-content li a.accordion-toggle.collapsed:after{content:"\f067"}.block-nav .block-content ul a{padding-left:15px}.block-nav .block-content ul ul a{padding-left:30px}.block-nav .block-content ul ul ul a{padding-left:45px}.block-thumbnail{margin-left:-15px;margin-right:-15px}.block-thumbnail.block-thumbnail-2 li{max-width:50%}.block-thumbnail.block-thumbnail-3 li{max-width:33.33333333%}.block-thumbnail.block-thumbnail-4 li{max-width:25%}.block-thumbnail .block-content li{float:left;padding-right:7.5px;padding-bottom:7.5px;position:relative;max-width:33.33333333%}.block-social .block-content li{display:inline-block;font-size:18px}.block-social .block-content li>a{color:#888}.block-social .block-content li>a:focus,.block-social .block-content li>a:hover{color:#b66f09}.block-newsletter .block-content form .btn-subscribe{padding:6px}.block-contact .block-content li{clear:both;margin-bottom:5px}.block-carousel{margin-bottom:30px}.block-carousel .carousel-indicators{bottom:auto}.block-carousel .block-carousel-control{float:right!important;float:right}.block-carousel .block-carousel-control .carousel-control{background:#efefef;color:#000;display:block;float:left;font-size:24px;margin-left:3px;position:relative;top:1px;left:auto;bottom:auto;width:28px;height:28px;transition:background-color .3s ease-in-out}.label-delivered,.label-new,.label-sale{padding:.2em .6em .3em;font-size:75%;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;color:#fff;font-weight:700}.btn .label-delivered,.btn .label-new,.btn .label-sale{top:-1px;position:relative}#brands .brands>ul .item>article .brand-image>img,.grid .item .product-image>img,.list .item>article .product-image>img{width:100%}.block-carousel .block-carousel-control .carousel-control:focus,.block-carousel .block-carousel-control .carousel-control:hover{background-color:#000;color:#fff}.label-new{display:inline;background-color:#5bc0de}a.label-new:focus,a.label-new:hover{color:#fff;text-decoration:none;cursor:pointer}.label-new:empty{display:none}.label-new[href]:focus,.label-new[href]:hover{background-color:#31b0d5}.label-sale{display:inline;background-color:#d9534f}a.label-sale:focus,a.label-sale:hover{color:#fff;text-decoration:none;cursor:pointer}.label-sale:empty{display:none}.label-sale[href]:focus,.label-sale[href]:hover{background-color:#c9302c}.label-delivered{display:inline;background-color:#5cb85c}a.label-delivered:focus,a.label-delivered:hover{color:#fff;text-decoration:none;cursor:pointer}.grid .btn-grid,.list .btn-list{cursor:default;pointer-events:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.label-delivered:empty{display:none}.label-delivered[href]:focus,.label-delivered[href]:hover{background-color:#449d44}.products-heading .btn-all{float:right}.products-heading h3{top:-14px!important;margin:0}.availability .in-stock{color:#5cb85c;font-style:italic;font-weight:700}.availability .in-stock .in{display:block}.availability .in-stock .out,.availability .out-of-stock .in{display:none}.availability .in-stock .quantity{font-style:italic}.availability .out-of-stock{color:#f0ad4e;font-style:italic;font-weight:700}.availability .out-of-stock .out{display:block}#brands .brands>ul .item>article .brand-image.overlay:after,.no-js .toolbar .limiter,.no-js .toolbar .sort-by{display:none}.option{background:#fff;border:1px solid transparent;border-radius:0}.option .option-heading{border-bottom:1px solid transparent;color:#7a7a7a;font-size:14px;font-weight:700}.option .option-content .checkbox label,.option .option-content .radio label{font-weight:100}#product #product-gallery{border-right:1px solid #f5f5f5;padding-right:20px}#product #product-details .name{font-size:21px;font-weight:400}#product #product-details .product-cart{background:#fff;border:1px solid transparent;border-radius:0}#product #product-tabs .nav-tabs{border-bottom:1px solid #ddd}#product #product-tabs .tab-content{border:1px solid #ddd;border-radius:0 0 3px 3px;padding:30px 15px;min-height:180px;height:auto!important;height:180px}.list .item+.item{border-top:1px solid #ededed}.list .item>article .product-price{text-align:right}.filter{background:#f5f5f5;border:1px solid #f5f5f5;border-radius:0}.filter .filter-heading{border-bottom:1px solid #dfdfdf;color:#888;font-size:19px;font-weight:100}.filter .filter-content .checkbox label,.filter .filter-content .radio label{font-weight:100}.toolbar{line-height:50px}.toolbar .pagination-container,.toolbar .sorter-container{overflow:hidden;height:50px}.toolbar .sorter-container{background-color:#fff;border-radius:0;padding:0;text-align:right}.overlay:after,.page-home #carousel .item,.toolbar .pagination-container{text-align:center}.toolbar .sorter-container .view-mode>.view-mode-btn{font-size:24px}.toolbar .sorter-container .view-mode>.view-mode-btn a{padding:0 6px;font-size:21px;text-decoration:none}#brands .brands>ul .item+.item{border-top:1px solid #ededed}.page-404 .main{padding:10px 0 100px}.page-404 #main-label{color:#f49a17;font-size:9em;font-weight:700;text-align:center}.page-404 #main-label span{color:#CCC;display:block;font-size:15px;font-weight:400}.page-home #carousel{margin-bottom:20px}@media screen and (min-width:768px){.page-home #carousel .carousel-control .fa-caret-left,.page-home #carousel .carousel-control .fa-caret-right{font-size:80px;margin-top:-40px;margin-left:-40px;width:80px;height:80px}}.page-header{border:none;font-weight:100;font-size:30px}.form-control{box-shadow:none}.form-control:invalid:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f00d";margin-right:.3em}label{font-weight:600}.popover{border-radius:3px}.overlay{display:block;overflow:hidden;position:relative;font-size:40px}.overlay:after,.overlay:before{display:block;width:100%;height:100%;visibility:hidden;position:absolute;top:0;left:0;right:0;opacity:0;filter:alpha(opacity=0);transition:all .3s ease-in-out 50ms}.overlay:before{content:'';overflow:visible;background-color:#f49a17;background-color:rgba(244,154,23,.4)}.overlay:after{font-family:FontAwesome;content:"\f002";color:#fff;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);line-height:0}.overlay:focus:after,.overlay:focus:before,.overlay:hover:after,.overlay:hover:before{visibility:visible;opacity:1;filter:alpha(opacity=100)}.overlay:focus:after,.overlay:hover:after{-webkit-transform:translate(0,50%);-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);margin-right:.5em;display:inline-block}.navbar li>a.home:before{-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f015";color:#c9c9c9;font-size:26px;line-height:0;position:relative;top:3px}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0}#product-details .product-promo .sale-saving:before,.navbar li.cart-not-empty>a.cart:before{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}.navbar li>a.cart:focus>.badge,.navbar li>a.cart:hover>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart>.badge{background-color:#fff;color:#f49a17}.navbar li.cart-not-empty>a.cart:focus,.navbar li.cart-not-empty>a.cart:hover{background-color:#f49a17;color:#fff}.navbar li.cart-not-empty>a.cart:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f07a";color:#fff;font-size:24px;line-height:0;margin-right:.4em}@media (min-width:992px){.navbar .navbar-nav .list-subnav>li+li{border-top:1px solid #e28a0b}.navbar .navbar-nav .list-subnav>li>a{font-weight:100}}.navbar .navbar-nav>li>a:focus:before,.navbar .navbar-nav>li>a:hover:before{color:#fff}.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.active:after{background:#f49a17;content:"";display:block;position:absolute;bottom:0;width:100%;height:2px;z-index:100}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:#f49a17;color:#fff}.navbar .navbar-nav>.open>a:before,.navbar .navbar-nav>.open>a:focus:before,.navbar .navbar-nav>.open>a:hover:before{color:#fff}.container>.navbar-collapse{margin-left:-15px;margin-right:-15px}header .header .logo{float:none}.page-home #carousel .carousel-control{background-image:none}.products-heading h2{color:#7a7a7a;font-size:18px;font-weight:700}.products-heading .btn-all,.products-heading .btn-all:focus,.products-heading .btn-all:hover{color:#7a7a7a;font-size:16px;font-style:italic;font-weight:600}.products-heading .short-description{background-color:#f5f5f5;margin-bottom:10px;padding:10px}.product-options dl{font-size:.85em;margin-bottom:10px}.product-options dl>dt{text-align:left}.product-info .name,td.product .name{font-size:16px;font-weight:600}.product-info .name>a,td.product .name>a{color:#7a7a7a;text-decoration:none}.product-info .name>a:focus,.product-info .name>a:hover,td.product .name>a:focus,td.product .name>a:hover{color:#b66f09}.product-price .price-label{font:0/0 a;color:transparent;background-color:transparent;border:0;display:block}.product-price .regular-price .price,.product-price .special-price .price{display:block;font-size:14px;line-height:25px;font-style:normal;font-weight:400}.product-price .old-price .price{display:block;font-size:14px;line-height:25px;font-style:italic;font-weight:400;text-decoration:line-through}#products-new .products-grid .overlay:after{-webkit-transform:translate(0,40%);-ms-transform:translate(0,40%);transform:translate(0,40%)}#products-new .products-grid .item>article{border-bottom:4px solid #f49a17;border-bottom-right-radius:3px;border-bottom-left-radius:3px;overflow:hidden;position:relative}#products-new .products-grid .item>article .product-info{background-color:#f6af48;color:#fff;display:block;padding:6px 12px;position:relative;text-decoration:none!important}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{background-color:#f49a17}#products-new .products-grid .item>article .product-info .name{min-height:40px;height:auto!important;height:40px}#products-new .products-grid .item>article .product-info .name:after{content:'+';font-size:45px;line-height:0;font-style:normal;font-weight:100;position:absolute;top:16px;right:4px;-webkit-font-smoothing:antialiased}#products-new .products-grid .item>article .product-info .short-description{font-size:11px;line-height:1.1}#products-new .products-grid .item>article .product-price .price{color:#fff;font-size:22px;font-weight:700}@media (min-width:992px){#products-new .products-grid .item>article .product-image{padding-bottom:40px}#products-new .products-grid .item>article .product-info{transition:height .3s linear;position:absolute;bottom:0;width:100%;height:50px}#products-new .products-grid .item>article .product-info h3{margin-top:2px;padding-right:20px}#products-new .products-grid .item>article .product-info h3 span{height:2em;overflow:hidden;display:block}#products-new .products-grid .item>article .product-info:focus,#products-new .products-grid .item>article .product-info:hover{cursor:pointer;height:140px}}#products-upsell{margin-top:40px;position:relative}#products-upsell .products-heading{border-bottom:1px solid #e5e5e5;margin:20px 0}#products-upsell .products-heading h3{background:#fff;color:#f49a17;padding-right:15px;position:absolute;top:-24px}#products-offer .products-grid .item>article,#products-related .products-grid .item>article,#products-upsell .products-grid .item>article{border-radius:3px;transition:background-color .3s ease-in-out;padding:6px}#products-offer .products-grid .item>article .product-info,#products-related .products-grid .item>article .product-info,#products-upsell .products-grid .item>article .product-info{padding:0}#products-offer .products-grid .item>article .product-info .short-description,#products-related .products-grid .item>article .product-info .short-description,#products-upsell .products-grid .item>article .product-info .short-description{font-size:11px}@media (min-width:768px){#products-offer .products-grid .item:hover article,#products-related .products-grid .item:hover article,#products-upsell .products-grid .item:hover article{background-color:#f6f6f6}}#products-new .overlay:after,#products-offer .overlay:after,#products-upsell .overlay:after{content:'+';font-family:'Open Sans',sans-serif;font-size:80px;font-weight:100;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#products-new .overlay:before{border-radius:3px 3px 0 0}#category-products .item>article .product-info .description{font-size:.83em;line-height:1.3}#category-products .item>article .product-price .price-label{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;display:block}#category-products .item>article .product-price .price-container{margin-bottom:10px}#category-products .item>article .product-price .price-container .price{margin-left:4px}#category-products .item>article .product-price .product-btn{min-height:26px}.grid #category-products .item{border-right:1px solid #e8e8e8;margin:0;padding:10px}.grid #category-products .item>article .product-info{padding:3px}.grid #category-products .item>article .product-info .name{margin:4px;height:2em;overflow:hidden}.grid #category-products .item>article .product-info .description{margin-left:4px}.list #category-products .item>article .product-price .price-container{margin-bottom:20px}.list #category-products .item>article .product-price .price-container .old-price,.list #category-products .item>article .product-price .price-container .regular-price,.list #category-products .item>article .product-price .price-container .special-price{display:block;width:100%}#product-details .product-info{border-bottom:1px solid #e5e5e5;margin-bottom:15px}#product-details .product-info .sku{color:#e5e5e5;display:block;font-size:14px;margin-top:-8px;margin-bottom:20px}#product-details .product-info .pse-name{color:#555;font-size:14px}#product-details .product-options .option{margin-bottom:10px}#product-details .product-cart{background-color:#f5f5f5!important;margin-bottom:20px;padding:10px!important}#product-details .product-promo{background-color:#f5f5f5;margin-bottom:15px;padding:10px}#product-details .product-promo .sale-label{font-weight:300;line-height:1.4;font-size:21px}#product-details .product-promo .sale-saving{color:#f49a17}#product-details .product-promo .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f005"}#product-details .product-promo .sale-period{font-style:italic;font-size:90%}#product-thumbnails .carousel-control{width:17px!important}#product-thumbnails .carousel-control .fa{position:absolute;top:50%}#product-thumbnails .carousel-control.left{border-right:7px solid #ccc;color:#ccc;text-align:left}#product-thumbnails .carousel-control.left>.fa-caret-left{left:0;margin-left:0;margin-top:-15px}#product-thumbnails .carousel-control.left>.fa-caret-left:before{color:inherit}#product-thumbnails .carousel-control.right{border-left:7px solid #ccc;text-align:right}#product-thumbnails .carousel-control.right>.fa-caret-right{left:auto;right:0;margin-left:0;margin-top:-15px}@media (min-width:768px){#product #product-gallery{border-right:1px solid #eee;padding-right:20px}#product #product-details .group-qty .form-control{display:inline-block;margin-right:1em;margin-left:.4em;width:100px}}#product-gallery .product-image{margin-bottom:20px}#product-gallery .product-thumbnails li{width:20%}#filters{background:#f5f5f5}#filters>h3{background:#e5e5e5;box-shadow:inset 0 -4px 10px rgba(0,0,0,.125);margin:0 0 15px;padding:10px 15px;font-size:18px;font-weight:700}#filters>h3>span{display:block;font-size:.75em;font-weight:100;text-transform:lowercase}#filters>h3:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f002";font-size:30px;float:left;margin-right:.5em}#filters .filter{margin-bottom:10px}.block.block-links .block-content ul>li+li a{border-top:none}.block.block-links .block-content ul>li+li:before{background:#fff;content:"";display:block;margin:0 auto;text-align:center;width:65%;height:2px}.block.block-contact .block-content ul>li.contact-address:before,.block.block-newsletter .block-content form .form-group:before{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block.block-newsletter .block-content form .form-group{position:relative}@media (min-width:1200px){.block.block-newsletter .block-content form .form-group{width:176px}}.block.block-newsletter .block-content form .form-group .form-control{background-color:#e6e6e6;font-size:12px;padding-left:35px;width:inherit;box-shadow:inset 1px 1px 1px rgba(0,0,0,.075)}.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder{color:#888;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder{color:#888}.block.block-newsletter .block-content form .form-group .form-control:focus::-moz-placeholder{color:#c8c8c8;opacity:1}.block.block-newsletter .block-content form .form-group .form-control:focus:-ms-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group .form-control:focus::-webkit-input-placeholder{color:#c8c8c8}.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";color:#8b8b8b;font-size:18px;position:absolute;top:8px;left:9px}.block.block-newsletter .block-content form .btn-subscribe{padding:6px}.block.block-social .block-content ul>li>a:hover.facebook{color:#3d5fa6}.block.block-social .block-content ul>li>a:hover.twitter{color:#53b1f0}.block.block-social .block-content ul>li>a:hover.rss{color:#fac200}.block.block-social .block-content ul>li>a:hover.instagram{color:#425E75}.block.block-social .block-content ul>li>a:hover.google-plus{color:#fac200}.block.block-social .block-content ul>li>a:hover.youtube{color:#e82a20}.block.block-contact .block-content ul>li{clear:both;margin-bottom:5px}.block.block-contact .block-content ul>li.contact-address:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f041";font-size:34px}.block.block-contact .block-content ul>li.contact-email:before,.block.block-contact .block-content ul>li.contact-phone:before{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);display:inline-block}.block.block-contact .block-content ul>li.contact-phone:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f10b";font-size:30px;margin-top:-8px;margin-left:3px}.block.block-contact .block-content ul>li.contact-email:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";font-size:17px;margin-left:2px}.block.block-contact .block-content ul>li.contact-contact:before,.js #payment-method .radio .active:after{text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}.block.block-contact .block-content ul>li:before{color:#f49a17;float:left;line-height:1;margin-right:.4em}.block.block-contact .block-content ul>li.contact-contact:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f1d8";font-size:17px}#categories.block-nav .block-content{border-top:1px solid #aeaeae}#categories.block-nav .block-content .amount{font-weight:700}#categories.block-nav .block-content li{border-top:1px solid #eee;position:relative}#categories.block-nav .block-content li .accordion-toggle{position:absolute;top:0;right:0;padding-right:10px;padding-left:5px}#categories.block-nav .block-content li .accordion-toggle:focus,#categories.block-nav .block-content li .accordion-toggle:hover{background:0 0}#categories.block-nav .block-content li .accordion-toggle:focus:after,#categories.block-nav .block-content li .accordion-toggle:hover:after{border-color:#b66f09;color:#b66f09}#categories.block-nav .block-content li .accordion-toggle:after{border:1px solid #f49a17;border-radius:10px;line-height:17px;text-align:center;width:19px;height:19px}.toolbar.toolbar-top{margin-top:-20px;border-bottom:1px solid #eee}.toolbar.toolbar-bottom .sorter-container,.toolbar.toolbar-top .pagination-container{display:none}.toolbar .amount{color:#f49a17;font-size:22px;font-weight:400}.toolbar .view-mode>.view-mode-btn a{background-color:#fff;border:0!important;color:#7a7a7a}.toolbar .view-mode>.view-mode-btn a:focus,.toolbar .view-mode>.view-mode-btn a:hover{background-color:#efefef;color:#474747}.toolbar .view-mode>.view-mode-btn a:active{color:#fff}.pagination>li>a,.pagination>li>span{box-shadow:2px 1px 1px rgba(0,0,0,.1);transition:all .2s ease-in-out;background-image:linear-gradient(to bottom,#fff 0,#f9f9f9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0);color:#7a7a7a;font-weight:700}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background:0 0}.pagination>li>a:focus:active,.pagination>li>a:hover:active,.pagination>li>span:focus:active,.pagination>li>span:hover:active{background-color:#f49a17;border-color:#f49a17;color:#fff}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:30px;border-top-left-radius:30px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:30px;border-top-right-radius:30px}.pagination>.active>a,.pagination>.active>span{background-image:none}#form-forgotpassword .group-email label,#form-forgotpassword legend,#form-login .group-email label,#form-login legend{font-size:16px;font-weight:600}#form-forgotpassword .radio-account1,#form-login .radio-account1{margin-top:10px}#form-forgotpassword .forgot-password,#form-login .forgot-password{color:#7a7a7a;font-size:12px;font-style:italic}@media (min-width:768px){#form-forgotpassword .radio-account1,#form-login .radio-account1{float:left}#form-forgotpassword .group-password,#form-login .group-password{float:right;margin-top:5px;width:50%}}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body{padding:0}#delivery-method.panel .radio{display:block;margin-top:0}#delivery-method.panel .radio+.radio{border-top:1px solid #f5f5f5}#delivery-method.panel .price{text-align:right}#delivery-method.panel .image{text-align:center}#account .panel-title,#payment-success.panel .panel-heading{text-align:left}.js #payment-method .radio{padding-left:0;position:relative}.js #payment-method .radio .active:after{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f077";color:#f49a17;display:block;font-size:1.5em;line-height:0;position:absolute;bottom:-8px;left:40%}#account .panel-title>a:before,#account-info .list-info .mobile:before{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0)}#payment-success.panel .panel-heading .payment-method{font-size:inherit}#payment-success.panel .panel-body{padding:20px 40px}#account-address .panel-body,#account-orders .panel-body{padding-left:0;padding-right:0}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{box-shadow:none;border-color:#fff}#account .panel-title>a:before{font:normal normal normal 14px/1 FontAwesome;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f078";float:left;width:20px}#account .panel-title>a.collapsed:before{content:"\f054"}#account-info .fn{font-size:16px;font-weight:600}#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{color:#f49a17;line-height:1;margin-right:.4em;vertical-align:middle}#account-info .list-info .mobile:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .email:before,#account-info .list-info .tel:before{display:inline-block;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#account-info .list-info .tel:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f095";font-size:22px}#account-info .list-info .email:before{font:normal normal normal 14px/1 FontAwesome;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f0e0";font-size:18px}#account-info .group-btn a{color:#7a7a7a;margin-bottom:4px;padding:0}#account-info .group-btn a>i{color:#f49a17;font-size:20px;line-height:1;margin-right:.3em;vertical-align:middle}#account-info .group-btn a:focus,#account-info .group-btn a:hover{color:#b66f09}#account-address .panel-body{padding-top:10px}#account-address .table-address{border:1px solid #f5f5f5;margin-bottom:0}#account-orders .table-orders tbody>tr>td,#account-orders .table-orders tbody>tr>th,#account-orders .table-orders thead>tr>td,#account-orders .table-orders thead>tr>th{padding:14px;text-align:center}#account-orders .table-orders thead>tr>th{background-color:#f5f5f5;border-bottom-width:1px}#account-orders .table-order-products tbody>tr>td,#account-orders .table-order-products tbody>tr>th,#account-orders .table-order-products thead>tr>td,#account-orders .table-order-products thead>tr>th{padding:5px;text-align:center}.table-cart-mini tbody>tr>td,.table-cart-mini tbody>tr>th,.table-cart-mini tfoot>tr>td,.table-cart-mini tfoot>tr>th,.table-cart-mini thead>tr>td,.table-cart-mini thead>tr>th{vertical-align:middle}#google-map{border:none;display:block;margin-bottom:20px;width:100%;height:350px;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}#sale-details .sale-discount-information{background-color:#f5f5f5;margin-bottom:10px;padding:10px}#sale-details .sale-discount-information .sale-saving{font-size:120%;color:#f49a17}#sale-details .sale-discount-information .sale-saving:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);content:"\f005"}#sale-details .sale-discount-information .sale-period{font-style:italic;font-size:90%}#sale-details .sale-information{margin-bottom:30px}#sale-details .sale-information .chapo,#sale-details .sale-information .description{margin-bottom:10px} \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.eot b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.eot deleted file mode 100644 index b93a4953..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.svg b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.svg deleted file mode 100644 index 94fb5490..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf deleted file mode 100644 index 1413fc60..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff deleted file mode 100644 index 9e612858..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 deleted file mode 100644 index 64539b54..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/bootstrap/glyphicons-halflings-regular.woff2 and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/FontAwesome.otf b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/FontAwesome.otf deleted file mode 100644 index f7936cc1..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/FontAwesome.otf and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.eot b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.eot deleted file mode 100644 index 33b2bb80..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.eot and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.svg b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.svg deleted file mode 100644 index 1ee89d43..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.svg +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.ttf b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.ttf deleted file mode 100644 index ed9372f8..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.ttf and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff deleted file mode 100644 index 8b280b98..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff2 b/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff2 deleted file mode 100644 index 3311d585..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/fonts/fontawesome/fontawesome-webfont.woff2 and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/118x85.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/118x85.png deleted file mode 100644 index cf9e98b4..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/118x85.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/1200x390.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/1200x390.png deleted file mode 100644 index 2de73de4..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/1200x390.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/218x146.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/218x146.png deleted file mode 100644 index 6e964a2c..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/218x146.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/280x196.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/280x196.png deleted file mode 100644 index 592012de..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/280x196.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/560x445.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/560x445.png deleted file mode 100644 index 37fea177..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/560x445.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/700x320.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/700x320.png deleted file mode 100644 index d7345b44..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/700x320.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/ad58033.ico b/web/assets/frontOffice/default/template-assets/assets/dist/img/ad58033.ico deleted file mode 100644 index 19f5af19..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/ad58033.ico and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/ajax-loader.gif b/web/assets/frontOffice/default/template-assets/assets/dist/img/ajax-loader.gif deleted file mode 100644 index 948fa9bd..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/ajax-loader.gif and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/american-express.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/american-express.png deleted file mode 100644 index 853b43da..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/american-express.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider2.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider2.jpg deleted file mode 100644 index 143efc37..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider2.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider3.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider3.jpg deleted file mode 100644 index 36585e7f..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/carousel/slider3.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/cheque.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/cheque.png deleted file mode 100644 index 16d83ba1..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/cheque.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/header.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/email/header.jpg deleted file mode 100644 index 8cdff684..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/header.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.gif b/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.gif deleted file mode 100644 index cfa39664..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.gif and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.png deleted file mode 100644 index 6cb56aea..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/email/logo.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.ico b/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.ico deleted file mode 100644 index 19f5af19..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.ico and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.png deleted file mode 100644 index e481a99d..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/favicon.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/googlemap-icon.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/googlemap-icon.png deleted file mode 100644 index d033f591..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/googlemap-icon.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/header.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/header.jpg deleted file mode 100644 index c80e1652..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/header.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/kwixo.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/kwixo.png deleted file mode 100644 index 2055f9c8..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/kwixo.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.gif b/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.gif deleted file mode 100644 index cfa39664..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.gif and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.png deleted file mode 100644 index 6cb56aea..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/logo.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/mastercard.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/mastercard.png deleted file mode 100644 index 28701c3d..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/mastercard.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/american-express.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/american-express.png deleted file mode 100644 index 6535ceba..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/american-express.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/cheque.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/cheque.png deleted file mode 100644 index bf781cfd..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/cheque.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/kwixo.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/kwixo.png deleted file mode 100644 index c6042d9a..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/kwixo.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/mastercard.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/mastercard.png deleted file mode 100644 index b850418c..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/mastercard.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/visa.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/visa.png deleted file mode 100644 index 1bbc3296..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/payment/visa.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/product/1/118x85.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/product/1/118x85.png deleted file mode 100644 index eb018927..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/product/1/118x85.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider1.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/slider1.jpg deleted file mode 100644 index 3492ab6e..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider1.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider2.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/slider2.jpg deleted file mode 100644 index 08ce939c..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider2.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider3.jpg b/web/assets/frontOffice/default/template-assets/assets/dist/img/slider3.jpg deleted file mode 100644 index a986bef0..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/slider3.jpg and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/img/visa.png b/web/assets/frontOffice/default/template-assets/assets/dist/img/visa.png deleted file mode 100644 index ef044710..00000000 Binary files a/web/assets/frontOffice/default/template-assets/assets/dist/img/visa.png and /dev/null differ diff --git a/web/assets/frontOffice/default/template-assets/assets/dist/js/vendors/97e06e3.js b/web/assets/frontOffice/default/template-assets/assets/dist/js/vendors/97e06e3.js deleted file mode 100644 index 80a7b69d..00000000 --- a/web/assets/frontOffice/default/template-assets/assets/dist/js/vendors/97e06e3.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl - * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT - * */ - -!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file
    ").addClass("cw").text("#"));c.isBefore(l.clone().endOf("w"));)b.append(a("").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},L=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},M=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},N=function(a){return d.disabledHours[a.format("H")]===!0},O=function(a){return d.enabledHours[a.format("H")]===!0},P=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&L(b))return!1;if(d.enabledDates&&"d"===c&&!M(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&N(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!O(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},Q=function(){for(var b=[],c=l.clone().startOf("y").startOf("d");c.isSame(l,"y");)b.push(a("").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},R=function(){var b=o.find(".datepicker-months"),c=b.find("th"),e=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),P(l.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(l.year()),P(l.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),e.removeClass("active"),k.isSame(l,"y")&&!m&&e.eq(k.month()).addClass("active"),e.each(function(b){P(l.clone().month(b),"M")||a(this).addClass("disabled")})},S=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=l.clone().subtract(5,"y"),e=l.clone().add(6,"y"),f="";for(b.eq(0).find("span").attr("title",d.tooltips.nextDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.prevDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+e.year()),d.maxDate&&d.maxDate.isBefore(e,"y")&&b.eq(2).addClass("disabled");!c.isAfter(e,"y");)f+=''+c.year()+"",c.add(1,"y");a.find("td").html(f)},T=function(){var a=o.find(".datepicker-decades"),c=a.find("th"),e=b(l.isBefore(b({y:1999}))?{y:1899}:{y:1999}),f=e.clone().add(100,"y"),g="";for(c.eq(0).find("span").attr("title",d.tooltips.prevCentury),c.eq(2).find("span").attr("title",d.tooltips.nextCentury),a.find(".disabled").removeClass("disabled"),(e.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(e,"y"))&&c.eq(0).addClass("disabled"),c.eq(1).text(e.year()+"-"+f.year()),(e.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(f,"y"))&&c.eq(2).addClass("disabled");!e.isAfter(f,"y");)g+=''+(e.year()+1)+" - "+(e.year()+12)+"",e.add(12,"y");g+="",a.find("td").html(g)},U=function(){var c,e,f,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[];if(z()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(l.format(d.dayViewHeaderFormat)),P(l.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),P(l.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),c=l.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===c.weekday()&&(e=a("
    '+c.week()+"'+c.date()+"
    '+c.format(f?"HH":"hh")+"
    '+c.format("mm")+"
    '+c.format("ss")+"