diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1bd422b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/cache/ +/log/ diff --git a/local/media/images/carousel/img_2866-9.jpg b/local/media/images/carousel/img_2866-9.jpg new file mode 100644 index 00000000..c328eb8a Binary files /dev/null and b/local/media/images/carousel/img_2866-9.jpg differ diff --git a/local/media/images/carousel/img_3268-6.jpg b/local/media/images/carousel/img_3268-6.jpg new file mode 100644 index 00000000..c7ce8cb5 Binary files /dev/null and b/local/media/images/carousel/img_3268-6.jpg differ diff --git a/local/media/images/carousel/img_4834-7.jpg b/local/media/images/carousel/img_4834-7.jpg new file mode 100644 index 00000000..31a0c972 Binary files /dev/null and b/local/media/images/carousel/img_4834-7.jpg differ diff --git a/local/media/images/carousel/img_6025-8.jpg b/local/media/images/carousel/img_6025-8.jpg new file mode 100644 index 00000000..2f75d5e1 Binary files /dev/null and b/local/media/images/carousel/img_6025-8.jpg differ diff --git a/local/media/images/product/abricot_106-14.jpg b/local/media/images/product/abricot_106-14.jpg new file mode 100644 index 00000000..63f11f54 Binary files /dev/null and b/local/media/images/product/abricot_106-14.jpg differ diff --git a/local/media/images/product/abricot_400-13.jpg b/local/media/images/product/abricot_400-13.jpg new file mode 100644 index 00000000..5b943c75 Binary files /dev/null and b/local/media/images/product/abricot_400-13.jpg differ diff --git a/local/modules/BetterPassword/Config/config.xml b/local/modules/BetterPassword/Config/config.xml deleted file mode 100644 index fb8692e8..00000000 --- a/local/modules/BetterPassword/Config/config.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - diff --git a/local/modules/BetterPassword/Config/routing.xml b/local/modules/BetterPassword/Config/routing.xml deleted file mode 100644 index 18c8db19..00000000 --- a/local/modules/BetterPassword/Config/routing.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - BetterPassword\Controller\ConfigureController::configure - - diff --git a/local/modules/BetterPassword/Controller/ConfigureController.php b/local/modules/BetterPassword/Controller/ConfigureController.php deleted file mode 100644 index c99c890f..00000000 --- a/local/modules/BetterPassword/Controller/ConfigureController.php +++ /dev/null @@ -1,83 +0,0 @@ - - * Date: 03/03/2019 18:30 - */ -namespace BetterPassword\Controller; - -use BetterPassword\BetterPassword; -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; - -class ConfigureController extends BaseAdminController -{ - public function configure() - { - if (null !== $response = $this->checkAuth(AdminResources::MODULE, 'betterpassword', AccessManager::UPDATE)) { - return $response; - } - - $configurationForm = $this->createForm('betterpassword.configuration'); - $message = null; - - try { - $form = $this->validateForm($configurationForm); - - // Get the form field values - $data = $form->getData(); - - foreach ($data as $name => $value) { - if (is_array($value)) { - foreach ($value as $locale => $text) { - BetterPassword::setConfigValue($name, $text, $locale); - } - } else { - BetterPassword::setConfigValue($name, $value); - } - } - - // Log configuration modification - $this->adminLogAppend( - "betterpassword.configuration.message", - AccessManager::UPDATE, - "Better Password configuration updated" - ); - - // Redirect to the success URL, - if ($this->getRequest()->get('save_mode') == 'stay') { - // If we have to stay on the same page, redisplay the configuration page/ - $url = '/admin/module/BetterPassword'; - } 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) { - $message = $this->createStandardFormValidationErrorMessage($ex); - } catch (\Exception $ex) { - $message = $ex->getMessage(); - } - - $this->setupFormErrorContext( - $this->getTranslator()->trans("BetterPassword configuration", [], BetterPassword::DOMAIN_NAME), - $message, - $configurationForm, - $ex - ); - - return $this->generateRedirect(URL::getInstance()->absoluteUrl('/admin/module/BetterPassword')); - } -} diff --git a/local/modules/BetterPassword/EventListeners/FormHandler.php b/local/modules/BetterPassword/EventListeners/FormHandler.php deleted file mode 100644 index 42e2ad31..00000000 --- a/local/modules/BetterPassword/EventListeners/FormHandler.php +++ /dev/null @@ -1,104 +0,0 @@ - - * Date: 03/03/2019 17:38 - */ -namespace BetterPassword\EventListeners; - -use BetterPassword\BetterPassword; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Validator\Constraints\Callback; -use Symfony\Component\Validator\Constraints\NotBlank; -use Symfony\Component\Validator\ExecutionContextInterface; -use Thelia\Core\Event\TheliaEvents; -use Thelia\Core\Event\TheliaFormEvent; -use Thelia\Core\HttpFoundation\Request; -use Thelia\Core\Translation\Translator; - -class FormHandler implements EventSubscriberInterface -{ - /** @var RequestStack */ - protected $requestStack; - - /** - * FormHandler constructor. - * @param RequestStack $requestStack - */ - public function __construct(RequestStack $requestStack) - { - $this->requestStack = $requestStack; - } - - public function changeCreatePasswordVerification(TheliaFormEvent $event) - { - $this->changePasswordVerification($event, 'password'); - } - - public function changeUpdatePasswordVerification(TheliaFormEvent $event) - { - $this->changePasswordVerification($event, 'password'); - } - - protected function getLocale() - { - /** @var Request $request */ - $request = $this->requestStack->getCurrentRequest(); - - return $request->getSession()->getLang()->getLocale(); - } - - public function changePasswordVerification(TheliaFormEvent $event, $fieldName) - { - $formBuilder = $event->getForm()->getFormBuilder(); - - $passwordField = $formBuilder->get($fieldName); - - $options = $passwordField->getOptions(); - $type = $passwordField->getType()->getName(); - - $options['constraints'] = [ - new NotBlank(), - new Callback([ "methods" => [[ $this, "checkPasswordValidity" ]]]) - ]; - - $options['label_attr']['help'] = BetterPassword::getConfigValue('password_requirements', '', $this->getLocale()); - - $formBuilder->add($fieldName, $type, $options); - } - - public function checkPasswordValidity($value, ExecutionContextInterface $context) - { - $expression = BetterPassword::getConfigValue('password_expression', null); - - if (null !== $expression && ! preg_match("/$expression/", $value)) { - $context->addViolation( - Translator::getInstance()->trans( - "Your password does not match the requirements : %requirement_text", - [ - '%requirement_text' => BetterPassword::getConfigValue('password_requirements', '', $this->getLocale()) - ], - BetterPassword::DOMAIN_NAME - ) - ); - } - } - - public static function getSubscribedEvents() - { - return [ - TheliaEvents::FORM_AFTER_BUILD . ".thelia_customer_create" => ['changeCreatePasswordVerification', 128], - TheliaEvents::FORM_AFTER_BUILD . ".thelia_customer_password_update" => ['changeUpdatePasswordVerification', 128] - ]; - } - -} diff --git a/local/modules/BetterPassword/Form/ConfigForm.php b/local/modules/BetterPassword/Form/ConfigForm.php deleted file mode 100644 index 503c660c..00000000 --- a/local/modules/BetterPassword/Form/ConfigForm.php +++ /dev/null @@ -1,64 +0,0 @@ - - * Date: 03/03/2019 18:26 - */ -namespace BetterPassword\Form; - -use BetterPassword\BetterPassword; -use Symfony\Component\Validator\Constraints\NotBlank; -use Thelia\Core\Translation\Translator; -use Thelia\Form\BaseForm; - -class ConfigForm extends BaseForm -{ - protected function buildForm() - { - $translator = Translator::getInstance(); - - $this->formBuilder - ->add( - BetterPassword::VAR_REGULAR_EXPRESSION, - 'text', - [ - 'constraints' => [ - new NotBlank(), - ], - 'label' => $translator->trans('Regular expression to match', [], BetterPassword::DOMAIN_NAME), - 'label_attr' => [ - 'help' => $this->translator->trans( - 'This is the regular expression the passwords must match.', - [], - BetterPassword::DOMAIN_NAME - ) - ] - ] - )->add( - BetterPassword::VAR_PASSWORD_REQUIREMENTS, - 'collection', - [ - 'type' => 'text', - 'allow_add' => true, - 'allow_delete' => true, - 'label' => $translator->trans('Password requirements description', [], BetterPassword::DOMAIN_NAME), - 'label_attr' => [ - 'help' => $this->translator->trans( - 'Please enter the password requirements description that will be displayed to your customers.', - [], - BetterPassword::DOMAIN_NAME - ) - ], - ] - ); - - } -} diff --git a/local/modules/BetterPassword/Hook/HookManager.php b/local/modules/BetterPassword/Hook/HookManager.php deleted file mode 100644 index 00816b97..00000000 --- a/local/modules/BetterPassword/Hook/HookManager.php +++ /dev/null @@ -1,50 +0,0 @@ - - * Date: 03/03/2019 18:14 - */ -namespace BetterPassword\Hook; - -use BetterPassword\BetterPassword; -use Thelia\Core\Event\Hook\HookRenderEvent; -use Thelia\Core\Hook\BaseHook; -use Thelia\Model\Lang; -use Thelia\Model\LangQuery; - -class HookManager extends BaseHook -{ - public function onModuleConfigure(HookRenderEvent $event) - { - $langs = LangQuery::create()->findByActive(true); - - $requirements = []; - - /** @var Lang $lang */ - foreach ($langs as $lang) { - $requirements[$lang->getLocale()] = - BetterPassword::getConfigValue( - BetterPassword::VAR_PASSWORD_REQUIREMENTS, '', $lang->getLocale() - ); - } - - $event->add( - $this->render( - 'betterpassword/module-configuration.html', - [ - BetterPassword::VAR_REGULAR_EXPRESSION => BetterPassword::getConfigValue(BetterPassword::VAR_REGULAR_EXPRESSION) , - BetterPassword::VAR_PASSWORD_REQUIREMENTS => $requirements - ] - - ) - ); - } -} diff --git a/local/modules/BetterPassword/I18n/backOffice/default/en_US.php b/local/modules/BetterPassword/I18n/backOffice/default/en_US.php deleted file mode 100644 index 27fa51e0..00000000 --- a/local/modules/BetterPassword/I18n/backOffice/default/en_US.php +++ /dev/null @@ -1,6 +0,0 @@ -https://regex101.com) que les mots de passe de vos clients devront satisfaire. Vous devrez aussi indiquer une description des contraintes à satisfaire. Cette description sera affiché à vos clients.' => 'In this module you can define a regular expression (see https://regex101.com) your customer passwords must match. You must also enter a description of the requirements. This description will be displayed to your customers.', - 'Demander des mots de passe sécurisés' => 'Require secure customer passwords', -); diff --git a/local/modules/BetterPassword/I18n/backOffice/default/fr_FR.php b/local/modules/BetterPassword/I18n/backOffice/default/fr_FR.php deleted file mode 100644 index e87714bf..00000000 --- a/local/modules/BetterPassword/I18n/backOffice/default/fr_FR.php +++ /dev/null @@ -1,6 +0,0 @@ -https://regex101.com) que les mots de passe de vos clients devront satisfaire. Vous devrez aussi indiquer une description des contraintes à satisfaire. Cette description sera affiché à vos clients.' => 'Ce module vous permet d\'indiquer une expression régulière (cf. https://regex101.com) que les mots de passe de vos clients devront satisfaire. Vous devrez aussi indiquer une description des contraintes à satisfaire. Cette description sera affiché à vos clients.', - 'Demander des mots de passe sécurisés' => 'Demander des mots de passe sécurisés', -); diff --git a/local/modules/BetterPassword/I18n/en_US.php b/local/modules/BetterPassword/I18n/en_US.php deleted file mode 100644 index 410a40fc..00000000 --- a/local/modules/BetterPassword/I18n/en_US.php +++ /dev/null @@ -1,10 +0,0 @@ - 'BetterPassword configuration', - 'Password requirements description' => 'Password requirements description', - 'Please enter the password requirements description that will be displayed to your customers.' => 'Please enter the password requirements description that will be displayed to your customers.', - 'Regular expression to match' => 'Regular expression to match', - 'This is the regular expression the passwords must match.' => 'This is the regular expression the passwords must match.', - 'Your password does not match the requirements : %requirement_text' => 'Your password does not match the requirements : %requirement_text', -); diff --git a/local/modules/BetterPassword/I18n/fr_FR.php b/local/modules/BetterPassword/I18n/fr_FR.php deleted file mode 100644 index c2a8f3b4..00000000 --- a/local/modules/BetterPassword/I18n/fr_FR.php +++ /dev/null @@ -1,10 +0,0 @@ - 'Configuration BetterPassowrd', - 'Password requirements description' => 'Description des exigences', - 'Please enter the password requirements description that will be displayed to your customers.' => 'Décrivez ici les exigences que les mots de passe de vos clients doivent satisfaire.', - 'Regular expression to match' => 'Expression régulière à satisfaire', - 'This is the regular expression the passwords must match.' => 'Il s\'agit de l\'expression régulière que les mots de passe de vos clients doivent satisfaire', - 'Your password does not match the requirements : %requirement_text' => 'Votre mot de passe ne satisfait pas les conditions requises : %requirement_text', -); diff --git a/local/modules/BetterPassword/Readme.md b/local/modules/BetterPassword/Readme.md deleted file mode 100644 index de45d1c5..00000000 --- a/local/modules/BetterPassword/Readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# Better Password - -Ce module permet de contrôler que les mots de passe saisis par les clients respectent une expression régulière. - -Ceci permet de forcer vos clients à utiliser des mots de passe plus sécurisés. diff --git a/local/modules/BetterPassword/templates/backOffice/default/betterpassword/module-configuration.html b/local/modules/BetterPassword/templates/backOffice/default/betterpassword/module-configuration.html deleted file mode 100644 index b7153089..00000000 --- a/local/modules/BetterPassword/templates/backOffice/default/betterpassword/module-configuration.html +++ /dev/null @@ -1,68 +0,0 @@ -
-
-
-
- {intl d='betterpassword.bo.default' l="Demander des mots de passe sécurisés"} -
-
- -
-
-
- {form name="betterpassword.configuration"} - - {form_hidden_fields form=$form} - - {include file = "includes/inner-form-toolbar.html" - hide_flags = true - page_url = "{url path='/admin/module/BetterPassword'}" - close_url = "{url path='/admin/modules'}" - } - - {if $form_error} -
-
-
{$form_error_message}
-
-
- {/if} - -
-
-

- {intl d='betterpassword.bo.default' l='Ce module vous permet d\'indiquer une expression régulière (cf. https://regex101.com) que les mots de passe de vos clients devront satisfaire. Vous devrez aussi indiquer une description des contraintes à satisfaire. Cette description sera affiché à vos clients.'} -

-

- -
- {render_form_field field="password_expression" value=$password_expression} -
- -
- {form_field field="password_requirements"} -
- - {loop type="lang" name="lang" active=1} - {form_field field="password_requirements" value_key=$LOCALE} -
- - - {$TITLE} -
- {/form_field} - {/loop} - {$label_attr.help nofilter} -
- {/form_field} -
-
- - {/form} -
-
-
-
-
diff --git a/local/modules/Carousel/Config/module.xml b/local/modules/Carousel/Config/module.xml index 6608a359..abe7fff2 100644 --- a/local/modules/Carousel/Config/module.xml +++ b/local/modules/Carousel/Config/module.xml @@ -13,7 +13,7 @@ en_US fr_FR - 2.3.4 + 2.3.5 Manuel Raynaud, Franck Allimant manu@raynaud.io, franck@cqfdev.fr diff --git a/local/modules/IciRelais/AdminIncludes/module-config-js.html b/local/modules/IciRelais/AdminIncludes/module-config-js.html deleted file mode 100644 index 31a81a0d..00000000 --- a/local/modules/IciRelais/AdminIncludes/module-config-js.html +++ /dev/null @@ -1,76 +0,0 @@ -{javascripts file='assets/js/bootstrap-switch/bootstrap-switch.js'} - -{/javascripts} - - \ No newline at end of file diff --git a/local/modules/IciRelais/AdminIncludes/module_configuration.html b/local/modules/IciRelais/AdminIncludes/module_configuration.html deleted file mode 100644 index 17fd4593..00000000 --- a/local/modules/IciRelais/AdminIncludes/module_configuration.html +++ /dev/null @@ -1,400 +0,0 @@ -
- - {loop name="checkrights" type="icirelais.check.rights"} -
-

{$ERRMES} {$ERRFILE} | {intl d='icirelais.ai' l="Please change the access rights"}.

-
- {/loop} -
-{elseloop rel="checkrights"} - {loop type="currency" name="curncy" default_only=1} - {$currencySymbol = $SYMBOL} - {/loop} - - {* Calc tab selection *} - {assign var="tab" value="0"} - {if isset($smarty.get.current_tab)} - {if $smarty.get.current_tab eq "configure_export_exaprint"} - {assign var="tab" value="1"} - {/if} - {if $smarty.get.current_tab eq "price_slices_tab"} - {assign var="tab" value="2"} - {/if} - {/if} - -
-
-
- -
-
-
- {ifloop rel="list.icirelais.orders"} - {form name="icirelais.selection"} -
-
- -
- {intl d='icirelais.ai' l="Change orders status after export"} -
- -
- {form_field form=$form field="new_status_id"} - - - - - - - - - - - - - -
-   - - -
-   - - -
-   - - - {intl d='icirelais.ai' l="If you choose this option, the exported orders would not be available on this page anymore"} -
- {/form_field} -
-
- - {form_hidden_fields form=$form} - - - - - - - - - - - - - - {loop name="list.icirelais.orders" type="icirelais.orders"} - - - - - {assign var="assurref" value="`$REF|replace:'.':'-'`-assur"} - {form_field form=$form field=$assurref} - - {/form_field} - {form_field form=$form field=$REF|replace:'.':'-'} - - {/form_field} - - {/loop} - -
- {intl d='icirelais.ai' l="REF"} - - {intl d='icirelais.ai' l="Date"} - - {intl d='icirelais.ai' l="Total taxed amount"} - - {intl d='icirelais.ai' l="Package warranty"} - - {intl d='icirelais.ai' l="Export"} -
- - - {format_date date=$CREATE_DATE output="datetime"} - - {loop name="list.icirelais.getcurrency" type="currency" id=$CURRENCY} - {format_money number=$TOTAL_TAXED_AMOUNT symbol=$SYMBOL} - {/loop} - - - - -
- - - -
- - - -
-
- {/form} - {/ifloop} - - {elseloop rel='list.icirelais.orders'} -
- {intl l="There are currently no pending order to ship by IciRelais."} -
- {/elseloop} -
- -
- {form name="icirelais.export"}  -
- {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="addr"} -
- - - -
- {/form_field} - - {form_field form=$form field="addr2"} -
- - -
- {/form_field} - - {form_field form=$form field="zipcode"} -
- - - -
- {/form_field} - - {form_field form=$form field="city"} -
- - - -
- {/form_field} - - {form_field form=$form field="tel"} -
- - - -
- {/form_field} - - {form_field form=$form field="mobile"} -
- - - -
- {/form_field} - - {form_field form=$form field="mail"} -
- - - -
- {/form_field} - - {form_field form=$form field="expcode"} -
- - - -
- {/form_field} - -
- -
-
- {/form} -
- -
- -
-

{intl d='icirelais.ai' l="Ici Relais Module allows you to send your products in France."}

-
- -
- - - {assign var="isIcirelaisFreeShipping" value=0} - {form name="icirelais.freeshipping.form"} -
- {form_hidden_fields form=$form} - - {form_field form=$form field="freeshipping"} - - -
- -
- {/form_field} -
- {/form} - -
-
-
-
-
-
-{/elseloop} \ No newline at end of file diff --git a/local/modules/IciRelais/AdminIncludes/order-edit.html b/local/modules/IciRelais/AdminIncludes/order-edit.html deleted file mode 100644 index 96c56f56..00000000 --- a/local/modules/IciRelais/AdminIncludes/order-edit.html +++ /dev/null @@ -1,27 +0,0 @@ -{loop name="tracking" type="icirelais.urltracking" ref=$REF} -
-
-
- {intl l="Export EXAPRINT file of this order"} -
-
- - {form name="icirelais.selection"} -
- {form_hidden_fields form=$form} - {form_field form=$form field="new_status_id"} - - {/form_field} - - {form_field form=$form field={$REF|replace:'.':'-'}} - - {/form_field} - -
- {/form} -
- - Suivi du colis: ici -
-
-{/loop} \ No newline at end of file diff --git a/local/modules/IciRelais/Config/config.xml b/local/modules/IciRelais/Config/config.xml deleted file mode 100644 index 8a894533..00000000 --- a/local/modules/IciRelais/Config/config.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/local/modules/IciRelais/Config/exapaq.wsdl b/local/modules/IciRelais/Config/exapaq.wsdl deleted file mode 100644 index 60a0063f..00000000 --- a/local/modules/IciRelais/Config/exapaq.wsdl +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Get all pudos nearest to a postal address - - - - - - Get properties of pudo by its ID - - - - - - - - Get all pudos nearest to a postal address - - - - - Get properties of pudo by its ID - - - - - - - - Get all pudos nearest to a postal address - - - - - - Get properties of pudo by its ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/local/modules/IciRelais/Config/module.xml b/local/modules/IciRelais/Config/module.xml deleted file mode 100644 index 161cfaf9..00000000 --- a/local/modules/IciRelais/Config/module.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - IciRelais\IciRelais - - IciRelais\IciRelais - - - - Livraison en point ICI relais par Exapaq - Livraison 24/ 48H parmi 5 000 relais en France - [[Choisissez la livraison sans contrainte avec ICI relais !

-

Faites-vous livrer dans l’un de nos 5 000 commerces de proximité disponibles sur toute la France. Vous avez la liberté de choisir le commerce qui vous convient le mieux : près de chez vous ou encore près de votre travail, et d’aller y retirer votre colis 7/7 jours (*).

-

Dès que votre colis est livré dans l’espace ICI relais préalablement choisi, vous êtes automatiquement prévenus par email ou SMS de sa disponibilité.
- Si vous ne pouvez pas le récupérer le jour même, pas de souci, votre colis reste disponible jusqu’à 9 jours !

-

ICI relais c’est l’assurance d’une livraison de qualité avec : -

    -
  • Une livraison toute France en 24/48 H
  • -
  • Un choix parmi plus de 5 000 commerces répartis sur toute la France et rigoureusement sélectionnés (situation géographique, capacité de stockage, horaires d’ouverture…)
  • -
  • Un suivi détaillé (tracing) de votre colis disponible 24/24H sur www.icirelais.com
  • -
  • Une alerte (email / SMS) dès l’arrivée de votre colis dans l’espace ICI relais
  • -
  • Des outils innovants en phase avec la tendance de mobilité : des applications ICI relais pour Iphone et Android.
  • -

- ]]> -
-
- - en_US - fr_FR - - 1.1 - - Thelia - info@thelia.net - - delivery - 2.1.0 - beta -
\ No newline at end of file diff --git a/local/modules/IciRelais/Config/prices.json b/local/modules/IciRelais/Config/prices.json deleted file mode 100644 index 33bd08ea..00000000 --- a/local/modules/IciRelais/Config/prices.json +++ /dev/null @@ -1 +0,0 @@ -{"1":{"_info":"area 1 : France","slices":{"0.25":"5.16","0.5":"5.59","1":5.89,"2":6.19,"3":6.51,"5":7.15,"6":7.52,"7":7.89,"8":8.26,"9":8.63,"10":9,"11":9.4,"12":9.79,"13":10.2,"14":10.62,"15":11.05,"16":11.55,"17":12.05,"18":12.55,"19":13.05,"20":13.55}},"2":{"slices":[]}} \ No newline at end of file diff --git a/local/modules/IciRelais/Config/routing.xml b/local/modules/IciRelais/Config/routing.xml deleted file mode 100644 index 8a6387d9..00000000 --- a/local/modules/IciRelais/Config/routing.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - IciRelais\Controller\SearchCityController::searchAction - \d{5} - .+ - - - - IciRelais\Controller\Export::exportfile - - - - IciRelais\Controller\ExportExaprint::export - - - - IciRelais\Controller\EditPrices::editprices - - - - IciRelais\Controller\FreeShipping::set - - diff --git a/local/modules/IciRelais/Config/schema.xml b/local/modules/IciRelais/Config/schema.xml deleted file mode 100644 index 9a116fd2..00000000 --- a/local/modules/IciRelais/Config/schema.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- - - - - -
- -
diff --git a/local/modules/IciRelais/Config/thelia.sql b/local/modules/IciRelais/Config/thelia.sql deleted file mode 100644 index 315051e2..00000000 --- a/local/modules/IciRelais/Config/thelia.sql +++ /dev/null @@ -1,111 +0,0 @@ - -# 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; - --- --------------------------------------------------------------------- --- order_address_icirelais --- --------------------------------------------------------------------- - -CREATE TABLE IF NOT EXISTS `order_address_icirelais` -( - `id` INTEGER NOT NULL, - `code` VARCHAR(10) NOT NULL, - PRIMARY KEY (`id`), - CONSTRAINT `fk_order_address_icirelais_order_address_id` - FOREIGN KEY (`id`) - REFERENCES `order_address` (`id`) - ON UPDATE CASCADE - ON DELETE CASCADE -) ENGINE=InnoDB; - --- --------------------------------------------------------------------- --- address_icirelais --- --------------------------------------------------------------------- -CREATE TABLE IF NOT EXISTS `address_icirelais` -( - `id` INTEGER NOT NULL, - `title_id` INTEGER NOT NULL, - `company` VARCHAR(255), - `firstname` VARCHAR(255) NOT NULL, - `lastname` VARCHAR(255) NOT NULL, - `address1` VARCHAR(255) NOT NULL, - `address2` VARCHAR(255) NOT NULL, - `address3` VARCHAR(255) NOT NULL, - `zipcode` VARCHAR(10) NOT NULL, - `city` VARCHAR(255) NOT NULL, - `country_id` INTEGER NOT NULL, - `code` VARCHAR(10) NOT NULL, - PRIMARY KEY (`id`), - INDEX `FI_address_icirelais_customer_title_id` (`title_id`), - INDEX `FI_address_country_id` (`country_id`), - CONSTRAINT `fk_address_icirelais_customer_title_id` - FOREIGN KEY (`title_id`) - REFERENCES `customer_title` (`id`) - ON UPDATE RESTRICT - ON DELETE RESTRICT, - CONSTRAINT `fk_address_icirelais_country_id` - FOREIGN KEY (`country_id`) - REFERENCES `country` (`id`) - ON UPDATE RESTRICT - ON DELETE RESTRICT -) ENGINE=InnoDB; - --- --------------------------------------------------------------------- --- icirelais_freeshipping --- --------------------------------------------------------------------- - -DROP TABLE IF EXISTS `icirelais_freeshipping`; - -CREATE TABLE `icirelais_freeshipping` -( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `active` TINYINT(1) NOT NULL, - `created_at` DATETIME, - `updated_at` DATETIME, - PRIMARY KEY (`id`) -) ENGINE=InnoDB; - -INSERT INTO `icirelais_freeshipping`(`active`, `created_at`, `updated_at`) VALUES(0, NOW(), NOW()); - --- --------------------------------------------------------------------- --- Mail templates for icirelais --- --------------------------------------------------------------------- --- First, delete existing entries -SET @var := 0; -SELECT @var := `id` FROM `message` WHERE name="order_confirmation_icirelais"; -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_icirelais', - '0' - ); --- and template fr_FR -INSERT INTO `message_i18n` (`id`, `locale`, `title`, `subject`, `text_message`, `html_message`) VALUES -(@max, -'fr_FR', - 'order confirmation icirelais', - 'Livraison de la commande : {$order_ref}', - '{loop name="order.invoice" type="order" id=$order_id customer="*"}\r\n {loop name="currency.order" type="currency" id=$CURRENCY}\r\n {assign "orderCurrency" $CODE}\r\n {/loop}\r\n{loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\n{loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop}{$FIRSTNAME} {$LASTNAME}\\r\\n\r\n{$ADDRESS1} {$ADDRESS2} {$ADDRESS3}\\r\\n\r\n{$ZIPCODE} {$CITY}\\r\\n\r\n{loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}\\r\\n\r\n{/loop}\r\nConfirmation de commande {$REF} du {format_date date=$INVOICE_DATE}\\r\\n\\r\\n\r\nLes articles commandés:\\r\\n\r\n{loop type="order_product" name="order-products" order=$ID}\r\n{if $WAS_IN_PROMO == 1}\r\n {assign "realPrice" $PROMO_PRICE}\r\n {assign "realTax" $PROMO_PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PROMO_PRICE}\r\n{else}\r\n {assign "realPrice" $PRICE}\r\n {assign "realTax" $PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PRICE}\r\n{/if}\r\n \\r\\n\r\n Article : {$TITLE}\r\n{ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE}\\r\\n\r\n{/loop}\r\n{/ifloop}\\r\\n\r\n Quantité : {$QUANTITY}\\r\\n\r\n Prix unitaire TTC : {$realTaxedPrice} {$orderCurrency}\\r\\n\r\n{/loop}\r\n\\r\\n-----------------------------------------\\r\\n\r\nMontant total TTC : {$TOTAL_TAXED_AMOUNT - $POSTAGE} {$orderCurrency} \\r\\n\r\nFrais de port TTC : {$POSTAGE} {$orderCurrency} \\r\\n\r\nSomme totale: {$TOTAL_TAXED_AMOUNT} {$orderCurrency} \\r\\n\r\n==================================\\r\\n\\r\\n\r\nVotre facture est disponible dans la rubrique mon compte sur {config key="url_site"}\r\n{loop name="tracking" type="icirelais.urltracking" ref=$REF}\r\nVous pouvez suivre votre colis à l''adresse suivante: {$URL}\r\n{/loop}\r\n{/loop}', - '{loop name="order.invoice" type="order" id=$order_id customer="*"}\r\n {loop name="currency.order" type="currency" id=$CURRENCY}\r\n {assign "orderCurrency" $SYMBOL}\r\n {/loop}\r\n{loop type="customer" name="customer.invoice" id=$CUSTOMER current="0"}\r\n {assign var="customer_ref" value=$REF}\r\n{/loop}\r\n\r\n\r\n\r\n \r\n courriel de confirmation de commande de {config key="url_site"} \r\n {literal}\r\n \r\n {/literal}\r\n\r\n\r\n
\r\n

{config key="store_name"}

\r\n

Confirmation de commande

\r\n

N° {$REF} du {format_date date=$INVOICE_DATE output="date"}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loop type="order_product" name="order-products" order=$ID}\r\n {if $WAS_IN_PROMO == 1}\r\n {assign "realPrice" $PROMO_PRICE}\r\n {assign "realTax" $PROMO_PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PROMO_PRICE}\r\n {else}\r\n {assign "realPrice" $PRICE}\r\n {assign "realTax" $PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PRICE}\r\n {/if}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/loop}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
RéférenceDésignationP.U. €Qté
{$REF}{$TITLE}\r\n {ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE}
\r\n {/loop}\r\n {/ifloop}\r\n
{$orderCurrency} {$realTaxedPrice}{$QUANTITY}
 
Montant total avant remise €{$orderCurrency} {$TOTAL_TAXED_AMOUNT - $POSTAGE}
Port €{$orderCurrency} {$POSTAGE}
Montant total de la commande €{$orderCurrency} {$TOTAL_TAXED_AMOUNT}
\r\n
\r\n

LIVRAISON : {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}{$TITLE}{/loop}

\r\n {loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\n

N° de client : {$customer_ref}

\r\n

Nom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}

\r\n

N° et rue :\r\n {$ADDRESS1}

\r\n

Complément : {$ADDRESS2}\r\n {$ADDRESS3}

\r\n

Code postal : {$ZIPCODE}

\r\n

Ville : {$CITY}

\r\n

Pays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}

\r\n
\r\n {/loop}\r\n
\r\n

FACTURATION : paiement par {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}

\r\n {loop type="order_address" name="delivery_address" id=$INVOICE_ADDRESS}\r\n

N° de client : {$customer_ref}

\r\n

Nom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}

\r\n

N° et rue :\r\n {$ADDRESS1}

\r\n

Complément : {$ADDRESS2}\r\n {$ADDRESS3}

\r\n

Code postal : {$ZIPCODE}

\r\n

Ville : {$CITY}

\r\n

Pays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}

\r\n
\r\n {/loop}\r\n

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

\r\n {loop name="tracking" type="icirelais.urltracking" ref=$REF}\r\n

Vous pouvez suivre votre colis ici

\r\n {/loop}\r\n
\r\n\r\n\r\n{/loop}' - ); --- and en_US -INSERT INTO `message_i18n` (`id`, `locale`, `title`, `subject`, `text_message`, `html_message`) VALUES - (@max, - 'en_US', - 'order confirmation icirelais', - 'Livraison de la commande : {$order_ref}', - '{loop name="order.invoice" type="order" id=$order_id customer="*"}\r\n {loop name="currency.order" type="currency" id=$CURRENCY}\r\n {assign "orderCurrency" $CODE}\r\n {/loop}\r\n{loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\n{loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop}{$FIRSTNAME} {$LASTNAME}\\r\\n\r\n{$ADDRESS1} {$ADDRESS2} {$ADDRESS3}\\r\\n\r\n{$ZIPCODE} {$CITY}\\r\\n\r\n{loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}\\r\\n\r\n{/loop}\r\nConfirmation de commande {$REF} du {format_date date=$INVOICE_DATE}\\r\\n\\r\\n\r\nLes articles commandés:\\r\\n\r\n{loop type="order_product" name="order-products" order=$ID}\r\n{if $WAS_IN_PROMO == 1}\r\n {assign "realPrice" $PROMO_PRICE}\r\n {assign "realTax" $PROMO_PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PROMO_PRICE}\r\n{else}\r\n {assign "realPrice" $PRICE}\r\n {assign "realTax" $PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PRICE}\r\n{/if}\r\n \\r\\n\r\n Article : {$TITLE}\r\n{ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE}\\r\\n\r\n{/loop}\r\n{/ifloop}\\r\\n\r\n Quantité : {$QUANTITY}\\r\\n\r\n Prix unitaire TTC : {$realTaxedPrice} {$orderCurrency}\\r\\n\r\n{/loop}\r\n\\r\\n-----------------------------------------\\r\\n\r\nMontant total TTC : {$TOTAL_TAXED_AMOUNT - $POSTAGE} {$orderCurrency} \\r\\n\r\nFrais de port TTC : {$POSTAGE} {$orderCurrency} \\r\\n\r\nSomme totale: {$TOTAL_TAXED_AMOUNT} {$orderCurrency} \\r\\n\r\n==================================\\r\\n\\r\\n\r\nVotre facture est disponible dans la rubrique mon compte sur {config key="url_site"}\r\n{loop name="tracking" type="icirelais.urltracking" ref=$REF}\r\nVous pouvez suivre votre colis à l''adresse suivante: {$URL}\r\n{/loop}\r\n{/loop}', - '{loop name="order.invoice" type="order" id=$order_id customer="*"}\r\n {loop name="currency.order" type="currency" id=$CURRENCY}\r\n {assign "orderCurrency" $SYMBOL}\r\n {/loop}\r\n{loop type="customer" name="customer.invoice" id=$CUSTOMER current="0"}\r\n {assign var="customer_ref" value=$REF}\r\n{/loop}\r\n\r\n\r\n\r\n \r\n courriel de confirmation de commande de {config key="url_site"} \r\n {literal}\r\n \r\n {/literal}\r\n\r\n\r\n
\r\n

{config key="store_name"}

\r\n

Confirmation de commande

\r\n

N° {$REF} du {format_date date=$INVOICE_DATE output="date"}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loop type="order_product" name="order-products" order=$ID}\r\n {if $WAS_IN_PROMO == 1}\r\n {assign "realPrice" $PROMO_PRICE}\r\n {assign "realTax" $PROMO_PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PROMO_PRICE}\r\n {else}\r\n {assign "realPrice" $PRICE}\r\n {assign "realTax" $PRICE_TAX}\r\n {assign "realTaxedPrice" $TAXED_PRICE}\r\n {/if}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/loop}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
RéférenceDésignationP.U. €Qté
{$REF}{$TITLE}\r\n {ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE}
\r\n {/loop}\r\n {/ifloop}\r\n
{$orderCurrency} {$realTaxedPrice}{$QUANTITY}
 
Montant total avant remise €{$orderCurrency} {$TOTAL_TAXED_AMOUNT - $POSTAGE}
Port €{$orderCurrency} {$POSTAGE}
Montant total de la commande €{$orderCurrency} {$TOTAL_TAXED_AMOUNT}
\r\n
\r\n

LIVRAISON : {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}{$TITLE}{/loop}

\r\n {loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\n

N° de client : {$customer_ref}

\r\n

Nom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}

\r\n

N° et rue :\r\n {$ADDRESS1}

\r\n

Complément : {$ADDRESS2}\r\n {$ADDRESS3}

\r\n

Code postal : {$ZIPCODE}

\r\n

Ville : {$CITY}

\r\n

Pays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}

\r\n
\r\n {/loop}\r\n
\r\n

FACTURATION : paiement par {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}

\r\n {loop type="order_address" name="delivery_address" id=$INVOICE_ADDRESS}\r\n

N° de client : {$customer_ref}

\r\n

Nom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}

\r\n

N° et rue :\r\n {$ADDRESS1}

\r\n

Complément : {$ADDRESS2}\r\n {$ADDRESS3}

\r\n

Code postal : {$ZIPCODE}

\r\n

Ville : {$CITY}

\r\n

Pays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}

\r\n
\r\n {/loop}\r\n

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

\r\n {loop name="tracking" type="icirelais.urltracking" ref=$REF}\r\n

Vous pouvez suivre votre colis ici

\r\n {/loop}\r\n
\r\n\r\n\r\n{/loop}' - ); - - -# This restores the fkey checks, after having unset them earlier -SET FOREIGN_KEY_CHECKS = 1; diff --git a/local/modules/IciRelais/Controller/EditPrices.php b/local/modules/IciRelais/Controller/EditPrices.php deleted file mode 100644 index 58255354..00000000 --- a/local/modules/IciRelais/Controller/EditPrices.php +++ /dev/null @@ -1,96 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Controller; -use IciRelais\IciRelais; -use Thelia\Model\AreaQuery; -use Thelia\Controller\Admin\BaseAdminController; -use Thelia\Core\Security\Resource\AdminResources; -use Thelia\Core\Security\AccessManager; - -/** - * Class EditPrices - * @package IciRelais\Controller - * @author Thelia - */ -class EditPrices extends BaseAdminController -{ - - public function editprices() - { - if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('IciRelais'), AccessManager::UPDATE)) { - return $response; - } - // Get data & treat - $post = $this->getRequest(); - $operation = $post->get('operation'); - $area = $post->get('area'); - $weight = $post->get('weight'); - $price = $post->get('price'); - if( preg_match("#^add|delete$#", $operation) && - preg_match("#^\d+$#", $area) && - preg_match("#^\d+\.?\d*$#", $weight) - ) { - // check if area exists in db - $exists = AreaQuery::create() - ->findPK($area); - if ($exists !== null) { - $json_path= __DIR__."/../".IciRelais::JSON_PRICE_RESOURCE; - - if (is_readable($json_path)) { - $json_data = json_decode(file_get_contents($json_path),true); - } elseif (!file_exists($json_path)) { - $json_data = array(); - } else { - throw new \Exception("Can't read IciRelais".IciRelais::JSON_PRICE_RESOURCE.". Please change the rights on the file."); - } - if((float) $weight > 0 && $operation == "add" - && preg_match("#\d+\.?\d*#", $price)) { - $json_data[$area]['slices'][$weight] = $price; - } elseif ($operation == "delete") { - if(isset($json_data[$area]['slices'][$weight])) - unset($json_data[$area]['slices'][$weight]); - } else { - throw new \Exception("Weight must be superior to 0"); - } - ksort($json_data[$area]['slices']); - if ((file_exists($json_path) ?is_writable($json_path):is_writable(__DIR__."/../"))) { - $file = fopen($json_path, 'w'); - fwrite($file, json_encode($json_data));; - fclose($file); - } else { - throw new \Exception("Can't write IciRelais".IciRelais::JSON_PRICE_RESOURCE.". Please change the rights on the file."); - } - } else { - throw new \Exception("Area not found"); - } - } else { - throw new \ErrorException("Arguments are missing or invalid"); - } - - return $this->redirectToRoute("admin.module.configure",array(), - array ( 'module_code'=>"IciRelais", - 'current_tab'=>"price_slices_tab", - '_controller' => 'Thelia\\Controller\\Admin\\ModuleController::configureAction')); - } -} diff --git a/local/modules/IciRelais/Controller/Export.php b/local/modules/IciRelais/Controller/Export.php deleted file mode 100644 index ed9eaa8b..00000000 --- a/local/modules/IciRelais/Controller/Export.php +++ /dev/null @@ -1,325 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Controller; - -use IciRelais\Form\ExportExaprintSelection; -use IciRelais\IciRelais; -use IciRelais\Loop\IciRelaisOrders; -use Thelia\Controller\Admin\BaseAdminController; -use Thelia\Core\Event\Order\OrderEvent; -use Thelia\Core\Event\TheliaEvents; -use Thelia\Core\Translation\Translator; - -use IciRelais\Model\OrderAddressIcirelaisQuery; -use Thelia\Core\HttpFoundation\Response; -use Thelia\Log\Tlog; -use Thelia\Model\AddressQuery; -use Thelia\Model\OrderAddressQuery; -use Thelia\Model\OrderQuery; -use Thelia\Model\OrderProductQuery; -use Thelia\Model\CustomerQuery; - -use Thelia\Core\Security\Resource\AdminResources; -use Thelia\Core\Security\AccessManager; -use Thelia\Model\OrderStatus; -use Thelia\Model\OrderStatusQuery; - -/** - * Class Export - * @package IciRelais\Controller - * @author Thelia - * @original_author etienne roudeix - */ -class Export extends BaseAdminController -{ - // FONCTION POUR LE FICHIER D'EXPORT BY Maitre eroudeix@openstudio.fr - // extended by bperche9@gmail.com - public static function harmonise($value, $type, $len) - { - switch ($type) { - case 'numeric': - $value = (string)$value; - if (mb_strlen($value, 'utf8') > $len) { - $value = substr($value, 0, $len); - } - for ($i = mb_strlen($value, 'utf8'); $i < $len; $i++) { - $value = '0' . $value; - } - break; - case 'alphanumeric': - $value = (string)$value; - if (mb_strlen($value, 'utf8') > $len) { - $value = substr($value, 0, $len); - } - for ($i = mb_strlen($value, 'utf8'); $i < $len; $i++) { - $value .= ' '; - } - break; - case 'float': - if (!preg_match("#\d{1,6}\.\d{1,}#", $value)) { - $value = str_repeat("0", $len - 3) . ".00"; - } else { - $value = explode(".", $value); - $int = self::harmonise($value[0], 'numeric', $len - 3); - $dec = substr($value[1], 0, 2) . "." . substr($value[1], 2, strlen($value[1])); - $dec = (string)ceil(floatval($dec)); - $dec = str_repeat("0", 2 - strlen($dec)) . $dec; - $value = $int . "." . $dec; - } - break; - } - - return $value; - } - - public function exportfile() - { - if (null !== $response = $this->checkAuth( - array(AdminResources::MODULE), - array('IciRelais'), - AccessManager::UPDATE - )) { - return $response; - } - if (is_readable(ExportExaprint::getJSONpath())) { - $admici = json_decode(file_get_contents(ExportExaprint::getJSONpath()), true); - $keys = array("name", "addr", "zipcode", "city", "tel", "mobile", "mail", "expcode"); - $valid = true; - foreach ($keys as $key) { - $valid &= isset($admici[$key]) && ($key === "assur" ? true : !empty($admici[$key])); - } - if (!$valid) { - return Response::create( - Translator::getInstance()->trans( - "The file IciRelais/Config/exportdat.json is not valid. Please correct it.", - [], - IciRelais::DOMAIN - ), - 500 - ); - } - } else { - return Response::create( - Translator::getInstance()->trans( - "Can't read IciRelais/Config/exportdat.json. Did you save the export information ?", - [], - IciRelais::DOMAIN - ), - 500 - ); - } - $exp_name = $admici['name']; - $exp_address1 = $admici['addr']; - $exp_address2 = isset($admici['addr2']) ? $admici['addr2'] : ""; - $exp_zipcode = $admici['zipcode']; - $exp_city = $admici['city']; - $exp_phone = $admici['tel']; - $exp_cellphone = $admici['mobile']; - $exp_email = $admici['mail']; - $exp_code = $admici['expcode']; - $res = self::harmonise('$' . "VERSION=110", 'alphanumeric', 12) . "\r\n"; - - $orders = OrderQuery::create() - ->filterByDeliveryModuleId(IciRelais::getModuleId()) - ->find(); - - // FORM VALIDATION - $form = new ExportExaprintSelection($this->getRequest()); - $status_id = null; - try { - $vform = $this->validateForm($form); - $status_id = $vform->get("new_status_id")->getData(); - if (!preg_match("#^nochange|processing|sent$#", $status_id)) { - throw new \Exception("Invalid status ID. Expecting nochange or processing or sent"); - } - } catch (\Exception $e) { - Tlog::getInstance()->error("Form icirelais.selection sent with bad infos. "); - - return Response::create( - Translator::getInstance()->trans( - "Got invalid data : %err", - ['%err' => $e->getMessage()], - IciRelais::DOMAIN - ), - 500 - ); - } - - //--- - foreach ($orders as $order) { - $orderRef = str_replace(".", "-", $order->getRef()); - - if ($vform->get($orderRef)->getData()) { - $assur_package = $vform->get($orderRef . "-assur")->getData(); - if ($status_id == "processing") { - $event = new OrderEvent($order); - - $status = OrderStatusQuery::create() - ->findOneByCode(OrderStatus::CODE_PROCESSING); - $event->setStatus($status->getId()); - $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); - - } elseif ($status_id == "sent") { - $event = new OrderEvent($order); - $status = OrderStatusQuery::create() - ->findOneByCode(OrderStatus::CODE_SENT); - $event->setStatus($status->getId()); - $this->getDispatcher()->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event); - } - //Get OrderAddress object - customer's address - $address = OrderAddressQuery::create() - ->findPK($order->getInvoiceOrderAddressId()); - - //Get Customer object - $customer = CustomerQuery::create() - ->findPK($order->getCustomerId()); - - //Get OrderAddressIciRelais object - $icirelais_code = OrderAddressIcirelaisQuery::create() - ->findPK($order->getDeliveryOrderAddressId()); - if ($icirelais_code !== null) { - //Get OrderProduct object - $products = OrderProductQuery::create() - ->filterByOrderId($order->getId()) - ->find(); - - // Get Customer's cellphone - $cellphone = AddressQuery::create() - ->filterByCustomerId($order->getCustomerId()) - ->filterByIsDefault("1") - ->findOne() - ->getCellphone(); - - //Weigth & price calc - $weight = 0.0; - $price = 0; - $price = $order->getTotalAmount($price, false); // tax = 0 && include postage = flase - foreach ($products as $p) { - $weight += ((float)$p->getWeight()) * (int)$p->getQuantity(); - } - $weight = floor($weight * 100); - $assur_price = ($assur_package == 'true') ? $price : 0; - $date_format = date("d/m/Y", $order->getUpdatedAt()->getTimestamp()); - - $res .= self::harmonise($order->getRef(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 2); - $res .= self::harmonise($weight, 'numeric', 8); - $res .= self::harmonise("", 'alphanumeric', 15); - $res .= self::harmonise($customer->getLastname(), 'alphanumeric', 35); - $res .= self::harmonise($customer->getFirstname(), 'alphanumeric', 35); - $res .= self::harmonise($address->getAddress2(), 'alphanumeric', 35); - $res .= self::harmonise($address->getAddress3(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 35); - $res .= self::harmonise($address->getZipcode(), 'alphanumeric', 10); - $res .= self::harmonise($address->getCity(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 10); - $res .= self::harmonise($address->getAddress1(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 10); - $res .= self::harmonise( - "F", - 'alphanumeric', - 3 - ); // CODE PAYS DESTINATAIRE PAR DEFAUT F - $res .= self::harmonise($address->getPhone(), 'alphanumeric', 30); - $res .= self::harmonise("", 'alphanumeric', 15); - $res .= self::harmonise($exp_name, 'alphanumeric', 35); // DEBUT EXPEDITEUR - $res .= self::harmonise($exp_address2, 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 140); - $res .= self::harmonise($exp_zipcode, 'alphanumeric', 10); - $res .= self::harmonise($exp_city, 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 10); - $res .= self::harmonise($exp_address1, 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 10); - $res .= self::harmonise( - "F", - 'alphanumeric', - 3 - ); // CODE PAYS EXPEDITEUR PAR DEFAUT F - $res .= self::harmonise($exp_phone, 'alphanumeric', 30); - $res .= self::harmonise( - "", - 'alphanumeric', - 35 - ); // COMMENTAIRE 1 DE LA COMMANDE - $res .= self::harmonise( - "", - 'alphanumeric', - 35 - ); // COMMENTAIRE 2 DE LA COMMANDE - $res .= self::harmonise( - "", - 'alphanumeric', - 35 - ); // COMMENTAIRE 3 DE LA COMMANDE - $res .= self::harmonise( - "", - 'alphanumeric', - 35 - ); // COMMENTAIRE 3 DE LA COMMANDE - $res .= self::harmonise($date_format, 'alphanumeric', 10); - $res .= self::harmonise( - $exp_code, - 'numeric', - 8 - ); // N° COMPTE CHARGEUR ICIRELAIS ? - $res .= self::harmonise("", 'alphanumeric', 35); // CODE BARRE - $res .= self::harmonise($customer->getRef(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 29); - $res .= self::harmonise( - $assur_price, - 'float', - 9 - ); // MONTANT DE LA VALEUR MARCHANDE A ASSURER EX: 20 euros -> 000020.00 - $res .= self::harmonise("", 'alphanumeric', 8); - $res .= self::harmonise($customer->getId(), 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 46); - $res .= self::harmonise($exp_email, 'alphanumeric', 80); - $res .= self::harmonise($exp_cellphone, 'alphanumeric', 35); - $res .= self::harmonise($customer->getEmail(), 'alphanumeric', 80); - $res .= self::harmonise($cellphone, 'alphanumeric', 35); - $res .= self::harmonise("", 'alphanumeric', 96); - $res .= self::harmonise( - $icirelais_code->getCode(), - 'alphanumeric', - 8 - ); // IDENTIFIANT ESPACE ICIRELAIS - - $res .= "\r\n"; - } - } - } - - $response = new Response( - $res, - 200, - array( - 'Content-Type' => 'application/csv-tab-delimited-table', - 'Content-disposition' => 'filename=export.dat' - ) - ); - - return $response; - } -} diff --git a/local/modules/IciRelais/Controller/ExportExaprint.php b/local/modules/IciRelais/Controller/ExportExaprint.php deleted file mode 100644 index 1cabd729..00000000 --- a/local/modules/IciRelais/Controller/ExportExaprint.php +++ /dev/null @@ -1,121 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Controller; - -use IciRelais\Form\ExportExaprintForm; -use IciRelais\IciRelais; -use Thelia\Controller\Admin\BaseAdminController; -use Thelia\Core\Translation\Translator; - -use Thelia\Core\Security\Resource\AdminResources; -use Thelia\Core\Security\AccessManager; - -/** - * Class ExportExaprint - * @package IciRelais\Controller - * @author Thelia - */ -class ExportExaprint extends BaseAdminController -{ - public static function getJSONpath() - { - return __DIR__ . "/../Config/exportdat.json"; - } - - public function export() - { - if (null !== $response = $this->checkAuth( - array(AdminResources::MODULE), - array('IciRelais'), - AccessManager::UPDATE - )) { - return $response; - } - - $form = new ExportExaprintForm($this->getRequest()); - $error_message = null; - try { - $vform = $this->validateForm($form); - - $file_path = self::getJSONpath(); - - if ((file_exists($file_path) ? is_writable($file_path) : is_writable(__DIR__ . "/../Config/"))) { - $file = fopen(self::getJSONpath(), 'w'); - fwrite( - $file, - json_encode( - array( - "name" => $vform->get('name')->getData(), - "addr" => $vform->get('addr')->getData(), - "addr2" => $vform->get('addr2')->getData(), - "zipcode" => $vform->get('zipcode')->getData(), - "city" => $vform->get('city')->getData(), - "tel" => $vform->get('tel')->getData(), - "mobile" => $vform->get('mobile')->getData(), - "mail" => $vform->get('mail')->getData(), - "expcode" => ($vform->get('expcode')->getData()) - ) - ) - ); - - fclose($file); - - return $this->generateRedirectFromRoute( - "admin.module.configure", - [], - [ - 'module_code' => "IciRelais", - 'current_tab' => "configure_export_exaprint", - '_controller' => 'Thelia\\Controller\\Admin\\ModuleController::configureAction' - ] - ); - } else { - throw new \Exception( - Translator::getInstance()->trans( - "Can't write IciRelais/Config/exportdat.json. Please change the rights on the file and/or the directory.", - [], - IciRelais::DOMAIN - ) - ); - } - - } catch (\Exception $e) { - $error_message = $e->getMessage(); - } - - $this->setupFormErrorContext( - 'erreur export fichier exaprint', - $error_message, - $form - ); - - return $this->render( - 'module-configure', - [ - 'module_code' => IciRelais::getModuleCode(), - 'current_tab' => "configure_export_exaprint" - ] - ); - } -} diff --git a/local/modules/IciRelais/Controller/FreeShipping.php b/local/modules/IciRelais/Controller/FreeShipping.php deleted file mode 100644 index 8866c765..00000000 --- a/local/modules/IciRelais/Controller/FreeShipping.php +++ /dev/null @@ -1,58 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Controller; - -use IciRelais\Model\IciRelaisFreeshipping; -use Symfony\Component\HttpFoundation\JsonResponse; -use Thelia\Controller\Admin\BaseAdminController; -use Thelia\Core\HttpFoundation\Response; - -use Thelia\Core\Security\Resource\AdminResources; -use Thelia\Core\Security\AccessManager; - -class FreeShipping extends BaseAdminController -{ - public function set() - { - if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('IciRelais'), AccessManager::UPDATE)) { - return $response; - } - - $form = new \IciRelais\Form\FreeShipping($this->getRequest()); - $response=null; - - try { - $vform = $this->validateForm($form); - $data = $vform->get('freeshipping')->getData(); - - $save = new IcirelaisFreeshipping(); - $save->setActive(!empty($data))->save(); - $response = Response::create(''); - } catch (\Exception $e) { - $response = JsonResponse::create(array("error"=>$e->getMessage()), 500); - } - - return $response; - } -} diff --git a/local/modules/IciRelais/Controller/SearchCityController.php b/local/modules/IciRelais/Controller/SearchCityController.php deleted file mode 100644 index 1ca183a1..00000000 --- a/local/modules/IciRelais/Controller/SearchCityController.php +++ /dev/null @@ -1,39 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Controller; - -use Thelia\Controller\Front\BaseFrontController; - -/** - * Class SearchCityController - * @package IciRelais\Controller - * @author Thelia - */ -class SearchCityController extends BaseFrontController -{ - public function searchAction($zipcode, $city) - { - return $this->render("getSpecificLocation", array("_zipcode_"=>$zipcode, "_city_"=>$city)); - } -} diff --git a/local/modules/IciRelais/Form/ExportExaprintForm.php b/local/modules/IciRelais/Form/ExportExaprintForm.php deleted file mode 100644 index a45fa9d5..00000000 --- a/local/modules/IciRelais/Form/ExportExaprintForm.php +++ /dev/null @@ -1,162 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Form; - -use IciRelais\IciRelais; -use Symfony\Component\Validator\Constraints\Regex; -use Thelia\Form\BaseForm; -use Thelia\Core\Translation\Translator; -use Symfony\Component\Validator\Constraints\NotBlank; -use IciRelais\Controller\ExportExaprint; - -/** - * Class ExportExaprintForm - * @package IciRelais\Form - * @author Thelia - */ -class ExportExaprintForm extends BaseForm -{ - public function getName() - { - return "exportexaprintform"; - } - - protected function buildForm() - { - // Add value(s) if Config/exportdat.json exists - - if (is_readable(ExportExaprint::getJSONpath())) { - $values = json_decode(file_get_contents(ExportExaprint::getJSONpath()), true); - } - - $this->formBuilder - ->add( - 'name', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s name', [], IciRelais::DOMAIN), - 'data' => (isset($values['name']) ? $values['name'] : ""), - 'constraints' => array(new NotBlank()), - 'label_attr' => array( - 'for' => 'name' - ) - ) - ) - ->add( - 'addr', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s address1', [], IciRelais::DOMAIN), - 'data' => (isset($values['addr']) ? $values['addr'] : ""), - 'constraints' => array(new NotBlank()), - 'label_attr' => array( - 'for' => 'addr' - ) - ) - ) - ->add( - 'addr2', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s address2', [], IciRelais::DOMAIN), - 'data' => (isset($values['addr2']) ? $values['addr2'] : ""), - 'label_attr' => array( - 'for' => 'addr2' - ) - ) - ) - ->add( - 'zipcode', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s zipcode', [], IciRelais::DOMAIN), - 'data' => (isset($values['zipcode']) ? $values['zipcode'] : ""), - 'constraints' => array(new NotBlank(), new Regex(['pattern' => "/^(2[A-B])|([0-9]{2})\d{3}$/"])), - 'label_attr' => array( - 'for' => 'zipcode' - ) - ) - ) - ->add( - 'city', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s city', [], IciRelais::DOMAIN), - 'data' => (isset($values['city']) ? $values['city'] : ""), - 'constraints' => array(new NotBlank()), - 'label_attr' => array( - 'for' => 'city' - ) - ) - ) - ->add( - 'tel', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s phone', [], IciRelais::DOMAIN), - 'data' => (isset($values['tel']) ? $values['tel'] : ""), - 'constraints' => array(new NotBlank(), new Regex(['pattern' => "/^0[1-9]\d{8}$/"])), - 'label_attr' => array( - 'for' => 'tel' - ) - ) - ) - ->add( - 'mobile', - 'text', - array( - 'label' => Translator::getInstance()->trans('Sender\'s mobile phone', [], IciRelais::DOMAIN), - 'data' => (isset($values['mobile']) ? $values['mobile'] : ""), - 'constraints' => array(new NotBlank(), new Regex(['pattern' => "#^0[6-7]{1}\d{8}$#"])), - 'label_attr' => array( - 'for' => 'mobile' - ) - ) - ) - ->add( - 'mail', - 'email', - array( - 'label' => Translator::getInstance()->trans('Sender\'s email', [], IciRelais::DOMAIN), - 'data' => (isset($values['mail']) ? $values['mail'] : ""), - 'constraints' => array(new NotBlank()), - 'label_attr' => array( - 'for' => 'mail' - ) - ) - ) - ->add( - 'expcode', - 'text', - array( - 'label' => Translator::getInstance()->trans('IciRelais Sender\'s code', [], IciRelais::DOMAIN), - 'constraints' => array(new NotBlank(), new Regex(['pattern' => "#^\d{8}$#"])), - 'data' => (isset($values['expcode']) ? $values['expcode'] : ""), - 'label_attr' => array( - 'for' => 'expcode' - ) - ) - ); - } -} diff --git a/local/modules/IciRelais/Form/ExportExaprintSelection.php b/local/modules/IciRelais/Form/ExportExaprintSelection.php deleted file mode 100644 index 716e583f..00000000 --- a/local/modules/IciRelais/Form/ExportExaprintSelection.php +++ /dev/null @@ -1,87 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Form; - -use IciRelais\IciRelais; -use Thelia\Form\BaseForm; -use Thelia\Core\Translation\Translator; -use Thelia\Model\OrderQuery; - -/** - * Class ExportExaprintSelection - * @package IciRelais\Form - * @author Thelia - */ -class ExportExaprintSelection extends BaseForm -{ - public function getName() - { - return "exportexaprintselection"; - } - - protected function buildForm() - { - $entries = OrderQuery::create() - ->filterByDeliveryModuleId(IciRelais::getModuleId()) - ->find(); - - $this->formBuilder - ->add( - 'new_status_id', - 'choice', - array( - 'label' => Translator::getInstance()->trans('Change order status to', [], IciRelais::DOMAIN), - 'choices' => array( - "nochange" => Translator::getInstance()->trans("Do not change", [], IciRelais::DOMAIN), - "processing" => Translator::getInstance()->trans("Set orders status as processing", [], IciRelais::DOMAIN), - "sent" => Translator::getInstance()->trans("Set orders status as sent", [], IciRelais::DOMAIN) - ), - 'required' => true, - 'expanded' => true, - 'multiple' => false, - 'data' => 'nochange' - ) - ); - - foreach ($entries as $order) { - $orderRef = str_replace(".", "-", $order->getRef()); - - $this->formBuilder - ->add( - $orderRef, - 'checkbox', - array( - 'label' => $orderRef, - 'label_attr' => array( - 'for' => $orderRef - ) - ) - ) - ->add( - $orderRef . "-assur", - 'checkbox' - ); - } - } -} diff --git a/local/modules/IciRelais/Form/FreeShipping.php b/local/modules/IciRelais/Form/FreeShipping.php deleted file mode 100644 index 359b16d6..00000000 --- a/local/modules/IciRelais/Form/FreeShipping.php +++ /dev/null @@ -1,56 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Form; - -use IciRelais\IciRelais; -use IciRelais\Model\IcirelaisFreeshippingQuery; -use Thelia\Core\Translation\Translator; -use Thelia\Form\BaseForm; - -class FreeShipping extends BaseForm -{ - protected function buildForm() - { - $freeshipping = IcirelaisFreeshippingQuery::create()->getLast(); - - $this->formBuilder - ->add( - "freeshipping", - "checkbox", - array( - 'data' => $freeshipping, - 'label' => Translator::getInstance()->trans("Activate free shipping: ", [], IciRelais::DOMAIN) - ) - ); - } - - /** - * @return string the name of you form. This name must be unique - */ - public function getName() - { - return "icirelaisfreeshipping"; - } - -} diff --git a/local/modules/IciRelais/I18n/AdminIncludes/en_US.php b/local/modules/IciRelais/I18n/AdminIncludes/en_US.php deleted file mode 100644 index 88149f00..00000000 --- a/local/modules/IciRelais/I18n/AdminIncludes/en_US.php +++ /dev/null @@ -1,49 +0,0 @@ - 'Actions', - 'Area : ' => 'Shipping zone : ', - 'Cancel' => 'Cancel', - 'Change orders status after export' => 'Change orders status after export', - 'Check all' => 'Check all', - 'Configure EXAPRINT file' => 'Configure EXAPRINT file', - 'Create' => 'Create', - 'Create a new price slice' => 'Create a new price slice', - 'Create a price slice' => 'Create a price slice', - 'Date' => 'Date', - 'Delete' => 'Delete', - 'Delete a price slice' => 'Delete a price slice', - 'Delete this price slice' => 'Delete this price slice', - 'Do not change' => 'Do not change', - 'Do you really want to delete this slice ?' => 'Do you really want to delete this slice ?', - 'Edit' => 'Edit', - 'Edit a price slice' => 'Edit a price slice', - 'Edit this price slice' => 'Edit this price slice', - 'Export' => 'Export', - 'Export EXAPRINT file' => 'Export EXAPRINT file', - 'Export EXAPRINT file of this order' => 'Export EXAPRINT file for this order', - 'Ici Relais Module allows you to send your products in France.' => 'Ici Relais Module allows you to send your products in France.', - 'If you choose this option, the exported orders would not be available on this page anymore' => 'If you choose this option, the exported orders would not be available on this page anymore', - 'Package warranty' => 'Package warranty', - 'Please change the access rights' => 'Please change the access rights', - 'Price (%sym)' => 'Price (%sym)', - 'Price slices' => 'Price slices', - 'Processing' => 'Processing', - 'REF' => 'REF', - 'Reverse selection' => 'Reverse selection', - 'Save changes' => 'Save changes', - 'Sent' => 'Sent', - 'There are currently no pending order to ship by IciRelais.' => 'There are currently no pending order to ship by IciRelais.', - 'Total taxed amount' => 'Total taxed amount', - 'Uncheck all' => 'Uncheck all', - 'Weight up to ... (kg)' => 'Weight up to ... (Kg)', - 'addr' => 'Sender address', - 'addr2' => 'Sender address (continued)', - 'city' => 'Sender city', - 'expcode' => 'IciRelais Sender\'s code', - 'mail' => 'Sender e-mail', - 'mobile' => 'Sender mobile phone', - 'name' => 'Sender name', - 'tel' => 'Sender phone', - 'zipcode' => 'Sender zip code', -); diff --git a/local/modules/IciRelais/I18n/AdminIncludes/fr_FR.php b/local/modules/IciRelais/I18n/AdminIncludes/fr_FR.php deleted file mode 100644 index d9561523..00000000 --- a/local/modules/IciRelais/I18n/AdminIncludes/fr_FR.php +++ /dev/null @@ -1,49 +0,0 @@ - 'Actions', - 'Area : ' => 'Zone de livraison : ', - 'Cancel' => 'Annuler', - 'Change orders status after export' => 'Modifier le statut des commandes après l\'export', - 'Check all' => 'Tout cocher', - 'Configure EXAPRINT file' => 'Configuration du fichier EXAPRINT', - 'Create' => 'Créer', - 'Create a new price slice' => 'Créer une nouvelle tranche de prix', - 'Create a price slice' => 'Créer une tranche de prix', - 'Date' => 'Date', - 'Delete' => 'Supprimer', - 'Delete a price slice' => 'Supprimer une tranche de prix', - 'Delete this price slice' => 'Supprimer cette tranche de prix', - 'Do not change' => 'Ne pas changer', - 'Do you really want to delete this slice ?' => 'Voulez-vous réellement supprimer cette tranche de prix ?', - 'Edit' => 'Modifier', - 'Edit a price slice' => 'Modifier une tranche de prix', - 'Edit this price slice' => 'Editer cette tranche de prix', - 'Export' => 'Exporter', - 'Export EXAPRINT file' => 'Exporter le fichier EXAPRINT', - 'Export EXAPRINT file of this order' => 'Exporter le fichier EXAPRINT de cette commande', - 'Ici Relais Module allows you to send your products in France.' => 'Le module IciRelais vous permet d\'envoyer des colis en France.', - 'If you choose this option, the exported orders would not be available on this page anymore' => 'En choisissant cette option, les commandes exportées ne seront plus disponible sur cette page', - 'Package warranty' => 'Garantie du colis', - 'Please change the access rights' => 'Veuillez changer les droits d\'accès', - 'Price (%sym)' => 'Prix (%sym)', - 'Price slices' => 'Tranches de prix', - 'Processing' => 'Traitement', - 'REF' => 'Référence', - 'Reverse selection' => 'Inverser la sélection', - 'Save changes' => 'Enregistrer les changements', - 'Sent' => 'Envoyée', - 'There are currently no pending order to ship by IciRelais.' => 'Vous n\'avez actuellement aucune commande en attente d\'expédition par IciRelais.', - 'Total taxed amount' => 'Montant T.T.C.', - 'Uncheck all' => 'Tout décocher', - 'Weight up to ... (kg)' => 'Poids ... (kg)', - 'addr' => 'Adresse', - 'addr2' => 'Adresse 2', - 'city' => 'Ville', - 'expcode' => 'Code IciRelais de l\'expéditeur', - 'mail' => 'Email', - 'mobile' => 'Téléphone mobile', - 'name' => 'Nom', - 'tel' => 'Téléphone', - 'zipcode' => 'Code postal', -); diff --git a/local/modules/IciRelais/I18n/en_US.php b/local/modules/IciRelais/I18n/en_US.php deleted file mode 100644 index c4c3d483..00000000 --- a/local/modules/IciRelais/I18n/en_US.php +++ /dev/null @@ -1,26 +0,0 @@ - 'Activate free shipping: ', - 'Can\'t read Config directory' => 'Can\'t read Config directory', - 'Can\'t read IciRelais/Config/exportdat.json. Did you save the export information ?' => 'Can\'t read IciRelais/Config/exportdat.json. Did you save the export information ?', - 'Can\'t read file' => 'Can\'t read file', - 'Can\'t write Config directory' => 'Can\'t write Config directory', - 'Can\'t write IciRelais/Config/exportdat.json. Please change the rights on the file and/or the directory.' => 'Can\'t write IciRelais/Config/exportdat.json. Please change the rights on the file and/or the directory.', - 'Can\'t write file' => 'Can\'t write file', - 'Change order status to' => 'Change order status to', - 'Do not change' => 'Do not change', - 'Got invalid data : %err' => 'Got invalid data : %err', - 'IciRelais Sender\'s code' => 'IciRelais Sender\'s code', - 'Sender\'s address1' => 'Sender\'s address1', - 'Sender\'s address2' => 'Sender\'s address2', - 'Sender\'s city' => 'Sender\'s city', - 'Sender\'s email' => 'Sender\'s email', - 'Sender\'s mobile phone' => 'Sender\'s cellular phone', - 'Sender\'s name' => 'Sender\'s name', - 'Sender\'s phone' => 'Sender\'s phone', - 'Sender\'s zipcode' => 'Sender\'s zipcode', - 'Set orders status as processing' => 'Set orders status as processing', - 'Set orders status as sent' => 'Set orders status as sent', - 'The file IciRelais/Config/exportdat.json is not valid. Please correct it.' => 'The file IciRelais/Config/exportdat.json is not valid. Please correct it.', -); diff --git a/local/modules/IciRelais/I18n/fr_FR.php b/local/modules/IciRelais/I18n/fr_FR.php deleted file mode 100644 index 25bbd593..00000000 --- a/local/modules/IciRelais/I18n/fr_FR.php +++ /dev/null @@ -1,26 +0,0 @@ - 'Livraison offerte: ', - 'Can\'t read Config directory' => 'Le dossier Config ne peut être lu', - 'Can\'t read IciRelais/Config/exportdat.json. Did you save the export information ?' => 'Le fichier IciRelais/Config/exportdat.json ne peut être lu. Avez vous enregistré les informations d\'export ?', - 'Can\'t read file' => 'Le fichier suivant ne peut être lu', - 'Can\'t write Config directory' => 'Le dossier Config ne peut être écrit', - 'Can\'t write IciRelais/Config/exportdat.json. Please change the rights on the file and/or the directory.' => 'Le fichier IciRelais/Config/exportdat.json ne peut être écrit. Veuillez changer les droits d\'accès sur le fichier et/ou dossier', - 'Can\'t write file' => 'Le fichier suivant ne peut être écrit', - 'Change order status to' => 'Modifier le statut des commandes après l\'export', - 'Do not change' => 'Ne pas changer', - 'Got invalid data : %err' => 'Données invalides reçues : %err', - 'IciRelais Sender\'s code' => 'Code IciRelais de l\'expéditeur', - 'Sender\'s address1' => 'Adresse de l\'expéditeur', - 'Sender\'s address2' => 'Adresse 2 de l\'expéditeur', - 'Sender\'s city' => 'Ville de l\'expéditeur', - 'Sender\'s email' => 'Email de de l\'expéditeur', - 'Sender\'s mobile phone' => 'Téléphone mobile de l\'expéditeur', - 'Sender\'s name' => 'Nom de l\'expéditeur', - 'Sender\'s phone' => 'Téléphone de l\'expéditeur', - 'Sender\'s zipcode' => 'Code postal de l\'expéditeur', - 'Set orders status as processing' => 'Traitement', - 'Set orders status as sent' => 'Envoyée', - 'The file IciRelais/Config/exportdat.json is not valid. Please correct it.' => 'Le fichier IciRelais/Config/exportdat.json n\'est pas valide. Veuillez le corriger.', -); diff --git a/local/modules/IciRelais/I18n/frontOffice/default/en_US.php b/local/modules/IciRelais/I18n/frontOffice/default/en_US.php deleted file mode 100644 index 09452efa..00000000 --- a/local/modules/IciRelais/I18n/frontOffice/default/en_US.php +++ /dev/null @@ -1,73 +0,0 @@ - 'Veuillez choisir un point IciRelais', - 'Actual address can\'t be geolocated' => 'Cette adresse ne peut être géolocalisée', - 'Please enter a city and a zipcode' => 'Veuillez entrer une ville et son code postal', - 'Please enter a valid zipcode' => 'Veuillez entrer un code postal valide', - 'Search relay in a city' => 'Chercher un point IciRelais dans une autre ville', - 'city' => 'Ville', - 'zipcode' => 'Code postal', - 'Search' => 'Rechercher', - 'Edit' => 'Modifier', - 'Cancel' => 'Annuler', - 'Export EXAPRINT file' => 'Exporter le fichier EXAPRINT', - 'name' => 'Nom', - 'addr' => 'Adresse', - 'addr2' => 'Adresse 2', - 'tel' => 'Téléphone', - 'mobile' => 'Téléphone mobile', - 'mail' => 'Email', - 'assur' => 'Assurer le colis', - 'Save changes' => 'Enregistrer les changements', - 'Export' => 'Exporter', - 'Price slices' => 'Tranches de prix', - 'Ici Relais Module allows you to send your products in France.' => 'Le module IciRelais vous permet d\'envoyer des colis en France.', - 'Create a price slice' => 'Créer une tranche de prix', - 'Weight up to ... (kg)' => 'Poids ... (kg)', - 'Price (€)' => 'Prix (€)', - 'Create' => 'Créer', - 'Area : ' => 'Zone de livraison : ', - 'Create a new price slice' => 'Créer une nouvelle tranche de prix', - 'Actions' => 'Actions', - 'Edit a price slice' => 'Modifier une tranche de prix', - 'Delete a price slice' => 'Supprimer une tranche de prix', - 'Do you really want to delete this slice ?' => 'Voulez-vous réellement supprimer cette tranche de prix ?', - 'Delete' => 'Supprimer', - 'Edit this price slice' => 'Editer cette tranche de prix', - 'Delete this price slice' => 'Supprimer cette tranche de prix', - 'Sender\'s name' => 'Nom de l\'expéditeur', - 'Sender\'s address1' => 'Adresse de l\'expéditeur', - 'Sender\'s address2' => 'Adresse 2 de l\'expéditeur', - 'Sender\'s zipcode' => 'Code postal de l\'expéditeur', - 'Sender\'s city' => 'Ville de l\'expéditeur', - 'Sender\'s phone' => 'Téléphone de l\'expéditeur', - 'Sender\'s mobile phone' => 'Téléphone mobile de l\'expéditeur', - 'Sender\'s email' => 'Email de de l\'expéditeur', - 'Package warranty' => 'Garantie du colis', - 'Can\'t read file' => 'Le fichier suivant ne peut être lu', - 'Can\'t write file' => 'Le fichier suivant ne peut être écrit', - 'Can\'t read Config directory' => 'Le dossier Config ne peut être lu', - 'Please change the access rights' => 'Veuillez changer les droits d\'accès', - 'Can\'t write IciRelais/Config/exportdat.json. Please change the rights on the file and/or the directory.' => 'Le fichier IciRelais/Config/exportdat.json ne peut être écrit. Veuillez changer les droits d\'accès sur le fichier et/ou dossier', - 'The file IciRelais/Config/exportdat.json is not valid. Please correct it.'=>'Le fichier IciRelais/Config/exportdat.json n\'est pas valide. Veuillez le corriger.', - 'Can\'t read IciRelais/Config/exportdat.json. Did you save the export information ?'=>'Le fichier IciRelais/Config/exportdat.json ne peut être lu. Avez vous enregistré les informations d\'export ?', - 'Configure EXAPRINT file'=>'Configuration du fichier EXAPRINT', - 'REF'=>'Référence', - 'Date'=>'Date', - 'Total taxed amount'=>'Montant T.T.C.', - 'Form sent with bad arguments'=>'Le formulaire a été envoyé avec de mauvais arguments', - 'Check all'=>'Tout cocher', - 'Uncheck all'=>'Tout décocher', - 'Reverse selection'=>'Inverser la sélection', - 'operations'=>'Opérations', - 'Can\'t write Config directory'=>'Le dossier Config ne peut être écrit', - 'Export EXAPRINT file of this order'=>'Exporter le fichier EXAPRINT de cette commande', - 'Change orders status after export'=>'Modifier le statut des commandes après l\'export', - 'Do not change'=>'Ne pas changer', - 'Processing'=>'Traitement', - 'Sent'=>'Envoyée', - '*If you choose this option, the exported orders would not be available on this page anymore'=>'*En choisissant cette option, les commandes exportées ne seront plus disponible sur cette page', - 'IciRelais Sender\'s code'=>'Code IciRelais de l\'expéditeur', - 'Activate free shipping: '=>'Livraison offerte: ', -); diff --git a/local/modules/IciRelais/I18n/frontOffice/default/fr_FR.php b/local/modules/IciRelais/I18n/frontOffice/default/fr_FR.php deleted file mode 100644 index 363db0e6..00000000 --- a/local/modules/IciRelais/I18n/frontOffice/default/fr_FR.php +++ /dev/null @@ -1,50 +0,0 @@ - 'Veuillez choisir un point IciRelais', - 'Actual address can\'t be geolocated' => 'Cette adresse ne peut être géolocalisée', - 'Please enter a city and a zipcode' => 'Veuillez entrer une ville et son code postal', - 'Please enter a valid zipcode' => 'Veuillez entrer un code postal valide', - 'Search relay in a city' => 'Chercher un point IciRelais dans une autre ville', - 'city' => 'Ville', - 'zipcode' => 'Code postal', - 'Sorry! We are not able to give you a delivery method for your order.' => 'Sorry! We are not able to give you a delivery method for your order.', - 'Add a new address' => 'Add a new address', - 'Address %nb' => 'Address %nb', - 'Available' => 'Available', - 'Back' => 'Back', - 'Billing address' => 'Billing address', - 'Billing and delivery' => 'Billing and delivery', - 'Cancel' => 'Cancel', - 'Cart' => 'Cart', - 'Change address' => 'Change address', - 'Choose your delivery address' => 'Choose your delivery address', - 'Choose your delivery method' => 'Choose your delivery method', - 'Choose your payment method' => 'Choose your payment method', - 'Code :' => 'Code :', - 'Coupon code' => 'Coupon code', - 'Delivery address' => 'Delivery address', - 'Discount' => 'Discount', - 'Do you really want to delete this address ?' => 'Do you really want to delete this address ?', - 'Edit' => 'Edit', - 'Edit this address' => 'Edit this address', - 'In Stock' => 'In Stock', - 'My order' => 'My order', - 'Name' => 'Name', - 'Next Step' => 'Next Step', - 'No.' => 'No.', - 'Ok' => 'Ok', - 'Out of Stock' => 'Out of stock', - 'Price' => 'Price', - 'Product Name' => 'Product Name', - 'Qty' => 'Qty', - 'Quantity' => 'Quantity', - 'Remove this address' => 'Remove this address', - 'Search' => 'Search', - 'Shipping Tax' => 'Shipping Tax', - 'Total' => 'Total', - 'Unit Price' => 'Unit Price', - 'You may have a coupon ?' => 'You may have a coupon ?', - 'Your Cart' => 'Your Cart', - 'instead of' => 'instead of', -); diff --git a/local/modules/IciRelais/IciRelais.php b/local/modules/IciRelais/IciRelais.php deleted file mode 100644 index a9f4b13d..00000000 --- a/local/modules/IciRelais/IciRelais.php +++ /dev/null @@ -1,164 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais; - -use IciRelais\Model\IcirelaisFreeshippingQuery; -use Propel\Runtime\Connection\ConnectionInterface; -use Thelia\Exception\OrderException; -use Thelia\Install\Database; -use Thelia\Model\Country; -use Thelia\Module\AbstractDeliveryModule; - -class IciRelais extends AbstractDeliveryModule -{ - /* - * You may now override BaseModuleInterface methods, such as: - * install, destroy, preActivation, postActivation, preDeactivation, postDeactivation - * - * Have fun ! - */ - - const DOMAIN = 'icirelais'; - - protected $request; - protected $dispatcher; - - private static $prices = null; - - const JSON_PRICE_RESOURCE = "/Config/prices.json"; - - public function postActivation(ConnectionInterface $con = null) - { - $database = new Database($con->getWrappedConnection()); - - $database->insertSql(null, array(__DIR__ . '/Config/thelia.sql')); - } - - public static function getPrices() - { - if (null === self::$prices) { - if (is_readable(sprintf('%s/%s', __DIR__, self::JSON_PRICE_RESOURCE))) { - self::$prices = json_decode( - file_get_contents(sprintf('%s/%s', __DIR__, self::JSON_PRICE_RESOURCE)), - true - ); - } else { - self::$prices = null; - } - - } - - return self::$prices; - } - - /** - * This method is called by the Delivery loop, to check if the current module has to be displayed to the customer. - * Override it to implements your delivery rules/ - * - * If you return true, the delivery method will de displayed to the customer - * If you return false, the delivery method will not be displayed - * - * @param Country $country the country to deliver to. - * - * @return boolean - */ - public function isValidDelivery(Country $country) - { - $cartWeight = $this->getRequest()->getSession()->getCart()->getWeight(); - - $areaId = $country->getAreaId(); - - $prices = self::getPrices(); - - /* check if Ici Relais delivers the asked area */ - if (isset($prices[$areaId]) && isset($prices[$areaId]["slices"])) { - $areaPrices = $prices[$areaId]["slices"]; - ksort($areaPrices); - - /* check this weight is not too much */ - end($areaPrices); - - $maxWeight = key($areaPrices); - if ($cartWeight <= $maxWeight) { - return true; - } - } - - return false; - } - - public static function getPostageAmount($areaId, $weight) - { - $freeshipping = IcirelaisFreeshippingQuery::create()->getLast(); - $postage=0; - if (!$freeshipping) { - $prices = self::getPrices(); - - /* check if IciRelais delivers the asked area */ - if (!isset($prices[$areaId]) || !isset($prices[$areaId]["slices"])) { - throw new OrderException( - "Ici Relais delivery unavailable for the chosen delivery country", - OrderException::DELIVERY_MODULE_UNAVAILABLE - ); - } - - $areaPrices = $prices[$areaId]["slices"]; - ksort($areaPrices); - - /* check this weight is not too much */ - end($areaPrices); - $maxWeight = key($areaPrices); - if ($weight > $maxWeight) { - throw new OrderException( - sprintf("Ici Relais delivery unavailable for this cart weight (%s kg)", $weight), - OrderException::DELIVERY_MODULE_UNAVAILABLE - ); - } - - $postage = current($areaPrices); - - while (prev($areaPrices)) { - if ($weight > key($areaPrices)) { - break; - } - - $postage = current($areaPrices); - } - } - - return $postage; - } - - public function getPostage(Country $country) - { - $cartWeight = $this->getRequest()->getSession()->getCart()->getWeight(); - - $postage = self::getPostageAmount( - $country->getAreaId(), - $cartWeight - ); - - return $postage; - } -} diff --git a/local/modules/IciRelais/LICENSE.txt b/local/modules/IciRelais/LICENSE.txt deleted file mode 100644 index 94a9ed02..00000000 --- a/local/modules/IciRelais/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - 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/IciRelais/Listener/SendEMail.php b/local/modules/IciRelais/Listener/SendEMail.php deleted file mode 100644 index c7f4c968..00000000 --- a/local/modules/IciRelais/Listener/SendEMail.php +++ /dev/null @@ -1,139 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Listener; - -use IciRelais\IciRelais; -use IciRelais\Loop\IciRelaisOrders; -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 SendEMail 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 update_status(OrderEvent $event) - { - if ($event->getOrder()->getDeliveryModuleId() === IciRelais::getModuleId()) { - - if ($event->getOrder()->getStatusId() === IciRelaisOrders::STATUS_SENT ) { - $contact_email = ConfigQuery::read('store_email'); - - if ($contact_email) { - $message = MessageQuery::create() - ->filterByName('order_confirmation_icirelais') - ->findOne(); - - if (false === $message) { - throw new \Exception("Failed to load message 'order_confirmation_icirelais'."); - } - - $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::read('store_name')) - ; - - // Build subject and body - $message->buildMessage($this->parser, $instance); - - $this->getMailer()->send($instance); - - } - } - } - - } - - /** - * Returns an array of event names this subscriber wants to listen to. - * - * The array keys are event names and the value can be: - * - * * The method name to call (priority defaults to 0) - * * An array composed of the method name to call and the priority - * * An array of arrays composed of the method names to call and respective - * priorities, or 0 if unset - * - * For instance: - * - * * array('eventName' => 'methodName') - * * array('eventName' => array('methodName', $priority)) - * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) - * - * @return array The event names to listen to - * - * @api - */ - public static function getSubscribedEvents() - { - return array( - TheliaEvents::ORDER_UPDATE_STATUS => array("update_status", 128) - ); - } - -} diff --git a/local/modules/IciRelais/Listener/SetDeliveryModule.php b/local/modules/IciRelais/Listener/SetDeliveryModule.php deleted file mode 100644 index de46941a..00000000 --- a/local/modules/IciRelais/Listener/SetDeliveryModule.php +++ /dev/null @@ -1,171 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Listener; - -use IciRelais\IciRelais; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Thelia\Core\Event\Order\OrderEvent; -use Thelia\Core\Event\TheliaEvents; - -use IciRelais\Model\OrderAddressIcirelais; -use Thelia\Core\HttpFoundation\Request; -use Thelia\Model\OrderAddressQuery; -use IciRelais\Model\AddressIcirelais; -use IciRelais\Model\AddressIcirelaisQuery; -use Thelia\Model\AddressQuery; - -/** - * Class SetDeliveryModule - * @package IciRelais\Listener - * @author Thelia - */ - -class SetDeliveryModule implements EventSubscriberInterface -{ - protected $request; - public function __construct(Request $request) - { - $this->request = $request; - } - - /** - * @return \Thelia\Core\HttpFoundation\Request - */ - public function getRequest() - { - return $this->request; - } - - protected function check_module($id) - { - return $id == IciRelais::getModuleId(); - } - - public function isModuleIciRelais(OrderEvent $event) - { - $address = AddressIcirelaisQuery::create() - ->findPk($event->getDeliveryAddress()); - - if ($this->check_module($event->getDeliveryModule())) { - //tmp solution - $request = $this->getRequest(); - $pr_code = $request->request->get('pr_code'); - if (!empty($pr_code)) { - // Get details w/ SOAP - $con = new \SoapClient(__DIR__."/../Config/exapaq.wsdl", array('soap_version'=>SOAP_1_2)); - $response = $con->GetPudoDetails(array("pudo_id"=>$pr_code)); - $xml = new \SimpleXMLElement($response->GetPudoDetailsResult->any); - if (isset($xml->ERROR)) { - throw new \ErrorException("Error while choosing pick-up & go store: ".$xml->ERROR); - } - - $customer_name = AddressQuery::create() - ->findPk($event->getDeliveryAddress()); - - - $request->getSession()->set('IciRelaisDeliveryId', $event->getDeliveryAddress()); - if ($address === null) { - $address = new AddressIcirelais(); - $address->setId($event->getDeliveryAddress()); - } - - // France Métropolitaine - $address->setCode($pr_code) - ->setCompany((string) $xml->PUDO_ITEMS->PUDO_ITEM->NAME) - ->setAddress1((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS1) - ->setAddress2((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS2) - ->setAddress3((string) $xml->PUDO_ITEMS->PUDO_ITEM->ADDRESS3) - ->setZipcode((string) $xml->PUDO_ITEMS->PUDO_ITEM->ZIPCODE) - ->setCity((string) $xml->PUDO_ITEMS->PUDO_ITEM->CITY) - ->setFirstname($customer_name->getFirstname()) - ->setLastname($customer_name->getLastname()) - ->setTitleId($customer_name->getTitleId()) - ->setCountryId($customer_name->getCountryId()) - ->save(); - } else { - throw new \ErrorException("No pick-up & go store chosen for IciRelais delivery module"); - } - } elseif (null !== $address) { - $address->delete(); - } - } - - public function updateDeliveryAddress(OrderEvent $event) - { - if ($this->check_module($event->getOrder()->getDeliveryModuleId())) { - $request = $this->getRequest(); - $tmp_address = AddressIcirelaisQuery::create() - ->findPk($request->getSession()->get('IciRelaisDeliveryId')); - - if ($tmp_address === null) { - throw new \ErrorException("Got an error with IciRelais module. Please try again to checkout."); - } - - $savecode = new OrderAddressIcirelais(); - $savecode->setId($event->getOrder()->getDeliveryOrderAddressId()) - ->setCode($tmp_address->getCode()) - ->save(); - - $update = OrderAddressQuery::create() - ->findPK($event->getOrder()->getDeliveryOrderAddressId()) - ->setCompany($tmp_address->getCompany()) - ->setAddress1($tmp_address->getAddress1()) - ->setAddress2($tmp_address->getAddress2()) - ->setAddress3($tmp_address->getAddress3()) - ->setZipcode($tmp_address->getZipcode()) - ->setCity($tmp_address->getCity()) - ->save(); - - $tmp_address->delete(); - } - } - - /** - * Returns an array of event names this subscriber wants to listen to. - * - * The array keys are event names and the value can be: - * - * * The method name to call (priority defaults to 0) - * * An array composed of the method name to call and the priority - * * An array of arrays composed of the method names to call and respective - * priorities, or 0 if unset - * - * For instance: - * - * * array('eventName' => 'methodName') - * * array('eventName' => array('methodName', $priority)) - * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) - * - * @return array The event names to listen to - * - * @api - */ - public static function getSubscribedEvents() - { - return array( - TheliaEvents::ORDER_SET_DELIVERY_MODULE => array('isModuleIciRelais', 64), - TheliaEvents::ORDER_BEFORE_PAYMENT => array('updateDeliveryAddress', 256) - ); - } -} diff --git a/local/modules/IciRelais/Loop/CheckRightsLoop.php b/local/modules/IciRelais/Loop/CheckRightsLoop.php deleted file mode 100644 index 2828afd6..00000000 --- a/local/modules/IciRelais/Loop/CheckRightsLoop.php +++ /dev/null @@ -1,99 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use IciRelais\IciRelais; -use Thelia\Core\Template\Loop\Argument\ArgumentCollection; -use Thelia\Core\Template\Element\BaseLoop; -use Thelia\Core\Template\Element\LoopResultRow; -use Thelia\Core\Template\Element\LoopResult; -use Thelia\Core\Template\Element\ArraySearchLoopInterface; -use Thelia\Core\Translation\Translator; - -/** - * Class CheckRightsLoop - * @package IciRelais\Looop - * @author Thelia - */ - -class CheckRightsLoop extends BaseLoop implements ArraySearchLoopInterface -{ - protected function getArgDefinitions() - { - return new ArgumentCollection(); - } - - public function buildArray() - { - $ret = array(); - $dir = __DIR__."/../Config/"; - if (!is_readable($dir)) { - $ret[] = array("ERRMES"=>Translator::getInstance()->trans( - "Can't read Config directory", - [], - IciRelais::DOMAIN - ), "ERRFILE"=>""); - } - if (!is_writable($dir)) { - $ret[] = array("ERRMES"=>Translator::getInstance()->trans( - "Can't write Config directory", - [], - IciRelais::DOMAIN - ), "ERRFILE"=>""); - } - if ($handle = opendir($dir)) { - while (false !== ($file = readdir($handle))) { - if (strlen($file) > 5 && substr($file, -5) === ".json") { - if (!is_readable($dir.$file)) { - $ret[] = array("ERRMES"=>Translator::getInstance()->trans( - "Can't read file", - [], - IciRelais::DOMAIN - ), "ERRFILE"=>"Icirelais/Config/".$file); - } - if (!is_writable($dir.$file)) { - $ret[] = array("ERRMES"=>Translator::getInstance()->trans( - "Can't write file", - [], - IciRelais::DOMAIN - ), "ERRFILE"=>"Icirelais/Config/".$file); - } - } - } - } - - return $ret; - } - public function parseResults(LoopResult $loopResult) - { - foreach ($loopResult->getResultDataCollection() as $arr) { - $loopResultRow = new LoopResultRow(); - $loopResultRow->set("ERRMES", $arr["ERRMES"]) - ->set("ERRFILE", $arr["ERRFILE"]); - $loopResult->addRow($loopResultRow); - } - - return $loopResult; - } -} diff --git a/local/modules/IciRelais/Loop/IciRelaisAddress.php b/local/modules/IciRelais/Loop/IciRelaisAddress.php deleted file mode 100644 index 3de14b99..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisAddress.php +++ /dev/null @@ -1,77 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use IciRelais\Model\AddressIcirelaisQuery; -use Thelia\Core\Template\Loop\Address; -use Thelia\Core\Template\Element\LoopResult; -use Thelia\Core\Template\Element\LoopResultRow; -use IciRelais\IciRelais; -/** - * Class IciRelaisDelivery - * @package IciRelais\Loop - * @author Thelia - */ -class IciRelaisAddress extends Address -{ - protected $exists = false; - protected $timestampable = false; - - protected function setExists($id) - { - $this->exists = AddressIcirelaisQuery::create()->findPK($id) !== null; - } - public function buildModelCriteria() - { - $id = $this->getId(); - $this->setExists($id[0]); - - return $this->exists ? - AddressIcirelaisQuery::create()->filterById($id[0]) : - parent::buildModelCriteria(); - } - public function parseResults(LoopResult $loopResult) - { - if (!$this->exists) { - return parent::parseResults($loopResult); - } else { - foreach ($loopResult->getResultDataCollection() as $address) { - $loopResultRow = new LoopResultRow(); - $loopResultRow->set("TITLE", $address->getTitleId()) - ->set("COMPANY", $address->getCompany()) - ->set("FIRSTNAME", $address->getFirstname()) - ->set("LASTNAME", $address->getLastname()) - ->set("ADDRESS1", $address->getAddress1()) - ->set("ADDRESS2", $address->getAddress2()) - ->set("ADDRESS3", $address->getAddress3()) - ->set("ZIPCODE", $address->getZipcode()) - ->set("CITY", $address->getCity()) - ->set("COUNTRY", $address->getCountryId()) - ; $loopResult->addRow($loopResultRow); - } - - return $loopResult; - } - } -} diff --git a/local/modules/IciRelais/Loop/IciRelaisAround.php b/local/modules/IciRelais/Loop/IciRelaisAround.php deleted file mode 100644 index ff322983..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisAround.php +++ /dev/null @@ -1,154 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use Thelia\Log\Tlog; -use Thelia\Model\AddressQuery; -use Thelia\Core\Template\Loop\Address; -use Thelia\Core\Template\Element\PropelSearchLoopInterface; -use Thelia\Core\Template\Element\BaseLoop; -use Thelia\Core\Template\Element\LoopResult; -use Thelia\Core\Template\Element\LoopResultRow; - -use Thelia\Core\Template\Loop\Argument\ArgumentCollection; -use Thelia\Core\Template\Loop\Argument\Argument; -/** - * Class IciRelaisAround - * @package IciRelais\Loop - * @author Thelia - */ -class IciRelaisAround extends BaseLoop implements PropelSearchLoopInterface -{ - private $addressflag=true; - private $zipcode=""; - private $city=""; - /** - * @return ArgumentCollection - */ - protected function getArgDefinitions() - { - return new ArgumentCollection( - Argument::createAnyTypeArgument("zipcode", ""), - Argument::createAnyTypeArgument("city","") - ); - } - - public function buildModelCriteria() - { - $zipcode = $this->getZipcode(); - $city = $this->getCity(); - if (!empty($zipcode) and !empty($city)) { - $this->zipcode = $zipcode; - $this->city = $city; - $this->addressflag = false; - } else { - $search = AddressQuery::create(); - - $customer=$this->securityContext->getCustomerUser(); - if ($customer !== null) { - $search->filterByCustomerId($customer->getId()); - $search->filterByIsDefault("1"); - } else { - throw new \ErrorException("Customer not connected."); - } - - return $search; - } - } - - public function parseResults(LoopResult $loopResult) - { - $date = date('d/m/Y'); - try { - $getPudoSoap = new \SoapClient(__DIR__ . "/../Config/exapaq.wsdl", array('soap_version' => SOAP_1_2)); - - if ($this->addressflag) { - foreach ($loopResult->getResultDataCollection() as $address) { - $response = $getPudoSoap->GetPudoList( - array( - "address" => str_replace(" ", "%", $address->getAddress1()), - "zipCode" => $address->getZipcode(), - "city" => str_replace(" ", "%", $address->getCity()), - "request_id" => "1234", - "date_from" => $date - ) - ); - } - } else { - $response = $getPudoSoap->GetPudoList( - array( - "zipCode" => $this->zipcode, - "city" => str_replace(" ", "%", $this->city), - "request_id" => "1234", - "date_from" => $date - ) - ); - } - } catch (\SoapFault $e) { - Tlog::getInstance()->error( - sprintf( - "[%s %s - SOAP Error %d]: %s", - $date, - date("H:i:s"), - (int) $e->getCode(), - (string) $e->getMessage() - ) - ); - - return array(); - } - - $xml = new \SimpleXMLElement($response->GetPudoListResult->any); - if (isset($xml->ERROR)) { - throw new \ErrorException("Error while choosing pick-up & go store: " . $xml->ERROR); - } - foreach ($xml->PUDO_ITEMS->PUDO_ITEM as $item) { - $loopResultRow = new LoopResultRow(); - // Write distance in m / km - $distance = $item->DISTANCE; - if (strlen($distance) < 4) { - $distance .= " m"; - } else { - $distance = (string) floatval($distance) / 1000; - while (substr($distance, strlen($distance) - 1, 1) == "0") { - $distance = substr($distance, 0, strlen($distance) - 1); - } - $distance = str_replace(".", ",", $distance) . " km"; - } - - // Then define all the variables - $loopResultRow->set("NAME", $item->NAME) - ->set("LONGITUDE", str_replace(",", ".", $item->LONGITUDE)) - ->set("LATITUDE", str_replace(",", ".", $item->LATITUDE)) - ->set("CODE", $item->PUDO_ID) - ->set("ADDRESS", $item->ADDRESS1) - ->set("ZIPCODE", $item->ZIPCODE) - ->set("CITY", $item->CITY) - ->set("DISTANCE", $distance); - $loopResult->addRow($loopResultRow); - } - - return $loopResult; - } -} diff --git a/local/modules/IciRelais/Loop/IciRelaisDelivery.php b/local/modules/IciRelais/Loop/IciRelaisDelivery.php deleted file mode 100644 index 314a3a43..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisDelivery.php +++ /dev/null @@ -1,48 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use Thelia\Core\Template\Loop\Delivery; -use Thelia\Core\Template\Element\LoopResult; - -use IciRelais\IciRelais; -/** - * Class IciRelaisDelivery - * @package IciRelais\Loop - * @author Thelia - */ -class IciRelaisDelivery extends Delivery -{ - public function parseResults(LoopResult $loopResult) - { - $icirelaiskey = IciRelais::getModuleId(); - - $loopResult = parent::parseResults($loopResult); - for ($loopResult->rewind(); $loopResult->valid(); $loopResult->next()) { - $loopResult->current()->set("ICI_RELAIS_MODULE", $icirelaiskey); - } - - return $loopResult; - } -} diff --git a/local/modules/IciRelais/Loop/IciRelaisOrders.php b/local/modules/IciRelais/Loop/IciRelaisOrders.php deleted file mode 100644 index c5ab2417..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisOrders.php +++ /dev/null @@ -1,46 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; -use Thelia\Core\Template\Loop\Order; -use IciRelais\IciRelais; -use Thelia\Model\OrderQuery; - -/** - * Class IciRelaisOrders - * @package IciRelais\Loop - * @author Thelia - */ -class IciRelaisOrders extends Order -{ - const STATUS_PAID = 2; - const STATUS_PROCESSING = 3; - const STATUS_SENT = 4; - public function buildModelCriteria() - { - return OrderQuery::create() - ->filterByDeliveryModuleId(IciRelais::getModuleId()) - ->filterByStatusId(array(self::STATUS_PAID,self::STATUS_PROCESSING)); - } - -} diff --git a/local/modules/IciRelais/Loop/IciRelaisPrice.php b/local/modules/IciRelais/Loop/IciRelaisPrice.php deleted file mode 100644 index ddb0b2eb..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisPrice.php +++ /dev/null @@ -1,85 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use IciRelais\IciRelais; -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\ArgumentCollection; -use Thelia\Core\Template\Loop\Argument\Argument; - -/** - * Class IciRelaisPrice - * @package IciRelais\Loop - * @author Thelia - * @original_author Etienne Roudeix - */ -class IciRelaisPrice extends BaseLoop implements ArraySearchLoopInterface -{ - /* set countable to false since we need to preserve keys */ - protected $countable = false; - - /** - * @return ArgumentCollection - */ - protected function getArgDefinitions() - { - return new ArgumentCollection( - Argument::createIntTypeArgument('area', null, true) - ); - } - - public function buildArray() - { - $area = $this->getArea(); - - $prices = IciRelais::getPrices(); - - if (!isset($prices[$area]) || !isset($prices[$area]["slices"])) { - return array(); - } - - $areaPrices = $prices[$area]["slices"]; - ksort($areaPrices); - - return $areaPrices; - } - - public function parseResults(LoopResult $loopResult) - { - foreach ($loopResult->getResultDataCollection() as $maxWeight => $price) { - $loopResultRow = new LoopResultRow(); - $loopResultRow->set("MAX_WEIGHT", $maxWeight) - ->set("PRICE", $price); - - $loopResult->addRow($loopResultRow); - } - - return $loopResult; - - } -} diff --git a/local/modules/IciRelais/Loop/IciRelaisUrlTracking.php b/local/modules/IciRelais/Loop/IciRelaisUrlTracking.php deleted file mode 100644 index 30378c77..00000000 --- a/local/modules/IciRelais/Loop/IciRelaisUrlTracking.php +++ /dev/null @@ -1,80 +0,0 @@ -. */ -/* */ -/*************************************************************************************/ - -namespace IciRelais\Loop; - -use IciRelais\Controller\ExportExaprint; -use IciRelais\IciRelais; -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\OrderQuery; - -/** - * Class IciRelaisUrlTracking - * @package IciRelais\Loop - * @author Thelia - */ -class IciRelaisUrlTracking extends BaseLoop implements ArraySearchLoopInterface -{ - /** - * @return ArgumentCollection - */ - const BASE_URL="http://e-trace.ils-consult.fr/ici-webtrace/webclients.aspx?verknr=%s&versdat=&kundenr=%s&cmd=VERKNR_SEARCH"; - protected function getArgDefinitions() - { - return new ArgumentCollection( - Argument::createAnyTypeArgument('ref', null, true) - ); - } - - public function buildArray() - { - $path=ExportExaprint::getJSONpath(); - if(is_readable($path) && ($order=OrderQuery::create()->findOneByRef($this->getRef())) !== null - && $order->getDeliveryModuleId() === IciRelais::getModuleId()) { - $json=json_decode(file_get_contents($path),true); - - return array($this->getRef()=>$json['expcode']); - } else { - return array(); - } - } - - public function parseResults(LoopResult $loopResult) - { - foreach ($loopResult->getResultDataCollection() as $ref => $code) { - $loopResultRow = new LoopResultRow(); - $loopResultRow->set("URL", sprintf(self::BASE_URL,$ref,$code)); - - $loopResult->addRow($loopResultRow); - } - - return $loopResult; - - } -} diff --git a/local/modules/IciRelais/Model/AddressIcirelais.php b/local/modules/IciRelais/Model/AddressIcirelais.php deleted file mode 100644 index 80c4cbd4..00000000 --- a/local/modules/IciRelais/Model/AddressIcirelais.php +++ /dev/null @@ -1,10 +0,0 @@ -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 AddressIcirelais instance. If - * obj is an instance of AddressIcirelais, delegates to - * equals(AddressIcirelais). 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 AddressIcirelais 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 AddressIcirelais 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 [title_id] column value. - * - * @return int - */ - public function getTitleId() - { - return $this->title_id; - } - - /** - * Get the [company] column value. - * - * @return string - */ - public function getCompany() - { - return $this->company; - } - - /** - * Get the [firstname] column value. - * - * @return string - */ - public function getFirstname() - { - return $this->firstname; - } - - /** - * Get the [lastname] column value. - * - * @return string - */ - public function getLastname() - { - return $this->lastname; - } - - /** - * Get the [address1] column value. - * - * @return string - */ - public function getAddress1() - { - return $this->address1; - } - - /** - * Get the [address2] column value. - * - * @return string - */ - public function getAddress2() - { - return $this->address2; - } - - /** - * Get the [address3] column value. - * - * @return string - */ - public function getAddress3() - { - return $this->address3; - } - - /** - * Get the [zipcode] column value. - * - * @return string - */ - public function getZipcode() - { - return $this->zipcode; - } - - /** - * Get the [city] column value. - * - * @return string - */ - public function getCity() - { - return $this->city; - } - - /** - * Get the [country_id] column value. - * - * @return int - */ - public function getCountryId() - { - return $this->country_id; - } - - /** - * Get the [code] column value. - * - * @return string - */ - public function getCode() - { - return $this->code; - } - - /** - * Set the value of [id] column. - * - * @param int $v new value - * @return \IciRelais\Model\AddressIcirelais 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[AddressIcirelaisTableMap::ID] = true; - } - - return $this; - } // setId() - - /** - * Set the value of [title_id] column. - * - * @param int $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setTitleId($v) - { - if ($v !== null) { - $v = (int) $v; - } - - if ($this->title_id !== $v) { - $this->title_id = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::TITLE_ID] = true; - } - - if ($this->aCustomerTitle !== null && $this->aCustomerTitle->getId() !== $v) { - $this->aCustomerTitle = null; - } - - return $this; - } // setTitleId() - - /** - * Set the value of [company] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setCompany($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->company !== $v) { - $this->company = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::COMPANY] = true; - } - - return $this; - } // setCompany() - - /** - * Set the value of [firstname] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setFirstname($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->firstname !== $v) { - $this->firstname = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::FIRSTNAME] = true; - } - - return $this; - } // setFirstname() - - /** - * Set the value of [lastname] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setLastname($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->lastname !== $v) { - $this->lastname = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::LASTNAME] = true; - } - - return $this; - } // setLastname() - - /** - * Set the value of [address1] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setAddress1($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->address1 !== $v) { - $this->address1 = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::ADDRESS1] = true; - } - - return $this; - } // setAddress1() - - /** - * Set the value of [address2] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setAddress2($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->address2 !== $v) { - $this->address2 = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::ADDRESS2] = true; - } - - return $this; - } // setAddress2() - - /** - * Set the value of [address3] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setAddress3($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->address3 !== $v) { - $this->address3 = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::ADDRESS3] = true; - } - - return $this; - } // setAddress3() - - /** - * Set the value of [zipcode] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setZipcode($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->zipcode !== $v) { - $this->zipcode = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::ZIPCODE] = true; - } - - return $this; - } // setZipcode() - - /** - * Set the value of [city] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setCity($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->city !== $v) { - $this->city = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::CITY] = true; - } - - return $this; - } // setCity() - - /** - * Set the value of [country_id] column. - * - * @param int $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setCountryId($v) - { - if ($v !== null) { - $v = (int) $v; - } - - if ($this->country_id !== $v) { - $this->country_id = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::COUNTRY_ID] = true; - } - - if ($this->aCountry !== null && $this->aCountry->getId() !== $v) { - $this->aCountry = null; - } - - return $this; - } // setCountryId() - - /** - * Set the value of [code] column. - * - * @param string $v new value - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - */ - public function setCode($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->code !== $v) { - $this->code = $v; - $this->modifiedColumns[AddressIcirelaisTableMap::CODE] = true; - } - - return $this; - } // setCode() - - /** - * 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 : AddressIcirelaisTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; - $this->id = (null !== $col) ? (int) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : AddressIcirelaisTableMap::translateFieldName('TitleId', TableMap::TYPE_PHPNAME, $indexType)]; - $this->title_id = (null !== $col) ? (int) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : AddressIcirelaisTableMap::translateFieldName('Company', TableMap::TYPE_PHPNAME, $indexType)]; - $this->company = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : AddressIcirelaisTableMap::translateFieldName('Firstname', TableMap::TYPE_PHPNAME, $indexType)]; - $this->firstname = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : AddressIcirelaisTableMap::translateFieldName('Lastname', TableMap::TYPE_PHPNAME, $indexType)]; - $this->lastname = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : AddressIcirelaisTableMap::translateFieldName('Address1', TableMap::TYPE_PHPNAME, $indexType)]; - $this->address1 = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 6 + $startcol : AddressIcirelaisTableMap::translateFieldName('Address2', TableMap::TYPE_PHPNAME, $indexType)]; - $this->address2 = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 7 + $startcol : AddressIcirelaisTableMap::translateFieldName('Address3', TableMap::TYPE_PHPNAME, $indexType)]; - $this->address3 = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 8 + $startcol : AddressIcirelaisTableMap::translateFieldName('Zipcode', TableMap::TYPE_PHPNAME, $indexType)]; - $this->zipcode = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 9 + $startcol : AddressIcirelaisTableMap::translateFieldName('City', TableMap::TYPE_PHPNAME, $indexType)]; - $this->city = (null !== $col) ? (string) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 10 + $startcol : AddressIcirelaisTableMap::translateFieldName('CountryId', TableMap::TYPE_PHPNAME, $indexType)]; - $this->country_id = (null !== $col) ? (int) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 11 + $startcol : AddressIcirelaisTableMap::translateFieldName('Code', TableMap::TYPE_PHPNAME, $indexType)]; - $this->code = (null !== $col) ? (string) $col : null; - $this->resetModified(); - - $this->setNew(false); - - if ($rehydrate) { - $this->ensureConsistency(); - } - - return $startcol + 12; // 12 = AddressIcirelaisTableMap::NUM_HYDRATE_COLUMNS. - - } catch (Exception $e) { - throw new PropelException("Error populating \IciRelais\Model\AddressIcirelais 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->aCustomerTitle !== null && $this->title_id !== $this->aCustomerTitle->getId()) { - $this->aCustomerTitle = null; - } - if ($this->aCountry !== null && $this->country_id !== $this->aCountry->getId()) { - $this->aCountry = 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(AddressIcirelaisTableMap::DATABASE_NAME); - } - - // We don't need to alter the object instance pool; we're just modifying this instance - // already in the pool. - - $dataFetcher = ChildAddressIcirelaisQuery::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->aCustomerTitle = null; - $this->aCountry = null; - } // if (deep) - } - - /** - * Removes this object from datastore and sets delete attribute. - * - * @param ConnectionInterface $con - * @return void - * @throws PropelException - * @see AddressIcirelais::setDeleted() - * @see AddressIcirelais::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(AddressIcirelaisTableMap::DATABASE_NAME); - } - - $con->beginTransaction(); - try { - $deleteQuery = ChildAddressIcirelaisQuery::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(AddressIcirelaisTableMap::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); - AddressIcirelaisTableMap::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->aCustomerTitle !== null) { - if ($this->aCustomerTitle->isModified() || $this->aCustomerTitle->isNew()) { - $affectedRows += $this->aCustomerTitle->save($con); - } - $this->setCustomerTitle($this->aCustomerTitle); - } - - if ($this->aCountry !== null) { - if ($this->aCountry->isModified() || $this->aCountry->isNew()) { - $affectedRows += $this->aCountry->save($con); - } - $this->setCountry($this->aCountry); - } - - 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; - - // check the columns in natural order for more readable SQL queries - if ($this->isColumnModified(AddressIcirelaisTableMap::ID)) { - $modifiedColumns[':p' . $index++] = 'ID'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::TITLE_ID)) { - $modifiedColumns[':p' . $index++] = 'TITLE_ID'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::COMPANY)) { - $modifiedColumns[':p' . $index++] = 'COMPANY'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::FIRSTNAME)) { - $modifiedColumns[':p' . $index++] = 'FIRSTNAME'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::LASTNAME)) { - $modifiedColumns[':p' . $index++] = 'LASTNAME'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS1)) { - $modifiedColumns[':p' . $index++] = 'ADDRESS1'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS2)) { - $modifiedColumns[':p' . $index++] = 'ADDRESS2'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS3)) { - $modifiedColumns[':p' . $index++] = 'ADDRESS3'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::ZIPCODE)) { - $modifiedColumns[':p' . $index++] = 'ZIPCODE'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::CITY)) { - $modifiedColumns[':p' . $index++] = 'CITY'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::COUNTRY_ID)) { - $modifiedColumns[':p' . $index++] = 'COUNTRY_ID'; - } - if ($this->isColumnModified(AddressIcirelaisTableMap::CODE)) { - $modifiedColumns[':p' . $index++] = 'CODE'; - } - - $sql = sprintf( - 'INSERT INTO address_icirelais (%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 'TITLE_ID': - $stmt->bindValue($identifier, $this->title_id, PDO::PARAM_INT); - break; - case 'COMPANY': - $stmt->bindValue($identifier, $this->company, PDO::PARAM_STR); - break; - case 'FIRSTNAME': - $stmt->bindValue($identifier, $this->firstname, PDO::PARAM_STR); - break; - case 'LASTNAME': - $stmt->bindValue($identifier, $this->lastname, PDO::PARAM_STR); - break; - case 'ADDRESS1': - $stmt->bindValue($identifier, $this->address1, PDO::PARAM_STR); - break; - case 'ADDRESS2': - $stmt->bindValue($identifier, $this->address2, PDO::PARAM_STR); - break; - case 'ADDRESS3': - $stmt->bindValue($identifier, $this->address3, PDO::PARAM_STR); - break; - case 'ZIPCODE': - $stmt->bindValue($identifier, $this->zipcode, PDO::PARAM_STR); - break; - case 'CITY': - $stmt->bindValue($identifier, $this->city, PDO::PARAM_STR); - break; - case 'COUNTRY_ID': - $stmt->bindValue($identifier, $this->country_id, PDO::PARAM_INT); - break; - case 'CODE': - $stmt->bindValue($identifier, $this->code, 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); - } - - $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 = AddressIcirelaisTableMap::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->getTitleId(); - break; - case 2: - return $this->getCompany(); - break; - case 3: - return $this->getFirstname(); - break; - case 4: - return $this->getLastname(); - break; - case 5: - return $this->getAddress1(); - break; - case 6: - return $this->getAddress2(); - break; - case 7: - return $this->getAddress3(); - break; - case 8: - return $this->getZipcode(); - break; - case 9: - return $this->getCity(); - break; - case 10: - return $this->getCountryId(); - break; - case 11: - return $this->getCode(); - 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['AddressIcirelais'][$this->getPrimaryKey()])) { - return '*RECURSION*'; - } - $alreadyDumpedObjects['AddressIcirelais'][$this->getPrimaryKey()] = true; - $keys = AddressIcirelaisTableMap::getFieldNames($keyType); - $result = array( - $keys[0] => $this->getId(), - $keys[1] => $this->getTitleId(), - $keys[2] => $this->getCompany(), - $keys[3] => $this->getFirstname(), - $keys[4] => $this->getLastname(), - $keys[5] => $this->getAddress1(), - $keys[6] => $this->getAddress2(), - $keys[7] => $this->getAddress3(), - $keys[8] => $this->getZipcode(), - $keys[9] => $this->getCity(), - $keys[10] => $this->getCountryId(), - $keys[11] => $this->getCode(), - ); - $virtualColumns = $this->virtualColumns; - foreach ($virtualColumns as $key => $virtualColumn) { - $result[$key] = $virtualColumn; - } - - if ($includeForeignObjects) { - if (null !== $this->aCustomerTitle) { - $result['CustomerTitle'] = $this->aCustomerTitle->toArray($keyType, $includeLazyLoadColumns, $alreadyDumpedObjects, true); - } - if (null !== $this->aCountry) { - $result['Country'] = $this->aCountry->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 = AddressIcirelaisTableMap::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->setTitleId($value); - break; - case 2: - $this->setCompany($value); - break; - case 3: - $this->setFirstname($value); - break; - case 4: - $this->setLastname($value); - break; - case 5: - $this->setAddress1($value); - break; - case 6: - $this->setAddress2($value); - break; - case 7: - $this->setAddress3($value); - break; - case 8: - $this->setZipcode($value); - break; - case 9: - $this->setCity($value); - break; - case 10: - $this->setCountryId($value); - break; - case 11: - $this->setCode($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 = AddressIcirelaisTableMap::getFieldNames($keyType); - - if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); - if (array_key_exists($keys[1], $arr)) $this->setTitleId($arr[$keys[1]]); - if (array_key_exists($keys[2], $arr)) $this->setCompany($arr[$keys[2]]); - if (array_key_exists($keys[3], $arr)) $this->setFirstname($arr[$keys[3]]); - if (array_key_exists($keys[4], $arr)) $this->setLastname($arr[$keys[4]]); - if (array_key_exists($keys[5], $arr)) $this->setAddress1($arr[$keys[5]]); - if (array_key_exists($keys[6], $arr)) $this->setAddress2($arr[$keys[6]]); - if (array_key_exists($keys[7], $arr)) $this->setAddress3($arr[$keys[7]]); - if (array_key_exists($keys[8], $arr)) $this->setZipcode($arr[$keys[8]]); - if (array_key_exists($keys[9], $arr)) $this->setCity($arr[$keys[9]]); - if (array_key_exists($keys[10], $arr)) $this->setCountryId($arr[$keys[10]]); - if (array_key_exists($keys[11], $arr)) $this->setCode($arr[$keys[11]]); - } - - /** - * 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(AddressIcirelaisTableMap::DATABASE_NAME); - - if ($this->isColumnModified(AddressIcirelaisTableMap::ID)) $criteria->add(AddressIcirelaisTableMap::ID, $this->id); - if ($this->isColumnModified(AddressIcirelaisTableMap::TITLE_ID)) $criteria->add(AddressIcirelaisTableMap::TITLE_ID, $this->title_id); - if ($this->isColumnModified(AddressIcirelaisTableMap::COMPANY)) $criteria->add(AddressIcirelaisTableMap::COMPANY, $this->company); - if ($this->isColumnModified(AddressIcirelaisTableMap::FIRSTNAME)) $criteria->add(AddressIcirelaisTableMap::FIRSTNAME, $this->firstname); - if ($this->isColumnModified(AddressIcirelaisTableMap::LASTNAME)) $criteria->add(AddressIcirelaisTableMap::LASTNAME, $this->lastname); - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS1)) $criteria->add(AddressIcirelaisTableMap::ADDRESS1, $this->address1); - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS2)) $criteria->add(AddressIcirelaisTableMap::ADDRESS2, $this->address2); - if ($this->isColumnModified(AddressIcirelaisTableMap::ADDRESS3)) $criteria->add(AddressIcirelaisTableMap::ADDRESS3, $this->address3); - if ($this->isColumnModified(AddressIcirelaisTableMap::ZIPCODE)) $criteria->add(AddressIcirelaisTableMap::ZIPCODE, $this->zipcode); - if ($this->isColumnModified(AddressIcirelaisTableMap::CITY)) $criteria->add(AddressIcirelaisTableMap::CITY, $this->city); - if ($this->isColumnModified(AddressIcirelaisTableMap::COUNTRY_ID)) $criteria->add(AddressIcirelaisTableMap::COUNTRY_ID, $this->country_id); - if ($this->isColumnModified(AddressIcirelaisTableMap::CODE)) $criteria->add(AddressIcirelaisTableMap::CODE, $this->code); - 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(AddressIcirelaisTableMap::DATABASE_NAME); - $criteria->add(AddressIcirelaisTableMap::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 \IciRelais\Model\AddressIcirelais (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->setId($this->getId()); - $copyObj->setTitleId($this->getTitleId()); - $copyObj->setCompany($this->getCompany()); - $copyObj->setFirstname($this->getFirstname()); - $copyObj->setLastname($this->getLastname()); - $copyObj->setAddress1($this->getAddress1()); - $copyObj->setAddress2($this->getAddress2()); - $copyObj->setAddress3($this->getAddress3()); - $copyObj->setZipcode($this->getZipcode()); - $copyObj->setCity($this->getCity()); - $copyObj->setCountryId($this->getCountryId()); - $copyObj->setCode($this->getCode()); - if ($makeNew) { - $copyObj->setNew(true); - } - } - - /** - * 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 \IciRelais\Model\AddressIcirelais 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 ChildCustomerTitle object. - * - * @param ChildCustomerTitle $v - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - * @throws PropelException - */ - public function setCustomerTitle(ChildCustomerTitle $v = null) - { - if ($v === null) { - $this->setTitleId(NULL); - } else { - $this->setTitleId($v->getId()); - } - - $this->aCustomerTitle = $v; - - // Add binding for other direction of this n:n relationship. - // If this object has already been added to the ChildCustomerTitle object, it will not be re-added. - if ($v !== null) { - $v->addAddressIcirelais($this); - } - - return $this; - } - - - /** - * Get the associated ChildCustomerTitle object - * - * @param ConnectionInterface $con Optional Connection object. - * @return ChildCustomerTitle The associated ChildCustomerTitle object. - * @throws PropelException - */ - public function getCustomerTitle(ConnectionInterface $con = null) - { - if ($this->aCustomerTitle === null && ($this->title_id !== null)) { - $this->aCustomerTitle = CustomerTitleQuery::create()->findPk($this->title_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->aCustomerTitle->addAddressIcirelaiss($this); - */ - } - - return $this->aCustomerTitle; - } - - /** - * Declares an association between this object and a ChildCountry object. - * - * @param ChildCountry $v - * @return \IciRelais\Model\AddressIcirelais The current object (for fluent API support) - * @throws PropelException - */ - public function setCountry(ChildCountry $v = null) - { - if ($v === null) { - $this->setCountryId(NULL); - } else { - $this->setCountryId($v->getId()); - } - - $this->aCountry = $v; - - // Add binding for other direction of this n:n relationship. - // If this object has already been added to the ChildCountry object, it will not be re-added. - if ($v !== null) { - $v->addAddressIcirelais($this); - } - - return $this; - } - - - /** - * Get the associated ChildCountry object - * - * @param ConnectionInterface $con Optional Connection object. - * @return ChildCountry The associated ChildCountry object. - * @throws PropelException - */ - public function getCountry(ConnectionInterface $con = null) - { - if ($this->aCountry === null && ($this->country_id !== null)) { - $this->aCountry = CountryQuery::create()->findPk($this->country_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->aCountry->addAddressIcirelaiss($this); - */ - } - - return $this->aCountry; - } - - /** - * Clears the current object and sets all attributes to their default values - */ - public function clear() - { - $this->id = null; - $this->title_id = null; - $this->company = null; - $this->firstname = null; - $this->lastname = null; - $this->address1 = null; - $this->address2 = null; - $this->address3 = null; - $this->zipcode = null; - $this->city = null; - $this->country_id = null; - $this->code = 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->aCustomerTitle = null; - $this->aCountry = null; - } - - /** - * Return the string representation of this object - * - * @return string - */ - public function __toString() - { - return (string) $this->exportTo(AddressIcirelaisTableMap::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/IciRelais/Model/Base/AddressIcirelaisQuery.php b/local/modules/IciRelais/Model/Base/AddressIcirelaisQuery.php deleted file mode 100644 index 323ec510..00000000 --- a/local/modules/IciRelais/Model/Base/AddressIcirelaisQuery.php +++ /dev/null @@ -1,895 +0,0 @@ -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 ChildAddressIcirelais|array|mixed the result, formatted by the current formatter - */ - public function findPk($key, $con = null) - { - if ($key === null) { - return null; - } - if ((null !== ($obj = AddressIcirelaisTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { - // the object is already in the instance pool - return $obj; - } - if ($con === null) { - $con = Propel::getServiceContainer()->getReadConnection(AddressIcirelaisTableMap::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 ChildAddressIcirelais A model object, or null if the key is not found - */ - protected function findPkSimple($key, $con) - { - $sql = 'SELECT ID, TITLE_ID, COMPANY, FIRSTNAME, LASTNAME, ADDRESS1, ADDRESS2, ADDRESS3, ZIPCODE, CITY, COUNTRY_ID, CODE FROM address_icirelais 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 ChildAddressIcirelais(); - $obj->hydrate($row); - AddressIcirelaisTableMap::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 ChildAddressIcirelais|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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByPrimaryKey($key) - { - return $this->addUsingAlias(AddressIcirelaisTableMap::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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByPrimaryKeys($keys) - { - return $this->addUsingAlias(AddressIcirelaisTableMap::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 ChildAddressIcirelaisQuery 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(AddressIcirelaisTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($id['max'])) { - $this->addUsingAlias(AddressIcirelaisTableMap::ID, $id['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::ID, $id, $comparison); - } - - /** - * Filter the query on the title_id column - * - * Example usage: - * - * $query->filterByTitleId(1234); // WHERE title_id = 1234 - * $query->filterByTitleId(array(12, 34)); // WHERE title_id IN (12, 34) - * $query->filterByTitleId(array('min' => 12)); // WHERE title_id > 12 - * - * - * @see filterByCustomerTitle() - * - * @param mixed $titleId 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByTitleId($titleId = null, $comparison = null) - { - if (is_array($titleId)) { - $useMinMax = false; - if (isset($titleId['min'])) { - $this->addUsingAlias(AddressIcirelaisTableMap::TITLE_ID, $titleId['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($titleId['max'])) { - $this->addUsingAlias(AddressIcirelaisTableMap::TITLE_ID, $titleId['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::TITLE_ID, $titleId, $comparison); - } - - /** - * Filter the query on the company column - * - * Example usage: - * - * $query->filterByCompany('fooValue'); // WHERE company = 'fooValue' - * $query->filterByCompany('%fooValue%'); // WHERE company LIKE '%fooValue%' - * - * - * @param string $company 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCompany($company = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($company)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $company)) { - $company = str_replace('*', '%', $company); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::COMPANY, $company, $comparison); - } - - /** - * Filter the query on the firstname column - * - * Example usage: - * - * $query->filterByFirstname('fooValue'); // WHERE firstname = 'fooValue' - * $query->filterByFirstname('%fooValue%'); // WHERE firstname LIKE '%fooValue%' - * - * - * @param string $firstname 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByFirstname($firstname = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($firstname)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $firstname)) { - $firstname = str_replace('*', '%', $firstname); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::FIRSTNAME, $firstname, $comparison); - } - - /** - * Filter the query on the lastname column - * - * Example usage: - * - * $query->filterByLastname('fooValue'); // WHERE lastname = 'fooValue' - * $query->filterByLastname('%fooValue%'); // WHERE lastname LIKE '%fooValue%' - * - * - * @param string $lastname 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByLastname($lastname = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($lastname)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $lastname)) { - $lastname = str_replace('*', '%', $lastname); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::LASTNAME, $lastname, $comparison); - } - - /** - * Filter the query on the address1 column - * - * Example usage: - * - * $query->filterByAddress1('fooValue'); // WHERE address1 = 'fooValue' - * $query->filterByAddress1('%fooValue%'); // WHERE address1 LIKE '%fooValue%' - * - * - * @param string $address1 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByAddress1($address1 = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($address1)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $address1)) { - $address1 = str_replace('*', '%', $address1); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::ADDRESS1, $address1, $comparison); - } - - /** - * Filter the query on the address2 column - * - * Example usage: - * - * $query->filterByAddress2('fooValue'); // WHERE address2 = 'fooValue' - * $query->filterByAddress2('%fooValue%'); // WHERE address2 LIKE '%fooValue%' - * - * - * @param string $address2 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByAddress2($address2 = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($address2)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $address2)) { - $address2 = str_replace('*', '%', $address2); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::ADDRESS2, $address2, $comparison); - } - - /** - * Filter the query on the address3 column - * - * Example usage: - * - * $query->filterByAddress3('fooValue'); // WHERE address3 = 'fooValue' - * $query->filterByAddress3('%fooValue%'); // WHERE address3 LIKE '%fooValue%' - * - * - * @param string $address3 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByAddress3($address3 = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($address3)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $address3)) { - $address3 = str_replace('*', '%', $address3); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::ADDRESS3, $address3, $comparison); - } - - /** - * Filter the query on the zipcode column - * - * Example usage: - * - * $query->filterByZipcode('fooValue'); // WHERE zipcode = 'fooValue' - * $query->filterByZipcode('%fooValue%'); // WHERE zipcode LIKE '%fooValue%' - * - * - * @param string $zipcode 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByZipcode($zipcode = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($zipcode)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $zipcode)) { - $zipcode = str_replace('*', '%', $zipcode); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::ZIPCODE, $zipcode, $comparison); - } - - /** - * Filter the query on the city column - * - * Example usage: - * - * $query->filterByCity('fooValue'); // WHERE city = 'fooValue' - * $query->filterByCity('%fooValue%'); // WHERE city LIKE '%fooValue%' - * - * - * @param string $city 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCity($city = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($city)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $city)) { - $city = str_replace('*', '%', $city); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::CITY, $city, $comparison); - } - - /** - * Filter the query on the country_id column - * - * Example usage: - * - * $query->filterByCountryId(1234); // WHERE country_id = 1234 - * $query->filterByCountryId(array(12, 34)); // WHERE country_id IN (12, 34) - * $query->filterByCountryId(array('min' => 12)); // WHERE country_id > 12 - * - * - * @see filterByCountry() - * - * @param mixed $countryId 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCountryId($countryId = null, $comparison = null) - { - if (is_array($countryId)) { - $useMinMax = false; - if (isset($countryId['min'])) { - $this->addUsingAlias(AddressIcirelaisTableMap::COUNTRY_ID, $countryId['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($countryId['max'])) { - $this->addUsingAlias(AddressIcirelaisTableMap::COUNTRY_ID, $countryId['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::COUNTRY_ID, $countryId, $comparison); - } - - /** - * Filter the query on the code column - * - * Example usage: - * - * $query->filterByCode('fooValue'); // WHERE code = 'fooValue' - * $query->filterByCode('%fooValue%'); // WHERE code LIKE '%fooValue%' - * - * - * @param string $code 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 ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCode($code = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($code)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $code)) { - $code = str_replace('*', '%', $code); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(AddressIcirelaisTableMap::CODE, $code, $comparison); - } - - /** - * Filter the query by a related \IciRelais\Model\Thelia\Model\CustomerTitle object - * - * @param \IciRelais\Model\Thelia\Model\CustomerTitle|ObjectCollection $customerTitle The related object(s) to use as filter - * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL - * - * @return ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCustomerTitle($customerTitle, $comparison = null) - { - if ($customerTitle instanceof \IciRelais\Model\Thelia\Model\CustomerTitle) { - return $this - ->addUsingAlias(AddressIcirelaisTableMap::TITLE_ID, $customerTitle->getId(), $comparison); - } elseif ($customerTitle instanceof ObjectCollection) { - if (null === $comparison) { - $comparison = Criteria::IN; - } - - return $this - ->addUsingAlias(AddressIcirelaisTableMap::TITLE_ID, $customerTitle->toKeyValue('PrimaryKey', 'Id'), $comparison); - } else { - throw new PropelException('filterByCustomerTitle() only accepts arguments of type \IciRelais\Model\Thelia\Model\CustomerTitle or Collection'); - } - } - - /** - * Adds a JOIN clause to the query using the CustomerTitle relation - * - * @param string $relationAlias optional alias for the relation - * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' - * - * @return ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function joinCustomerTitle($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - $tableMap = $this->getTableMap(); - $relationMap = $tableMap->getRelation('CustomerTitle'); - - // 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, 'CustomerTitle'); - } - - return $this; - } - - /** - * Use the CustomerTitle relation CustomerTitle 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 \IciRelais\Model\Thelia\Model\CustomerTitleQuery A secondary query class using the current class as primary query - */ - public function useCustomerTitleQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - return $this - ->joinCustomerTitle($relationAlias, $joinType) - ->useQuery($relationAlias ? $relationAlias : 'CustomerTitle', '\IciRelais\Model\Thelia\Model\CustomerTitleQuery'); - } - - /** - * Filter the query by a related \IciRelais\Model\Thelia\Model\Country object - * - * @param \IciRelais\Model\Thelia\Model\Country|ObjectCollection $country The related object(s) to use as filter - * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL - * - * @return ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCountry($country, $comparison = null) - { - if ($country instanceof \IciRelais\Model\Thelia\Model\Country) { - return $this - ->addUsingAlias(AddressIcirelaisTableMap::COUNTRY_ID, $country->getId(), $comparison); - } elseif ($country instanceof ObjectCollection) { - if (null === $comparison) { - $comparison = Criteria::IN; - } - - return $this - ->addUsingAlias(AddressIcirelaisTableMap::COUNTRY_ID, $country->toKeyValue('PrimaryKey', 'Id'), $comparison); - } else { - throw new PropelException('filterByCountry() only accepts arguments of type \IciRelais\Model\Thelia\Model\Country or Collection'); - } - } - - /** - * Adds a JOIN clause to the query using the Country relation - * - * @param string $relationAlias optional alias for the relation - * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' - * - * @return ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function joinCountry($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - $tableMap = $this->getTableMap(); - $relationMap = $tableMap->getRelation('Country'); - - // 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, 'Country'); - } - - return $this; - } - - /** - * Use the Country relation Country 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 \IciRelais\Model\Thelia\Model\CountryQuery A secondary query class using the current class as primary query - */ - public function useCountryQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - return $this - ->joinCountry($relationAlias, $joinType) - ->useQuery($relationAlias ? $relationAlias : 'Country', '\IciRelais\Model\Thelia\Model\CountryQuery'); - } - - /** - * Exclude object from result - * - * @param ChildAddressIcirelais $addressIcirelais Object to remove from the list of results - * - * @return ChildAddressIcirelaisQuery The current query, for fluid interface - */ - public function prune($addressIcirelais = null) - { - if ($addressIcirelais) { - $this->addUsingAlias(AddressIcirelaisTableMap::ID, $addressIcirelais->getId(), Criteria::NOT_EQUAL); - } - - return $this; - } - - /** - * Deletes all rows from the address_icirelais 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(AddressIcirelaisTableMap::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). - AddressIcirelaisTableMap::clearInstancePool(); - AddressIcirelaisTableMap::clearRelatedInstancePool(); - - $con->commit(); - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - - return $affectedRows; - } - - /** - * Performs a DELETE on the database, given a ChildAddressIcirelais or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or ChildAddressIcirelais 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(AddressIcirelaisTableMap::DATABASE_NAME); - } - - $criteria = $this; - - // Set the correct dbName - $criteria->setDbName(AddressIcirelaisTableMap::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(); - - AddressIcirelaisTableMap::removeInstanceFromPool($criteria); - - $affectedRows += ModelCriteria::delete($con); - AddressIcirelaisTableMap::clearRelatedInstancePool(); - $con->commit(); - - return $affectedRows; - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - } - -} // AddressIcirelaisQuery diff --git a/local/modules/IciRelais/Model/Base/IcirelaisFreeshippingQuery.php b/local/modules/IciRelais/Model/Base/IcirelaisFreeshippingQuery.php deleted file mode 100644 index ff1c3e71..00000000 --- a/local/modules/IciRelais/Model/Base/IcirelaisFreeshippingQuery.php +++ /dev/null @@ -1,532 +0,0 @@ -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 ChildIcirelaisFreeshipping|array|mixed the result, formatted by the current formatter - */ - public function findPk($key, $con = null) - { - if ($key === null) { - return null; - } - if ((null !== ($obj = IcirelaisFreeshippingTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { - // the object is already in the instance pool - return $obj; - } - if ($con === null) { - $con = Propel::getServiceContainer()->getReadConnection(IcirelaisFreeshippingTableMap::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 ChildIcirelaisFreeshipping A model object, or null if the key is not found - */ - protected function findPkSimple($key, $con) - { - $sql = 'SELECT ID, ACTIVE, CREATED_AT, UPDATED_AT FROM icirelais_freeshipping 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 ChildIcirelaisFreeshipping(); - $obj->hydrate($row); - IcirelaisFreeshippingTableMap::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 ChildIcirelaisFreeshipping|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 ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function filterByPrimaryKey($key) - { - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::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 ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function filterByPrimaryKeys($keys) - { - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::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 ChildIcirelaisFreeshippingQuery 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(IcirelaisFreeshippingTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($id['max'])) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::ID, $id['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::ID, $id, $comparison); - } - - /** - * Filter the query on the active column - * - * Example usage: - * - * $query->filterByActive(true); // WHERE active = true - * $query->filterByActive('yes'); // WHERE active = true - * - * - * @param boolean|string $active The value to use as filter. - * Non-boolean arguments are converted using the following rules: - * * 1, '1', 'true', 'on', and 'yes' are converted to boolean true - * * 0, '0', 'false', 'off', and 'no' are converted to boolean false - * Check on string values is case insensitive (so 'FaLsE' is seen as 'false'). - * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function filterByActive($active = null, $comparison = null) - { - if (is_string($active)) { - $active = in_array(strtolower($active), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true; - } - - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::ACTIVE, $active, $comparison); - } - - /** - * Filter the query on the created_at column - * - * Example usage: - * - * $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14' - * $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14' - * $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13' - * - * - * @param mixed $createdAt The value to use as filter. - * Values can be integers (unix timestamps), DateTime objects, or strings. - * Empty strings are treated as NULL. - * 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 ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function filterByCreatedAt($createdAt = null, $comparison = null) - { - if (is_array($createdAt)) { - $useMinMax = false; - if (isset($createdAt['min'])) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($createdAt['max'])) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::CREATED_AT, $createdAt, $comparison); - } - - /** - * Filter the query on the updated_at column - * - * Example usage: - * - * $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14' - * $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14' - * $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13' - * - * - * @param mixed $updatedAt The value to use as filter. - * Values can be integers (unix timestamps), DateTime objects, or strings. - * Empty strings are treated as NULL. - * 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 ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function filterByUpdatedAt($updatedAt = null, $comparison = null) - { - if (is_array($updatedAt)) { - $useMinMax = false; - if (isset($updatedAt['min'])) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($updatedAt['max'])) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::UPDATED_AT, $updatedAt, $comparison); - } - - /** - * Exclude object from result - * - * @param ChildIcirelaisFreeshipping $icirelaisFreeshipping Object to remove from the list of results - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function prune($icirelaisFreeshipping = null) - { - if ($icirelaisFreeshipping) { - $this->addUsingAlias(IcirelaisFreeshippingTableMap::ID, $icirelaisFreeshipping->getId(), Criteria::NOT_EQUAL); - } - - return $this; - } - - /** - * Deletes all rows from the icirelais_freeshipping 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(IcirelaisFreeshippingTableMap::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). - IcirelaisFreeshippingTableMap::clearInstancePool(); - IcirelaisFreeshippingTableMap::clearRelatedInstancePool(); - - $con->commit(); - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - - return $affectedRows; - } - - /** - * Performs a DELETE on the database, given a ChildIcirelaisFreeshipping or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or ChildIcirelaisFreeshipping 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(IcirelaisFreeshippingTableMap::DATABASE_NAME); - } - - $criteria = $this; - - // Set the correct dbName - $criteria->setDbName(IcirelaisFreeshippingTableMap::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(); - - IcirelaisFreeshippingTableMap::removeInstanceFromPool($criteria); - - $affectedRows += ModelCriteria::delete($con); - IcirelaisFreeshippingTableMap::clearRelatedInstancePool(); - $con->commit(); - - return $affectedRows; - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - } - - // timestampable behavior - - /** - * Filter by the latest updated - * - * @param int $nbDays Maximum age of the latest update in days - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function recentlyUpdated($nbDays = 7) - { - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL); - } - - /** - * Filter by the latest created - * - * @param int $nbDays Maximum age of in days - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function recentlyCreated($nbDays = 7) - { - return $this->addUsingAlias(IcirelaisFreeshippingTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL); - } - - /** - * Order by update date desc - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function lastUpdatedFirst() - { - return $this->addDescendingOrderByColumn(IcirelaisFreeshippingTableMap::UPDATED_AT); - } - - /** - * Order by update date asc - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function firstUpdatedFirst() - { - return $this->addAscendingOrderByColumn(IcirelaisFreeshippingTableMap::UPDATED_AT); - } - - /** - * Order by create date desc - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function lastCreatedFirst() - { - return $this->addDescendingOrderByColumn(IcirelaisFreeshippingTableMap::CREATED_AT); - } - - /** - * Order by create date asc - * - * @return ChildIcirelaisFreeshippingQuery The current query, for fluid interface - */ - public function firstCreatedFirst() - { - return $this->addAscendingOrderByColumn(IcirelaisFreeshippingTableMap::CREATED_AT); - } - -} // IcirelaisFreeshippingQuery diff --git a/local/modules/IciRelais/Model/Base/OrderAddressIcirelais.php b/local/modules/IciRelais/Model/Base/OrderAddressIcirelais.php deleted file mode 100644 index 42a4f7d3..00000000 --- a/local/modules/IciRelais/Model/Base/OrderAddressIcirelais.php +++ /dev/null @@ -1,1167 +0,0 @@ -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 OrderAddressIcirelais instance. If - * obj is an instance of OrderAddressIcirelais, delegates to - * equals(OrderAddressIcirelais). 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 OrderAddressIcirelais 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 OrderAddressIcirelais 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 [code] column value. - * - * @return string - */ - public function getCode() - { - return $this->code; - } - - /** - * Set the value of [id] column. - * - * @param int $v new value - * @return \IciRelais\Model\OrderAddressIcirelais 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[OrderAddressIcirelaisTableMap::ID] = true; - } - - if ($this->aOrderAddress !== null && $this->aOrderAddress->getId() !== $v) { - $this->aOrderAddress = null; - } - - return $this; - } // setId() - - /** - * Set the value of [code] column. - * - * @param string $v new value - * @return \IciRelais\Model\OrderAddressIcirelais The current object (for fluent API support) - */ - public function setCode($v) - { - if ($v !== null) { - $v = (string) $v; - } - - if ($this->code !== $v) { - $this->code = $v; - $this->modifiedColumns[OrderAddressIcirelaisTableMap::CODE] = true; - } - - return $this; - } // setCode() - - /** - * 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 : OrderAddressIcirelaisTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; - $this->id = (null !== $col) ? (int) $col : null; - - $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : OrderAddressIcirelaisTableMap::translateFieldName('Code', TableMap::TYPE_PHPNAME, $indexType)]; - $this->code = (null !== $col) ? (string) $col : null; - $this->resetModified(); - - $this->setNew(false); - - if ($rehydrate) { - $this->ensureConsistency(); - } - - return $startcol + 2; // 2 = OrderAddressIcirelaisTableMap::NUM_HYDRATE_COLUMNS. - - } catch (Exception $e) { - throw new PropelException("Error populating \IciRelais\Model\OrderAddressIcirelais 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->aOrderAddress !== null && $this->id !== $this->aOrderAddress->getId()) { - $this->aOrderAddress = 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - } - - // We don't need to alter the object instance pool; we're just modifying this instance - // already in the pool. - - $dataFetcher = ChildOrderAddressIcirelaisQuery::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->aOrderAddress = null; - } // if (deep) - } - - /** - * Removes this object from datastore and sets delete attribute. - * - * @param ConnectionInterface $con - * @return void - * @throws PropelException - * @see OrderAddressIcirelais::setDeleted() - * @see OrderAddressIcirelais::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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - } - - $con->beginTransaction(); - try { - $deleteQuery = ChildOrderAddressIcirelaisQuery::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(OrderAddressIcirelaisTableMap::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); - OrderAddressIcirelaisTableMap::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->aOrderAddress !== null) { - if ($this->aOrderAddress->isModified() || $this->aOrderAddress->isNew()) { - $affectedRows += $this->aOrderAddress->save($con); - } - $this->setOrderAddress($this->aOrderAddress); - } - - 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; - - // check the columns in natural order for more readable SQL queries - if ($this->isColumnModified(OrderAddressIcirelaisTableMap::ID)) { - $modifiedColumns[':p' . $index++] = 'ID'; - } - if ($this->isColumnModified(OrderAddressIcirelaisTableMap::CODE)) { - $modifiedColumns[':p' . $index++] = 'CODE'; - } - - $sql = sprintf( - 'INSERT INTO order_address_icirelais (%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 'CODE': - $stmt->bindValue($identifier, $this->code, 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); - } - - $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 = OrderAddressIcirelaisTableMap::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->getCode(); - 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['OrderAddressIcirelais'][$this->getPrimaryKey()])) { - return '*RECURSION*'; - } - $alreadyDumpedObjects['OrderAddressIcirelais'][$this->getPrimaryKey()] = true; - $keys = OrderAddressIcirelaisTableMap::getFieldNames($keyType); - $result = array( - $keys[0] => $this->getId(), - $keys[1] => $this->getCode(), - ); - $virtualColumns = $this->virtualColumns; - foreach ($virtualColumns as $key => $virtualColumn) { - $result[$key] = $virtualColumn; - } - - if ($includeForeignObjects) { - if (null !== $this->aOrderAddress) { - $result['OrderAddress'] = $this->aOrderAddress->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 = OrderAddressIcirelaisTableMap::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->setCode($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 = OrderAddressIcirelaisTableMap::getFieldNames($keyType); - - if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); - if (array_key_exists($keys[1], $arr)) $this->setCode($arr[$keys[1]]); - } - - /** - * 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - - if ($this->isColumnModified(OrderAddressIcirelaisTableMap::ID)) $criteria->add(OrderAddressIcirelaisTableMap::ID, $this->id); - if ($this->isColumnModified(OrderAddressIcirelaisTableMap::CODE)) $criteria->add(OrderAddressIcirelaisTableMap::CODE, $this->code); - 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - $criteria->add(OrderAddressIcirelaisTableMap::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 \IciRelais\Model\OrderAddressIcirelais (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->setId($this->getId()); - $copyObj->setCode($this->getCode()); - if ($makeNew) { - $copyObj->setNew(true); - } - } - - /** - * 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 \IciRelais\Model\OrderAddressIcirelais 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 ChildOrderAddress object. - * - * @param ChildOrderAddress $v - * @return \IciRelais\Model\OrderAddressIcirelais The current object (for fluent API support) - * @throws PropelException - */ - public function setOrderAddress(ChildOrderAddress $v = null) - { - if ($v === null) { - $this->setId(NULL); - } else { - $this->setId($v->getId()); - } - - $this->aOrderAddress = $v; - - // Add binding for other direction of this 1:1 relationship. - if ($v !== null) { - $v->setOrderAddressIcirelais($this); - } - - return $this; - } - - - /** - * Get the associated ChildOrderAddress object - * - * @param ConnectionInterface $con Optional Connection object. - * @return ChildOrderAddress The associated ChildOrderAddress object. - * @throws PropelException - */ - public function getOrderAddress(ConnectionInterface $con = null) - { - if ($this->aOrderAddress === null && ($this->id !== null)) { - $this->aOrderAddress = OrderAddressQuery::create()->findPk($this->id, $con); - // Because this foreign key represents a one-to-one relationship, we will create a bi-directional association. - $this->aOrderAddress->setOrderAddressIcirelais($this); - } - - return $this->aOrderAddress; - } - - /** - * Clears the current object and sets all attributes to their default values - */ - public function clear() - { - $this->id = null; - $this->code = 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->aOrderAddress = null; - } - - /** - * Return the string representation of this object - * - * @return string - */ - public function __toString() - { - return (string) $this->exportTo(OrderAddressIcirelaisTableMap::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/IciRelais/Model/Base/OrderAddressIcirelaisQuery.php b/local/modules/IciRelais/Model/Base/OrderAddressIcirelaisQuery.php deleted file mode 100644 index 18245824..00000000 --- a/local/modules/IciRelais/Model/Base/OrderAddressIcirelaisQuery.php +++ /dev/null @@ -1,459 +0,0 @@ -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 ChildOrderAddressIcirelais|array|mixed the result, formatted by the current formatter - */ - public function findPk($key, $con = null) - { - if ($key === null) { - return null; - } - if ((null !== ($obj = OrderAddressIcirelaisTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { - // the object is already in the instance pool - return $obj; - } - if ($con === null) { - $con = Propel::getServiceContainer()->getReadConnection(OrderAddressIcirelaisTableMap::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 ChildOrderAddressIcirelais A model object, or null if the key is not found - */ - protected function findPkSimple($key, $con) - { - $sql = 'SELECT ID, CODE FROM order_address_icirelais 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 ChildOrderAddressIcirelais(); - $obj->hydrate($row); - OrderAddressIcirelaisTableMap::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 ChildOrderAddressIcirelais|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 ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByPrimaryKey($key) - { - return $this->addUsingAlias(OrderAddressIcirelaisTableMap::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 ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByPrimaryKeys($keys) - { - return $this->addUsingAlias(OrderAddressIcirelaisTableMap::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 - * - * - * @see filterByOrderAddress() - * - * @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 ChildOrderAddressIcirelaisQuery 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(OrderAddressIcirelaisTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); - $useMinMax = true; - } - if (isset($id['max'])) { - $this->addUsingAlias(OrderAddressIcirelaisTableMap::ID, $id['max'], Criteria::LESS_EQUAL); - $useMinMax = true; - } - if ($useMinMax) { - return $this; - } - if (null === $comparison) { - $comparison = Criteria::IN; - } - } - - return $this->addUsingAlias(OrderAddressIcirelaisTableMap::ID, $id, $comparison); - } - - /** - * Filter the query on the code column - * - * Example usage: - * - * $query->filterByCode('fooValue'); // WHERE code = 'fooValue' - * $query->filterByCode('%fooValue%'); // WHERE code LIKE '%fooValue%' - * - * - * @param string $code 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 ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByCode($code = null, $comparison = null) - { - if (null === $comparison) { - if (is_array($code)) { - $comparison = Criteria::IN; - } elseif (preg_match('/[\%\*]/', $code)) { - $code = str_replace('*', '%', $code); - $comparison = Criteria::LIKE; - } - } - - return $this->addUsingAlias(OrderAddressIcirelaisTableMap::CODE, $code, $comparison); - } - - /** - * Filter the query by a related \IciRelais\Model\Thelia\Model\OrderAddress object - * - * @param \IciRelais\Model\Thelia\Model\OrderAddress|ObjectCollection $orderAddress The related object(s) to use as filter - * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL - * - * @return ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function filterByOrderAddress($orderAddress, $comparison = null) - { - if ($orderAddress instanceof \IciRelais\Model\Thelia\Model\OrderAddress) { - return $this - ->addUsingAlias(OrderAddressIcirelaisTableMap::ID, $orderAddress->getId(), $comparison); - } elseif ($orderAddress instanceof ObjectCollection) { - if (null === $comparison) { - $comparison = Criteria::IN; - } - - return $this - ->addUsingAlias(OrderAddressIcirelaisTableMap::ID, $orderAddress->toKeyValue('PrimaryKey', 'Id'), $comparison); - } else { - throw new PropelException('filterByOrderAddress() only accepts arguments of type \IciRelais\Model\Thelia\Model\OrderAddress or Collection'); - } - } - - /** - * Adds a JOIN clause to the query using the OrderAddress relation - * - * @param string $relationAlias optional alias for the relation - * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' - * - * @return ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function joinOrderAddress($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - $tableMap = $this->getTableMap(); - $relationMap = $tableMap->getRelation('OrderAddress'); - - // 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, 'OrderAddress'); - } - - return $this; - } - - /** - * Use the OrderAddress relation OrderAddress 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 \IciRelais\Model\Thelia\Model\OrderAddressQuery A secondary query class using the current class as primary query - */ - public function useOrderAddressQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) - { - return $this - ->joinOrderAddress($relationAlias, $joinType) - ->useQuery($relationAlias ? $relationAlias : 'OrderAddress', '\IciRelais\Model\Thelia\Model\OrderAddressQuery'); - } - - /** - * Exclude object from result - * - * @param ChildOrderAddressIcirelais $orderAddressIcirelais Object to remove from the list of results - * - * @return ChildOrderAddressIcirelaisQuery The current query, for fluid interface - */ - public function prune($orderAddressIcirelais = null) - { - if ($orderAddressIcirelais) { - $this->addUsingAlias(OrderAddressIcirelaisTableMap::ID, $orderAddressIcirelais->getId(), Criteria::NOT_EQUAL); - } - - return $this; - } - - /** - * Deletes all rows from the order_address_icirelais 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(OrderAddressIcirelaisTableMap::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). - OrderAddressIcirelaisTableMap::clearInstancePool(); - OrderAddressIcirelaisTableMap::clearRelatedInstancePool(); - - $con->commit(); - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - - return $affectedRows; - } - - /** - * Performs a DELETE on the database, given a ChildOrderAddressIcirelais or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or ChildOrderAddressIcirelais 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - } - - $criteria = $this; - - // Set the correct dbName - $criteria->setDbName(OrderAddressIcirelaisTableMap::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(); - - OrderAddressIcirelaisTableMap::removeInstanceFromPool($criteria); - - $affectedRows += ModelCriteria::delete($con); - OrderAddressIcirelaisTableMap::clearRelatedInstancePool(); - $con->commit(); - - return $affectedRows; - } catch (PropelException $e) { - $con->rollBack(); - throw $e; - } - } - -} // OrderAddressIcirelaisQuery diff --git a/local/modules/IciRelais/Model/IcirelaisFreeshipping.php b/local/modules/IciRelais/Model/IcirelaisFreeshipping.php deleted file mode 100644 index 90a165e8..00000000 --- a/local/modules/IciRelais/Model/IcirelaisFreeshipping.php +++ /dev/null @@ -1,10 +0,0 @@ -orderById('desc')->findOne()->getActive(); - } -} // IcirelaisFreeshippingQuery diff --git a/local/modules/IciRelais/Model/Map/AddressIcirelaisTableMap.php b/local/modules/IciRelais/Model/Map/AddressIcirelaisTableMap.php deleted file mode 100644 index e7d47e10..00000000 --- a/local/modules/IciRelais/Model/Map/AddressIcirelaisTableMap.php +++ /dev/null @@ -1,485 +0,0 @@ - array('Id', 'TitleId', 'Company', 'Firstname', 'Lastname', 'Address1', 'Address2', 'Address3', 'Zipcode', 'City', 'CountryId', 'Code', ), - self::TYPE_STUDLYPHPNAME => array('id', 'titleId', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'countryId', 'code', ), - self::TYPE_COLNAME => array(AddressIcirelaisTableMap::ID, AddressIcirelaisTableMap::TITLE_ID, AddressIcirelaisTableMap::COMPANY, AddressIcirelaisTableMap::FIRSTNAME, AddressIcirelaisTableMap::LASTNAME, AddressIcirelaisTableMap::ADDRESS1, AddressIcirelaisTableMap::ADDRESS2, AddressIcirelaisTableMap::ADDRESS3, AddressIcirelaisTableMap::ZIPCODE, AddressIcirelaisTableMap::CITY, AddressIcirelaisTableMap::COUNTRY_ID, AddressIcirelaisTableMap::CODE, ), - self::TYPE_RAW_COLNAME => array('ID', 'TITLE_ID', 'COMPANY', 'FIRSTNAME', 'LASTNAME', 'ADDRESS1', 'ADDRESS2', 'ADDRESS3', 'ZIPCODE', 'CITY', 'COUNTRY_ID', 'CODE', ), - self::TYPE_FIELDNAME => array('id', 'title_id', 'company', 'firstname', 'lastname', 'address1', 'address2', 'address3', 'zipcode', 'city', 'country_id', 'code', ), - self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ) - ); - - /** - * 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, 'TitleId' => 1, 'Company' => 2, 'Firstname' => 3, 'Lastname' => 4, 'Address1' => 5, 'Address2' => 6, 'Address3' => 7, 'Zipcode' => 8, 'City' => 9, 'CountryId' => 10, 'Code' => 11, ), - self::TYPE_STUDLYPHPNAME => array('id' => 0, 'titleId' => 1, 'company' => 2, 'firstname' => 3, 'lastname' => 4, 'address1' => 5, 'address2' => 6, 'address3' => 7, 'zipcode' => 8, 'city' => 9, 'countryId' => 10, 'code' => 11, ), - self::TYPE_COLNAME => array(AddressIcirelaisTableMap::ID => 0, AddressIcirelaisTableMap::TITLE_ID => 1, AddressIcirelaisTableMap::COMPANY => 2, AddressIcirelaisTableMap::FIRSTNAME => 3, AddressIcirelaisTableMap::LASTNAME => 4, AddressIcirelaisTableMap::ADDRESS1 => 5, AddressIcirelaisTableMap::ADDRESS2 => 6, AddressIcirelaisTableMap::ADDRESS3 => 7, AddressIcirelaisTableMap::ZIPCODE => 8, AddressIcirelaisTableMap::CITY => 9, AddressIcirelaisTableMap::COUNTRY_ID => 10, AddressIcirelaisTableMap::CODE => 11, ), - self::TYPE_RAW_COLNAME => array('ID' => 0, 'TITLE_ID' => 1, 'COMPANY' => 2, 'FIRSTNAME' => 3, 'LASTNAME' => 4, 'ADDRESS1' => 5, 'ADDRESS2' => 6, 'ADDRESS3' => 7, 'ZIPCODE' => 8, 'CITY' => 9, 'COUNTRY_ID' => 10, 'CODE' => 11, ), - self::TYPE_FIELDNAME => array('id' => 0, 'title_id' => 1, 'company' => 2, 'firstname' => 3, 'lastname' => 4, 'address1' => 5, 'address2' => 6, 'address3' => 7, 'zipcode' => 8, 'city' => 9, 'country_id' => 10, 'code' => 11, ), - self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ) - ); - - /** - * 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('address_icirelais'); - $this->setPhpName('AddressIcirelais'); - $this->setClassName('\\IciRelais\\Model\\AddressIcirelais'); - $this->setPackage('IciRelais.Model'); - $this->setUseIdGenerator(false); - // columns - $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); - $this->addForeignKey('TITLE_ID', 'TitleId', 'INTEGER', 'customer_title', 'ID', true, null, null); - $this->addColumn('COMPANY', 'Company', 'VARCHAR', false, 255, null); - $this->addColumn('FIRSTNAME', 'Firstname', 'VARCHAR', true, 255, null); - $this->addColumn('LASTNAME', 'Lastname', 'VARCHAR', true, 255, null); - $this->addColumn('ADDRESS1', 'Address1', 'VARCHAR', true, 255, null); - $this->addColumn('ADDRESS2', 'Address2', 'VARCHAR', true, 255, null); - $this->addColumn('ADDRESS3', 'Address3', 'VARCHAR', true, 255, null); - $this->addColumn('ZIPCODE', 'Zipcode', 'VARCHAR', true, 10, null); - $this->addColumn('CITY', 'City', 'VARCHAR', true, 255, null); - $this->addForeignKey('COUNTRY_ID', 'CountryId', 'INTEGER', 'country', 'ID', true, null, null); - $this->addColumn('CODE', 'Code', 'VARCHAR', true, 10, null); - } // initialize() - - /** - * Build the RelationMap objects for this table relationships - */ - public function buildRelations() - { - $this->addRelation('CustomerTitle', '\\IciRelais\\Model\\Thelia\\Model\\CustomerTitle', RelationMap::MANY_TO_ONE, array('title_id' => 'id', ), 'RESTRICT', 'RESTRICT'); - $this->addRelation('Country', '\\IciRelais\\Model\\Thelia\\Model\\Country', RelationMap::MANY_TO_ONE, array('country_id' => 'id', ), 'RESTRICT', '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 ? AddressIcirelaisTableMap::CLASS_DEFAULT : AddressIcirelaisTableMap::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 (AddressIcirelais object, last column rank) - */ - public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) - { - $key = AddressIcirelaisTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); - if (null !== ($obj = AddressIcirelaisTableMap::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 + AddressIcirelaisTableMap::NUM_HYDRATE_COLUMNS; - } else { - $cls = AddressIcirelaisTableMap::OM_CLASS; - $obj = new $cls(); - $col = $obj->hydrate($row, $offset, false, $indexType); - AddressIcirelaisTableMap::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 = AddressIcirelaisTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); - if (null !== ($obj = AddressIcirelaisTableMap::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; - AddressIcirelaisTableMap::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(AddressIcirelaisTableMap::ID); - $criteria->addSelectColumn(AddressIcirelaisTableMap::TITLE_ID); - $criteria->addSelectColumn(AddressIcirelaisTableMap::COMPANY); - $criteria->addSelectColumn(AddressIcirelaisTableMap::FIRSTNAME); - $criteria->addSelectColumn(AddressIcirelaisTableMap::LASTNAME); - $criteria->addSelectColumn(AddressIcirelaisTableMap::ADDRESS1); - $criteria->addSelectColumn(AddressIcirelaisTableMap::ADDRESS2); - $criteria->addSelectColumn(AddressIcirelaisTableMap::ADDRESS3); - $criteria->addSelectColumn(AddressIcirelaisTableMap::ZIPCODE); - $criteria->addSelectColumn(AddressIcirelaisTableMap::CITY); - $criteria->addSelectColumn(AddressIcirelaisTableMap::COUNTRY_ID); - $criteria->addSelectColumn(AddressIcirelaisTableMap::CODE); - } else { - $criteria->addSelectColumn($alias . '.ID'); - $criteria->addSelectColumn($alias . '.TITLE_ID'); - $criteria->addSelectColumn($alias . '.COMPANY'); - $criteria->addSelectColumn($alias . '.FIRSTNAME'); - $criteria->addSelectColumn($alias . '.LASTNAME'); - $criteria->addSelectColumn($alias . '.ADDRESS1'); - $criteria->addSelectColumn($alias . '.ADDRESS2'); - $criteria->addSelectColumn($alias . '.ADDRESS3'); - $criteria->addSelectColumn($alias . '.ZIPCODE'); - $criteria->addSelectColumn($alias . '.CITY'); - $criteria->addSelectColumn($alias . '.COUNTRY_ID'); - $criteria->addSelectColumn($alias . '.CODE'); - } - } - - /** - * 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(AddressIcirelaisTableMap::DATABASE_NAME)->getTable(AddressIcirelaisTableMap::TABLE_NAME); - } - - /** - * Add a TableMap instance to the database for this tableMap class. - */ - public static function buildTableMap() - { - $dbMap = Propel::getServiceContainer()->getDatabaseMap(AddressIcirelaisTableMap::DATABASE_NAME); - if (!$dbMap->hasTable(AddressIcirelaisTableMap::TABLE_NAME)) { - $dbMap->addTableObject(new AddressIcirelaisTableMap()); - } - } - - /** - * Performs a DELETE on the database, given a AddressIcirelais or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or AddressIcirelais 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(AddressIcirelaisTableMap::DATABASE_NAME); - } - - if ($values instanceof Criteria) { - // rename for clarity - $criteria = $values; - } elseif ($values instanceof \IciRelais\Model\AddressIcirelais) { // 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(AddressIcirelaisTableMap::DATABASE_NAME); - $criteria->add(AddressIcirelaisTableMap::ID, (array) $values, Criteria::IN); - } - - $query = AddressIcirelaisQuery::create()->mergeWith($criteria); - - if ($values instanceof Criteria) { AddressIcirelaisTableMap::clearInstancePool(); - } elseif (!is_object($values)) { // it's a primary key, or an array of pks - foreach ((array) $values as $singleval) { AddressIcirelaisTableMap::removeInstanceFromPool($singleval); - } - } - - return $query->delete($con); - } - - /** - * Deletes all rows from the address_icirelais 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 AddressIcirelaisQuery::create()->doDeleteAll($con); - } - - /** - * Performs an INSERT on the database, given a AddressIcirelais or Criteria object. - * - * @param mixed $criteria Criteria or AddressIcirelais 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(AddressIcirelaisTableMap::DATABASE_NAME); - } - - if ($criteria instanceof Criteria) { - $criteria = clone $criteria; // rename for clarity - } else { - $criteria = $criteria->buildCriteria(); // build Criteria from AddressIcirelais object - } - - // Set the correct dbName - $query = AddressIcirelaisQuery::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; - } - -} // AddressIcirelaisTableMap -// This is the static code needed to register the TableMap for this table with the main Propel class. -// -AddressIcirelaisTableMap::buildTableMap(); diff --git a/local/modules/IciRelais/Model/Map/OrderAddressIcirelaisTableMap.php b/local/modules/IciRelais/Model/Map/OrderAddressIcirelaisTableMap.php deleted file mode 100644 index 528da48d..00000000 --- a/local/modules/IciRelais/Model/Map/OrderAddressIcirelaisTableMap.php +++ /dev/null @@ -1,404 +0,0 @@ - array('Id', 'Code', ), - self::TYPE_STUDLYPHPNAME => array('id', 'code', ), - self::TYPE_COLNAME => array(OrderAddressIcirelaisTableMap::ID, OrderAddressIcirelaisTableMap::CODE, ), - self::TYPE_RAW_COLNAME => array('ID', 'CODE', ), - self::TYPE_FIELDNAME => array('id', 'code', ), - self::TYPE_NUM => array(0, 1, ) - ); - - /** - * 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, 'Code' => 1, ), - self::TYPE_STUDLYPHPNAME => array('id' => 0, 'code' => 1, ), - self::TYPE_COLNAME => array(OrderAddressIcirelaisTableMap::ID => 0, OrderAddressIcirelaisTableMap::CODE => 1, ), - self::TYPE_RAW_COLNAME => array('ID' => 0, 'CODE' => 1, ), - self::TYPE_FIELDNAME => array('id' => 0, 'code' => 1, ), - self::TYPE_NUM => array(0, 1, ) - ); - - /** - * 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('order_address_icirelais'); - $this->setPhpName('OrderAddressIcirelais'); - $this->setClassName('\\IciRelais\\Model\\OrderAddressIcirelais'); - $this->setPackage('IciRelais.Model'); - $this->setUseIdGenerator(false); - // columns - $this->addForeignPrimaryKey('ID', 'Id', 'INTEGER' , 'order_address', 'ID', true, null, null); - $this->addColumn('CODE', 'Code', 'VARCHAR', true, 10, null); - } // initialize() - - /** - * Build the RelationMap objects for this table relationships - */ - public function buildRelations() - { - $this->addRelation('OrderAddress', '\\IciRelais\\Model\\Thelia\\Model\\OrderAddress', RelationMap::MANY_TO_ONE, array('id' => 'id', ), 'CASCADE', 'CASCADE'); - } // 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 ? OrderAddressIcirelaisTableMap::CLASS_DEFAULT : OrderAddressIcirelaisTableMap::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 (OrderAddressIcirelais object, last column rank) - */ - public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) - { - $key = OrderAddressIcirelaisTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); - if (null !== ($obj = OrderAddressIcirelaisTableMap::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 + OrderAddressIcirelaisTableMap::NUM_HYDRATE_COLUMNS; - } else { - $cls = OrderAddressIcirelaisTableMap::OM_CLASS; - $obj = new $cls(); - $col = $obj->hydrate($row, $offset, false, $indexType); - OrderAddressIcirelaisTableMap::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 = OrderAddressIcirelaisTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); - if (null !== ($obj = OrderAddressIcirelaisTableMap::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; - OrderAddressIcirelaisTableMap::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(OrderAddressIcirelaisTableMap::ID); - $criteria->addSelectColumn(OrderAddressIcirelaisTableMap::CODE); - } else { - $criteria->addSelectColumn($alias . '.ID'); - $criteria->addSelectColumn($alias . '.CODE'); - } - } - - /** - * 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(OrderAddressIcirelaisTableMap::DATABASE_NAME)->getTable(OrderAddressIcirelaisTableMap::TABLE_NAME); - } - - /** - * Add a TableMap instance to the database for this tableMap class. - */ - public static function buildTableMap() - { - $dbMap = Propel::getServiceContainer()->getDatabaseMap(OrderAddressIcirelaisTableMap::DATABASE_NAME); - if (!$dbMap->hasTable(OrderAddressIcirelaisTableMap::TABLE_NAME)) { - $dbMap->addTableObject(new OrderAddressIcirelaisTableMap()); - } - } - - /** - * Performs a DELETE on the database, given a OrderAddressIcirelais or Criteria object OR a primary key value. - * - * @param mixed $values Criteria or OrderAddressIcirelais 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - } - - if ($values instanceof Criteria) { - // rename for clarity - $criteria = $values; - } elseif ($values instanceof \IciRelais\Model\OrderAddressIcirelais) { // 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - $criteria->add(OrderAddressIcirelaisTableMap::ID, (array) $values, Criteria::IN); - } - - $query = OrderAddressIcirelaisQuery::create()->mergeWith($criteria); - - if ($values instanceof Criteria) { OrderAddressIcirelaisTableMap::clearInstancePool(); - } elseif (!is_object($values)) { // it's a primary key, or an array of pks - foreach ((array) $values as $singleval) { OrderAddressIcirelaisTableMap::removeInstanceFromPool($singleval); - } - } - - return $query->delete($con); - } - - /** - * Deletes all rows from the order_address_icirelais 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 OrderAddressIcirelaisQuery::create()->doDeleteAll($con); - } - - /** - * Performs an INSERT on the database, given a OrderAddressIcirelais or Criteria object. - * - * @param mixed $criteria Criteria or OrderAddressIcirelais 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(OrderAddressIcirelaisTableMap::DATABASE_NAME); - } - - if ($criteria instanceof Criteria) { - $criteria = clone $criteria; // rename for clarity - } else { - $criteria = $criteria->buildCriteria(); // build Criteria from OrderAddressIcirelais object - } - - // Set the correct dbName - $query = OrderAddressIcirelaisQuery::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; - } - -} // OrderAddressIcirelaisTableMap -// This is the static code needed to register the TableMap for this table with the main Propel class. -// -OrderAddressIcirelaisTableMap::buildTableMap(); diff --git a/local/modules/IciRelais/Model/OrderAddressIcirelais.php b/local/modules/IciRelais/Model/OrderAddressIcirelais.php deleted file mode 100644 index 22fa3eaf..00000000 --- a/local/modules/IciRelais/Model/OrderAddressIcirelais.php +++ /dev/null @@ -1,10 +0,0 @@ - - -=== SUMMARY === - -fr_FR: -I) Installation -II) Utilisation -III) Intégration - -en_US: -I) Install notes -II) How to use -III) Integration - - -=== fr_FR === - -I) Installation ---------------- -L'installation du module IciRelais se fait de la même manière que les autres, vous pouvez soit importer directement le zip dans le back office, -soit le décompresser dans /local/modules. -Un exemple d'intégration dans le thème par défault de Thelia est fourni dans le dossier templates, il vous suffit de copier les fichiers: - - /templates/frontOffice/default/ajax/order-delivery-module-list.html - - /templates/frontOffice/default/order-delivery.html - - /templates/frontOffice/default/order-invoice.html -dans le dossier du template en suivant la même arborescence. - -Il nous vous reste plus qu'à activer le module et à associer vos zones de livraison. - -II) Utilisation ---------------- -Une page de configuration est mise à votre disposition pour vous permettre d'effectuer deux tâches: - - exporter un fichier EXAPRINT (export.dat) contenant les informations sur les livraisons effectuées via IciRelais - - configurer les tranches de prix des livraisons par IciRelais - -Pour vous y rendre, il vous suffit d'aller dans le back Office, onglet "Modules" et de cliquer sur "Configurer" sur la ligne du module IciRelais. -Pour exporter un fichier EXAPRINT, il faut renseigner tous les champs présents dans le formulaire. - -III) Intégration ----------------- -Pour l'exemple d'intégration, j'ai utilisé une google map, ceci n'est pas nécessaire mais préférable. -En effet, le module n'interagit pas avec pendant la commande. -Une fois le module activé, il devient néanmoins indispensable de transmettre une variable $_POST['pr_code'] dans le formulaire "thelia.order.delivery", -sinon, vous ne pourrez plus passer à l'étape 3 ( order-invoice ). -De plus, une boucle "delivery.ici" est disponible et doit remplacer la boucle "delivery" dans order-delivery-module-list.html, -les deux sont semblable, mais delivery.ici possède une variable en plus, qui permet de savoir si le module est ou non IciRelais ( ce qui permet une intégration spécifique -de la ligne IciRelais). -La variable "pr_code" doit contenir l'identifiant du point relais choisi par l'utilisateur. -Une boucle vous est fournie pour obtenir les 10 points relais les plus proches de l'adresse par défault de l'utilisateur: icirelais.relais.around -Sinon, une route est disponible pour obtenir 10 points relais dans une ville: /module/icirelais/{ville}/{code postal} -Cette route pointe vers le controlleur "SearchCityController" qui génère un fichier json, que vous pouvez utiliser, par exemple, avec jquery/ajax. - -Pour afficher l'adresse du point relais en adresse de livraison sur la page order-invoice.html, -il vous suffit de replacer le type de la boucle nommée "delivery-address" en address.ici, à la place de "delivery" - -Pour rajouter l'adresse de suivi du colis dans le mail de confirmation de la commande, une boucle est mise à votre disposition: "icirelais.urltracking" -elle prend un argument ref, qui est la référence de la commande, et une sortie $URL. -Si l'url ne peut être générée, elle ne renvoie rien. -On peut donc l'intégrer de la manière suivante: -{loop name="tracking" type="icirelais.urltracking" ref=$REF} -Vous pouvez suivre votre colis ici -{/loop} -=== en_US === - -I) Install notes ---------------- -The install process of IciRelais module is the same than the other modules, you can import it directly from the back office, -or unzip it in /local/modules. -An integration example in Thelia's default theme is provided in templates directory, you only have to copy those files: - - /templates/frontOffice/default/ajax/order-delivery-module-list.html - - /templates/frontOffice/default/order-delivery.html - - /templates/frontOffice/default/order-invoice.html -respectively in the directory of the template. - -Then you can activate IciRelais module and configure you shipping zones. - -II) How to use ---------------- -A configuration page is provided with the module, so you can: - - export an EXAPRINT file (export.dat), with informations on all deliveries done with IciRelais - - configure price slices for shipping zones. - -You can use it in the back office by going to "Modules" tab, then "configure" button on IciRelais' line. -For exporting an EXAPRINT file, you must complete the entire form. - -III) Integration ----------------- -For the integration example, I used a google map, but it's not necessary. -In fact, the module doesn't interact with the map during the order. -Once the module is active, you must create an input named "pr_code" in your form "thelia.order.delivery", -whereas you won't be able to go to step 3 ( order-invoice ). -Moreover, the loop "delivery.ici" is available and must replace "delivery" in order-delivery-module-list.html, -they do the same thing, but delivery.ici has a new variable that allows you to know if the delivery module that's being looped is IciRelais. -The input "pr_code" must contain the ID of the pick-up & go store choosed by the user. -A loop is provided to get the 10 nearest pick-up & go stores of user's default address: icirelais.relais.around -There's also a route to get 10 pick-p & go stores in another city: /module/icirelais/{city}/{zipcode} -This route uses "SearchCityController" controller. It generate a json output, which you can use with, for example, jquery/ajax. - -If you want to show the store's address as delivery address, you just have to replace the "delivery-address" loop type by address.ici - -If you want to add the package tracking link to the order email, you can use the loop: "icirelais.urltracking" -It take only one argument ref, that is the order's reference, and it has one output $URL. -If the link can't be generated, there's no output. -You can, for exemple, integrate the link like that in the email: -{loop name="tracking" type="icirelais.urltracking" ref=$REF} -You can track your package here -{/loop} \ No newline at end of file diff --git a/local/modules/IciRelais/templates/frontOffice/default/ajax/order-delivery-module-list.html b/local/modules/IciRelais/templates/frontOffice/default/ajax/order-delivery-module-list.html deleted file mode 100644 index 35f410a0..00000000 --- a/local/modules/IciRelais/templates/frontOffice/default/ajax/order-delivery-module-list.html +++ /dev/null @@ -1,213 +0,0 @@ -{form name="thelia.order.delivery"} - - -{* Check if IciRelais webservice is up *} -{assign var="isIcirelaisUp" value=0} -{loop name="is.icirelais.up" type="icirelais.relais.around"}{/loop} -{ifloop rel="is.icirelais.up"} -{assign var="isIcirelaisUp" value=1} -{/ifloop} - -{loop type="delivery.ici" name="deliveries" force_return="true" country=$country} - -{if ($ID == $ICI_RELAIS_MODULE and $isIcirelaisUp) or $ID != $ICI_RELAIS_MODULE} -{assign var="isDeliveryMethodChecked" value="0"} -
- {form_field form=$form field='delivery-module'} - {if $isPost} - {if $value == $ID} - {assign var="isDeliveryMethodChecked" value="1"} - {/if} - {elseif $LOOP_COUNT == 1} - {assign var="isDeliveryMethodChecked" value="1"} - {/if} - - {/form_field} - {if $ID eq $ICI_RELAIS_MODULE}

- - {/if} -
-{/if} -{/loop} -{elseloop rel="deliveries"}
{intl l="Sorry! We are not able to give you a delivery method for your order."}
{/elseloop} -{/form} diff --git a/local/modules/IciRelais/templates/frontOffice/default/assets/logo_pr.png b/local/modules/IciRelais/templates/frontOffice/default/assets/logo_pr.png deleted file mode 100644 index 18941a8b..00000000 Binary files a/local/modules/IciRelais/templates/frontOffice/default/assets/logo_pr.png and /dev/null differ diff --git a/local/modules/IciRelais/templates/frontOffice/default/getSpecificLocation.html b/local/modules/IciRelais/templates/frontOffice/default/getSpecificLocation.html deleted file mode 100644 index 4ed109f6..00000000 --- a/local/modules/IciRelais/templates/frontOffice/default/getSpecificLocation.html +++ /dev/null @@ -1 +0,0 @@ -{assign var="count" value="0"}{literal}{{/literal}{loop type="icirelais.relais.around" name="delivery-selection-icirelais" zipcode=$_zipcode_ city=$_city_}"{$count}":{literal}{{/literal}"0":"{$NAME}","1":{$LATITUDE},"2":{$LONGITUDE},"3":"{$CODE}","4":"{$ADDRESS}","5":"{$ZIPCODE}","6":"{$CITY}","7":"{$DISTANCE}"{literal}}{/literal}{if $count ne 9},{/if}{assign var="count" value=$count+"1"}{/loop}{literal}}{/literal} \ No newline at end of file diff --git a/local/modules/IciRelais/templates/frontOffice/default/order-delivery.html b/local/modules/IciRelais/templates/frontOffice/default/order-delivery.html deleted file mode 100644 index b69fabe3..00000000 --- a/local/modules/IciRelais/templates/frontOffice/default/order-delivery.html +++ /dev/null @@ -1,158 +0,0 @@ -{extends file="layout.tpl"} - -{* Security *} -{block name="no-return-functions" prepend} - {check_auth context="front" role="CUSTOMER" login_tpl="login"} - {check_cart_not_empty} -{/block} - -{* Body Class *} -{block name="body-class"}page-order-delivery{/block} - -{* Breadcrumb *} -{block name='no-return-functions' append} - {$breadcrumbs = [ - ['title' => {intl l="Cart"}, 'url'=>{url path="/cart"}], - ['title' => {intl l="Billing and delivery"}, 'url'=>{url path="/order/delivery"}] - ]} -{/block} - - -{block name="main-content"} - -
-
- -

{intl l="Your Cart"}

- - {include file="misc/checkout-progress.tpl" step="delivery"} - - {form name="thelia.order.delivery"} - {assign var="isPost" value="{$smarty.post|count}"} - - - {form_hidden_fields form=$form} - - {if $form_error}
{$form_error_message}
{/if} - - {form_field form=$form field='delivery-address'} - -
-
- {intl l="Add a new address"} - {intl l="Choose your delivery address"} - {if $error} - {$message} - {/if} -
-
- - - {loop type="address" name="customer.addresses" customer="current"} - {assign var="isDeliveryAddressChecked" value="0"} - {if $isPost} - {if $value == $ID} - {assign var="isDeliveryAddressChecked" value="1"} - {/if} - {elseif $DEFAULT} - {assign var="isDeliveryAddressChecked" value="1"} - {/if} - - - - - - {/loop} - - -
-
- - {/form_field} - - {form_field form=$form field='delivery-module'} - -
-
- {intl l="Choose your delivery method"} - {if $error} - {$message} - {/if} -
-
-
- - {/form_field} - - {intl l="Back"} - - - - {/form} - -
-
- - -{/block} - -{block name="javascript-initialization"} - - - -{/block} \ No newline at end of file diff --git a/local/modules/IciRelais/templates/frontOffice/default/order-invoice.html b/local/modules/IciRelais/templates/frontOffice/default/order-invoice.html deleted file mode 100644 index d054bb26..00000000 --- a/local/modules/IciRelais/templates/frontOffice/default/order-invoice.html +++ /dev/null @@ -1,327 +0,0 @@ -{extends file="layout.tpl"} - -{* Security *} -{block name="no-return-functions" prepend} - {check_auth context="front" role="CUSTOMER" login_tpl="login"} - {check_cart_not_empty} - {check_valid_delivery} -{/block} - -{* Body Class *} -{block name="body-class"}page-order-invoice{/block} - -{* Breadcrumb *} -{block name='no-return-functions' append} - {$breadcrumbs = [ - ['title' => {intl l="Cart"}, 'url'=>{url path="/cart"}], - ['title' => {intl l="My order"}, 'url'=>{url path="/order/invoice"}] - ]} -{/block} - - -{block name="main-content"} -
-
- -

{intl l="Your Cart"}

- - {include file="misc/checkout-progress.tpl" step="invoice"} - - {form name="thelia.order.coupon"} - -
- - {form_hidden_fields form=$form} - - {if $form_error}
{$form_error_message}
{/if} - - - - - - - - - - - - - - - - - - - - {loop type="cart" name="cartloop"} - - - - - - - - - {/loop} - - - - - - - - - - - - - - - - - - - - - - -
  - - {intl l="Name"} - - - {intl l="Price"} - - - {intl l="Qty"} - - - {intl l="Total"} -
- - {assign "cart_count" $LOOP_COUNT} - {ifloop rel='product-image'} - {loop type="image" name="product-image" product=$PRODUCT_ID limit="1" width="118" height="85" force_return="true"} - Product #{$cart_count} - {/loop} - {/ifloop} - {elseloop rel="product-image"} - {images file='assets/img/product/1/118x85.png'}Product #{$cart_count}{/images} - {/elseloop} - -

- {$TITLE} -

-
-
-
{intl l="Available"} :
- {if $STOCK > 0} -
{intl l="In Stock"}
- {else} -
{intl l="Out of Stock"}
- {/if} -
{intl l="No."}
-
{$REF}
- {loop type="attribute_combination" name="product_options" product_sale_elements="$PRODUCT_SALE_ELEMENTS_ID"} -
{$ATTRIBUTE_TITLE}
-
{$ATTRIBUTE_AVAILABILITY_TITLE}
- {/loop} -
-
-
- {if $IS_PROMO == 1} - {assign "real_price" $PROMO_TAXED_PRICE} -
{$PROMO_TAXED_PRICE} {currency attr="symbol"}
- {intl l="instead of"} {$TAXED_PRICE} {currency attr="symbol"} - {else} - {assign "real_price" $TAXED_PRICE} -
{$TAXED_PRICE} {currency attr="symbol"}
- {/if} -
- {$QUANTITY} - - {$real_price * $QUANTITY} {currency attr="symbol"} -
 {intl l="Discount"} -
- {order attr="discount"} {currency attr="symbol"} -
-
{intl l="Shipping Tax"} -
- {order attr="postage"} {currency attr="symbol"} -
-
- {form_field form=$form field='success_url'} - - {/form_field} - {form_field form=$form field='coupon-code'} -
-
- - - - - -
- {if $error}{$message}{/if} -
- {/form_field} - -
{intl l="Total"} -
- {{cart attr="total_taxed_price"} + {order attr="postage"}} {currency attr="symbol"} -
-
-
- {/form} - {form name="thelia.order.payment"} - {assign var="isPost" value="{$smarty.post|count}"} -
- - {form_hidden_fields form=$form} - - {if $form_error}
{$form_error_message}
{/if} -
-
- {loop type="address.ici" name="delivery-address" id={order attr="delivery_address"}} -
{intl l="Delivery address"}
-
- {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} -
-
-
- {/loop} - -
- - {form_field form=$form field='invoice-address'} -
-
{intl l="Billing address"}s
- - {if $error} - {$message} - {/if} - -
- - {loop type="address" name="invoice-address"} - {assign var="isInvoiceAddressChecked" value="0"} - {if $isPost} - {if $value == $ID} - {assign var="isInvoiceAddressChecked" value="1"} - {/if} - {elseif $DEFAULT} - {assign var="isInvoiceAddressChecked" value="1"} - {/if} - -
- -
- {/loop} - - - -
- -
-
- - {/form_field} - - {form_field form=$form field='payment-module'} - -
-
{intl l="Choose your payment method"}
- - {if $error} - {$message} - {/if} - -
-
    - - {loop type="payment" name="payments" force_return="true"} - - {assign "paymentModuleId" $ID} - - {loop type="image" name="paymentspicture" source="module" source_id=$ID force_return="true" width="100" height="72"} - -
  • -
    - -
    -
  • - - {/loop} - - {/loop} - -
-
- - {/form_field} - - {intl l="Back"} - -
- - {/form} - - -
- - - -
-{/block} - -{block name="javascript-initialization"} - -{/block} \ No newline at end of file diff --git a/local/modules/LocalPickup/LocalPickup.php b/local/modules/LocalPickup/LocalPickup.php index aed93740..1f232783 100644 --- a/local/modules/LocalPickup/LocalPickup.php +++ b/local/modules/LocalPickup/LocalPickup.php @@ -78,7 +78,7 @@ class LocalPickup extends AbstractDeliveryModule $myPostalCode = $deliveryAddress->getZipcode(); // On recherche si le CP de l'adresse de livraison est dans la table 'boutique_cp_retrait_sur_place', pour savoir si le retrait sur place est possible. - $postalCodes = explode(';', ConfigQuery::read('boutique_cp_autorises_retrait_sur_place', [])); + $postalCodes = explode(';', ConfigQuery::read('thecoredev_cp_autorises_retrait_sur_place', [])); if (null !== $postalCodes) { foreach($postalCodes as $currentPostalCode) { if ($myPostalCode === $currentPostalCode) { diff --git a/local/modules/PrixDegressifs/Config/config.xml b/local/modules/PrixDegressifs/Config/config.xml new file mode 100644 index 00000000..321d499d --- /dev/null +++ b/local/modules/PrixDegressifs/Config/config.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/local/modules/BetterPassword/Config/module.xml b/local/modules/PrixDegressifs/Config/module.xml similarity index 62% rename from local/modules/BetterPassword/Config/module.xml rename to local/modules/PrixDegressifs/Config/module.xml index 5a288e1b..f55e25b3 100644 --- a/local/modules/BetterPassword/Config/module.xml +++ b/local/modules/PrixDegressifs/Config/module.xml @@ -2,24 +2,22 @@ - BetterPassword\BetterPassword + PrixDegressifs\PrixDegressifs - Require your customers to use secure password + Diggressive price for a same product (same size) - Imposer des mots de passe sécurisés à vos clients + Applique des prix dégressifs en fonction de la quantité d'un même produit en_US fr_FR - 1.0.0 + 1.0 - Franck Allimant - CQFDev - thelia@cqfdev.fr - www.cqfdev.fr + Laurent LE CORRE + laurent@thecoredev.fr classic diff --git a/local/modules/PrixDegressifs/Hook/FrontHook.php b/local/modules/PrixDegressifs/Hook/FrontHook.php new file mode 100644 index 00000000..a3f93616 --- /dev/null +++ b/local/modules/PrixDegressifs/Hook/FrontHook.php @@ -0,0 +1,27 @@ + + */ +class FrontHook extends BaseHook +{ + /** + * @param HookRenderBlockEvent $event + * @return string + */ + public function onProductDetailsBottom(HookRenderEvent $event) + { + $content = $this->render("gestion-stock.html"); + + $event->add($content); + } +} diff --git a/local/modules/PrixDegressifs/I18n/en_US.php b/local/modules/PrixDegressifs/I18n/en_US.php new file mode 100644 index 00000000..0b4fa142 --- /dev/null +++ b/local/modules/PrixDegressifs/I18n/en_US.php @@ -0,0 +1,4 @@ + 'The displayed english string', +); diff --git a/local/modules/PrixDegressifs/I18n/fr_FR.php b/local/modules/PrixDegressifs/I18n/fr_FR.php new file mode 100644 index 00000000..4a4ce15c --- /dev/null +++ b/local/modules/PrixDegressifs/I18n/fr_FR.php @@ -0,0 +1,5 @@ + 'La traduction française de la chaine', + 'Limited stock' => 'Attention, stock limité !' +); diff --git a/local/modules/BetterPassword/BetterPassword.php b/local/modules/PrixDegressifs/PrixDegressifs.php similarity index 78% rename from local/modules/BetterPassword/BetterPassword.php rename to local/modules/PrixDegressifs/PrixDegressifs.php index a3ef0cce..fda14290 100644 --- a/local/modules/BetterPassword/BetterPassword.php +++ b/local/modules/PrixDegressifs/PrixDegressifs.php @@ -10,16 +10,16 @@ /* file that was distributed with this source code. */ /*************************************************************************************/ -namespace BetterPassword; +namespace PrixDegressifs; +use Thelia\Model\ConfigQuery; use Thelia\Module\BaseModule; -class BetterPassword extends BaseModule +class PrixDegressifs extends BaseModule { - /** @var string */ - const DOMAIN_NAME = 'betterpassword'; + /** + * @return integer + */ + const DOMAIN_NAME = 'prixdegressifs'; - const VAR_REGULAR_EXPRESSION = "password_expression"; - - const VAR_PASSWORD_REQUIREMENTS = "password_requirements"; } diff --git a/local/modules/PrixDegressifs/Readme.md b/local/modules/PrixDegressifs/Readme.md new file mode 100644 index 00000000..16280ef6 --- /dev/null +++ b/local/modules/PrixDegressifs/Readme.md @@ -0,0 +1,55 @@ +# Prix Degressifs + +Add a short description here. You can also add a screenshot if needed. + +## Installation + +### Manually + +* Copy the module into ```/local/modules/``` directory and be sure that the name of the module is PrixDegressifs. +* Activate it in your thelia administration panel + +### Composer + +Add it in your main thelia composer.json file + +``` +composer require your-vendor/prix-degressifs-module:~1.0 +``` + +## Usage + +Explain here how to use your module, how to configure it, etc. + +## Hook + +If your module use one or more hook, fill this part. Explain which hooks are used. + + +## Loop + +If your module declare one or more loop, describe them here like this : + +[loop name] + +### Input arguments + +|Argument |Description | +|--- |--- | +|**arg1** | describe arg1 with an exemple. | +|**arg2** | describe arg2 with an exemple. | + +### Output arguments + +|Variable |Description | +|--- |--- | +|$VAR1 | describe $VAR1 variable | +|$VAR2 | describe $VAR2 variable | + +### Exemple + +Add a complete exemple of your loop + +## Other ? + +If you have other think to put, feel free to complete your readme as you want. diff --git a/local/modules/PrixDegressifs/composer.json b/local/modules/PrixDegressifs/composer.json new file mode 100644 index 00000000..63803738 --- /dev/null +++ b/local/modules/PrixDegressifs/composer.json @@ -0,0 +1,11 @@ +{ + "name": "your-vendor/prix-degressifs-module", + "license": "LGPL-3.0+", + "type": "thelia-module", + "require": { + "thelia/installer": "~1.1" + }, + "extra": { + "installer-name": "PrixDegressifs" + } +} \ No newline at end of file diff --git a/local/modules/PrixDegressifs/templates/frontOffice/boutique/gestion-stock.html b/local/modules/PrixDegressifs/templates/frontOffice/boutique/gestion-stock.html new file mode 100644 index 00000000..e421dd5b --- /dev/null +++ b/local/modules/PrixDegressifs/templates/frontOffice/boutique/gestion-stock.html @@ -0,0 +1,3 @@ +
+ Nos prix sont dégressifs : ... +
\ No newline at end of file diff --git a/local/modules/StockAlert/Config/config.xml b/local/modules/StockAlert/Config/config.xml new file mode 100644 index 00000000..113662b8 --- /dev/null +++ b/local/modules/StockAlert/Config/config.xml @@ -0,0 +1,31 @@ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + diff --git a/local/modules/StockAlert/Config/destroy.sql b/local/modules/StockAlert/Config/destroy.sql new file mode 100644 index 00000000..cb741dc2 --- /dev/null +++ b/local/modules/StockAlert/Config/destroy.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS `restocking_alert`; + diff --git a/local/modules/StockAlert/Config/module.xml b/local/modules/StockAlert/Config/module.xml new file mode 100644 index 00000000..5781d5e6 --- /dev/null +++ b/local/modules/StockAlert/Config/module.xml @@ -0,0 +1,24 @@ + + + StockAlert\StockAlert + + Stock Alerts + + + Alertes Stock + + + en_US + fr_FR + + 1.2 + + Julien Chanséaume + julien@thelia.net + + classic + 2.1.0 + rc + diff --git a/local/modules/StockAlert/Config/routing.xml b/local/modules/StockAlert/Config/routing.xml new file mode 100644 index 00000000..a3f2bad8 --- /dev/null +++ b/local/modules/StockAlert/Config/routing.xml @@ -0,0 +1,15 @@ + + + + + + StockAlert\Controller\StockAlertFrontOfficeController::subscribe + + + + StockAlert\Controller\StockAlertBackOfficeController::configuration + + + diff --git a/local/modules/StockAlert/Config/schema.xml b/local/modules/StockAlert/Config/schema.xml new file mode 100644 index 00000000..ce98ed7b --- /dev/null +++ b/local/modules/StockAlert/Config/schema.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + +
+ + + +
diff --git a/local/modules/StockAlert/Config/thelia.sql b/local/modules/StockAlert/Config/thelia.sql new file mode 100644 index 00000000..975ff98f --- /dev/null +++ b/local/modules/StockAlert/Config/thelia.sql @@ -0,0 +1,29 @@ + +# 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; + +-- --------------------------------------------------------------------- +-- restocking_alert +-- --------------------------------------------------------------------- + +DROP TABLE IF EXISTS `restocking_alert`; + +CREATE TABLE `restocking_alert` +( + `id` INTEGER NOT NULL AUTO_INCREMENT, + `product_sale_elements_id` INTEGER NOT NULL, + `email` VARCHAR(255), + `locale` VARCHAR(45), + `created_at` DATETIME, + `updated_at` DATETIME, + PRIMARY KEY (`id`), + INDEX `FI_restocking_alert_product_sale_elements_id` (`product_sale_elements_id`), + CONSTRAINT `fk_restocking_alert_product_sale_elements_id` + FOREIGN KEY (`product_sale_elements_id`) + REFERENCES `product_sale_elements` (`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/StockAlert/Controller/StockAlertBackOfficeController.php b/local/modules/StockAlert/Controller/StockAlertBackOfficeController.php new file mode 100644 index 00000000..7c6fff6d --- /dev/null +++ b/local/modules/StockAlert/Controller/StockAlertBackOfficeController.php @@ -0,0 +1,64 @@ + + * @author Julien Chanséaume + */ +class StockAlertBackOfficeController extends BaseAdminController +{ + + public function configuration() + { + $errorMessage = null; + + $form = $this->createForm('stockalert.configuration.form', 'form'); + + try { + $configForm = $this->validateForm($form)->getData(); + + ConfigQuery::write(StockAlert::CONFIG_ENABLED, $configForm['enabled']); + ConfigQuery::write(StockAlert::CONFIG_THRESHOLD, $configForm['threshold']); + $emails = str_replace(' ', '', $configForm['emails']); + ConfigQuery::write(StockAlert::CONFIG_EMAILS, $emails); + + return $this->generateSuccessRedirect($form); + } catch (FormValidationException $e) { + $errorMessage = $e->getMessage(); + } catch (\Exception $e) { + $errorMessage = $e->getMessage(); + } + + $form->setErrorMessage($errorMessage); + + $this->getParserContext() + ->addForm($form) + ->setGeneralError($errorMessage); + + return $this->render( + "module-configure", + [ + "module_code" => StockAlert::getModuleCode() + ] + ); + } +} diff --git a/local/modules/StockAlert/Controller/StockAlertFrontOfficeController.php b/local/modules/StockAlert/Controller/StockAlertFrontOfficeController.php new file mode 100644 index 00000000..fe8b12d4 --- /dev/null +++ b/local/modules/StockAlert/Controller/StockAlertFrontOfficeController.php @@ -0,0 +1,74 @@ + + * @author Julien Chanséaume + */ +class StockAlertFrontOfficeController extends BaseFrontController +{ + + public function subscribe() + { + $errorMessage = null; + + $form = $this->createForm('stockalert.subscribe.form', 'form'); + + try { + $subscribeForm = $this->validateForm($form)->getData(); + + $subscriberEvent = new StockAlertEvent( + $subscribeForm['product_sale_elements_id'], + $subscribeForm['email'], + $this->getRequest()->getSession()->getLang()->getLocale() + ); + + $this->dispatch(StockAlertEvents::STOCK_ALERT_SUBSCRIBE, $subscriberEvent); + + return $this->jsonResponse( + json_encode( + [ + "success" => true, + "message" => $this->getTranslator()->trans( + "Your request has been taken into account", + [], + StockAlert::MESSAGE_DOMAIN + ) + ] + ) + ); + } catch (FormValidationException $e) { + $errorMessage = $e->getMessage(); + } catch (\Exception $e) { + $errorMessage = $e->getMessage(); + } + + return $this->jsonResponse( + json_encode( + [ + "success" => false, + "message" => $errorMessage + ] + ) + ); + } +} diff --git a/local/modules/StockAlert/Event/ProductSaleElementAvailabilityEvent.php b/local/modules/StockAlert/Event/ProductSaleElementAvailabilityEvent.php new file mode 100644 index 00000000..d6322f0e --- /dev/null +++ b/local/modules/StockAlert/Event/ProductSaleElementAvailabilityEvent.php @@ -0,0 +1,53 @@ + + */ +class ProductSaleElementAvailabilityEvent extends ProductSaleElementEvent +{ + + /** @var bool */ + protected $available = true; + + + public function __construct(ProductSaleElements $product_sale_element = null) + { + $this->product_sale_element = $product_sale_element; + } + + /** + * @return boolean + */ + public function isAvailable() + { + return $this->available; + } + + /** + * @param boolean $available + */ + public function setAvailable($available) + { + $this->available = $available; + + return $this; + } +} diff --git a/local/modules/StockAlert/Event/StockAlertEvent.php b/local/modules/StockAlert/Event/StockAlertEvent.php new file mode 100644 index 00000000..d17f257c --- /dev/null +++ b/local/modules/StockAlert/Event/StockAlertEvent.php @@ -0,0 +1,121 @@ + + * @author Julien Chanséaume + */ +class StockAlertEvent extends ActionEvent +{ + + /** @var int */ + private $productSaleElementsId; + + /** @var string */ + private $email; + + /** @var string */ + private $locale; + + /** @var RestockingAlert */ + private $restockingAlert; + + /** + * @param $productSaleElementsId + * @param $email + */ + public function __construct($productSaleElementsId, $email, $locale) + { + $this->setEmail($email); + $this->setProductSaleElementsId($productSaleElementsId); + $this->setLocale($locale); + } + + /** + * @return mixed + */ + public function getEmail() + { + return $this->email; + } + + /** + * @param mixed $email + */ + public function setEmail($email) + { + $this->email = $email; + + return $this; + } + + /** + * @return mixed + */ + public function getProductSaleElementsId() + { + return $this->productSaleElementsId; + } + + /** + * @param mixed $productSaleElementsId + */ + public function setProductSaleElementsId($productSaleElementsId) + { + $this->productSaleElementsId = $productSaleElementsId; + + return $this; + } + + /** + * @return RestockingAlert + */ + public function getRestockingAlert() + { + return $this->restockingAlert; + } + + /** + * @param RestockingAlert $restockingAlert + */ + public function setRestockingAlert($restockingAlert) + { + $this->restockingAlert = $restockingAlert; + + return $this; + } + + /** + * @return string + */ + public function getLocale() + { + return $this->locale; + } + + /** + * @param string $locale + */ + public function setLocale($locale) + { + $this->locale = $locale; + + return $this; + } +} diff --git a/local/modules/StockAlert/Event/StockAlertEvents.php b/local/modules/StockAlert/Event/StockAlertEvents.php new file mode 100644 index 00000000..4aedc6dd --- /dev/null +++ b/local/modules/StockAlert/Event/StockAlertEvents.php @@ -0,0 +1,26 @@ + + * @author Julien Chanséaume + * + */ +class StockAlertEvents +{ + const STOCK_ALERT_SUBSCRIBE = "stockalert.subscribe"; + const STOCK_ALERT_CHECK_AVAILABILITY = "stockalert.check.availability"; +} diff --git a/local/modules/StockAlert/EventListeners/StockAlertManager.php b/local/modules/StockAlert/EventListeners/StockAlertManager.php new file mode 100644 index 00000000..d534aca0 --- /dev/null +++ b/local/modules/StockAlert/EventListeners/StockAlertManager.php @@ -0,0 +1,234 @@ + + * @author Julien Chanséaume + */ +class StockAlertManager implements EventSubscriberInterface +{ + protected $mailer; + + public function __construct(MailerFactory $mailer) + { + $this->mailer = $mailer; + } + + /** + * Returns an array of event names this subscriber wants to listen to. + * @return array The event names to listen to + * + * @api + */ + public static function getSubscribedEvents() + { + return [ + StockAlertEvents::STOCK_ALERT_SUBSCRIBE => ['subscribe', 128], + TheliaEvents::PRODUCT_UPDATE_PRODUCT_SALE_ELEMENT => ['checkStock', 120], + TheliaEvents::ORDER_UPDATE_STATUS => ['checkStockForAdmin', 128], + ]; + } + + public function subscribe(StockAlertEvent $event) + { + $productSaleElementsId = $event->getProductSaleElementsId(); + $email = $event->getEmail(); + + if (!isset($productSaleElementsId)) { + throw new \Exception("missing param"); + } + + if (!isset($email)) { + throw new \Exception("missing param"); + } + + // test if it already exists + $subscribe = RestockingAlertQuery::create() + ->filterByEmail($email) + ->filterByProductSaleElementsId($productSaleElementsId) + ->findOne(); + + if (null === $subscribe) { + $subscribe = new RestockingAlert(); + $subscribe + ->setProductSaleElementsId($productSaleElementsId) + ->setEmail($email) + ->setLocale($event->getLocale()) + ->save(); + } else { + throw new \Exception( + Translator::getInstance()->trans( + "You have already subscribed to this product", + [], + StockAlert::MESSAGE_DOMAIN + ) + ); + } + + $event->setRestockingAlert($subscribe); + } + + + public function checkStock(ProductSaleElementUpdateEvent $productSaleElementUpdateEvent) + { + if ($productSaleElementUpdateEvent->getQuantity() > 0) { + // add extra checking + $pse = ProductSaleElementsQuery::create()->findPk( + $productSaleElementUpdateEvent->getProductSaleElementId() + ); + $availabilityEvent = new ProductSaleElementAvailabilityEvent( + $pse + ); + + $productSaleElementUpdateEvent->getDispatcher()->dispatch( + StockAlertEvents::STOCK_ALERT_CHECK_AVAILABILITY, + $availabilityEvent + ); + + if ($availabilityEvent->isAvailable()) { + $subscribers = RestockingAlertQuery::create() + ->filterByProductSaleElementsId($productSaleElementUpdateEvent->getProductSaleElementId()) + ->find(); + + if (null !== $subscribers) { + foreach ($subscribers as $subscriber) { + try { + $this->sendEmail($subscriber); + $subscriber->delete(); + } catch (\Exception $ex) { + ; + } + } + } + } + } + } + + /** + * @param RestockingAlert $subscriber + * @throws \Propel\Runtime\Exception\PropelException + */ + public function sendEmail(RestockingAlert $subscriber) + { + $contactEmail = ConfigQuery::read('store_email'); + + if ($contactEmail) { + $pse = ProductSaleElementsQuery::create()->findPk($subscriber->getProductSaleElementsId()); + + $this->mailer->sendEmailMessage( + 'stockalert_customer', + [ $contactEmail => ConfigQuery::read('store_name') ], + [ $subscriber->getEmail() => ConfigQuery::read('store_name') ], + [ + 'locale' => $subscriber->getLocale(), + 'pse_id' => $pse->getId(), + 'product_id' => $pse->getProductId(), + 'product_title' => $pse->getProduct()->setLocale($subscriber->getLocale())->getTitle() + ], + $subscriber->getLocale() + ); + + Tlog::getInstance()->debug("Restocking Alert sent to customer " . $subscriber->getEmail()); + } else { + Tlog::getInstance()->debug( + "Restocking Alert: no contact email is defined !" + ); + } + } + + public function checkStockForAdmin(OrderEvent $event) + { + $order = $event->getOrder(); + + $config = StockAlert::getConfig(); + + $pseIds = []; + + foreach ($order->getOrderProducts() as $orderProduct) { + $pseIds[] = $orderProduct->getProductSaleElementsId(); + } + + if ($config['enabled']) { + $threshold = $config['threshold']; + + $productIds = ProductQuery::create() + ->useProductSaleElementsQuery() + ->filterById($pseIds, Criteria::IN) + ->filterByQuantity($threshold, Criteria::LESS_EQUAL) + // exclude virtual product with weight at 0 + ->filterByWeight(0, Criteria::NOT_EQUAL) + ->endUse() + ->select('Id') + ->find() + ->toArray(); + + if (!empty($productIds)) { + $this->sendEmailForAdmin($config['emails'], $productIds); + } + } + } + + public function sendEmailForAdmin($emails, $productIds) + { + $locale = Lang::getDefaultLanguage()->getLocale(); + + $contactEmail = ConfigQuery::read('store_email'); + + if ($contactEmail) { + $storeName = ConfigQuery::read('store_name'); + + $to = []; + + foreach ($emails as $recipient) { + $to[$recipient] = $storeName; + } + + $this->mailer->sendEmailMessage( + 'stockalert_administrator', + [ $contactEmail => $storeName ], + $to, + [ + 'locale' => $locale, + 'products_id' => $productIds + ], + $locale + ); + + Tlog::getInstance()->debug("Stock Alert sent to administrator " . implode(', ', $emails)); + } else { + Tlog::getInstance()->debug("Restocking Alert: no contact email is defined !"); + } + } +} diff --git a/local/modules/StockAlert/Form/StockAlertConfig.php b/local/modules/StockAlert/Form/StockAlertConfig.php new file mode 100644 index 00000000..103748ef --- /dev/null +++ b/local/modules/StockAlert/Form/StockAlertConfig.php @@ -0,0 +1,148 @@ + + * @author Julien Chanséaume + */ +class StockAlertConfig extends BaseForm +{ + /** @var Translator $translator */ + protected $translator; + + public function checkEmails($value, ExecutionContextInterface $context) + { + $data = $context->getRoot()->getData(); + + $value = trim($value); + + if ("" === trim($value) && !empty($data["enabled"])) { + $context->addViolation( + $this->trans( + "The Emails can not be empty", + [ + "%id" => $value, + ] + ) + ); + } + + $emails = explode(',', $value); + foreach ($emails as $email) { + if (false === filter_var($email, FILTER_VALIDATE_EMAIL)) { + $context->addViolation( + $this->trans( + "'%email' is not a valid email address", + ["%email" => $email] + ) + ); + } + } + } + + protected function trans($id, $parameters = []) + { + if (null === $this->translator) { + $this->translator = Translator::getInstance(); + } + + return $this->translator->trans($id, $parameters, StockAlert::MESSAGE_DOMAIN); + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return 'stockalert_config_form'; + } + + protected function buildForm() + { + $config = StockAlert::getConfig(); + + $this->formBuilder + ->add( + 'enabled', + 'checkbox', + [ + "required" => false, + "data" => $config['enabled'], + "label" => Translator::getInstance()->trans("Enabled", [], StockAlert::MESSAGE_DOMAIN), + "label_attr" => [ + "for" => "enabled" + ] + ] + ) + ->add( + 'threshold', + 'integer', + [ + "required" => true, + "constraints" => [ + new NotBlank(), + ], + "data" => $config['threshold'], + "label" => Translator::getInstance()->trans("Threshold", [], StockAlert::MESSAGE_DOMAIN), + "label_attr" => [ + "for" => "email", + "help" => Translator::getInstance()->trans( + "You will recieve a notification when the quantity in stock is lower or equal to this value.", + [], + StockAlert::MESSAGE_DOMAIN + ), + ] + ] + ) + ->add( + "emails", + "text", + [ + "constraints" => [ + new Callback( + [ + "methods" => [ + [$this, "checkEmails"] + ] + ] + ), + ], + "required" => false, + "data" => implode(',', $config['emails']), + "label" => Translator::getInstance()->trans( + "Email Address", + [], + StockAlert::MESSAGE_DOMAIN + ), + "label_attr" => [ + "for" => "emails", + "help" => Translator::getInstance()->trans( + "A comma separated list of email that will recieve notifications", + [], + StockAlert::MESSAGE_DOMAIN + ), + ] + ] + ); + } +} diff --git a/local/modules/StockAlert/Form/StockAlertSubscribe.php b/local/modules/StockAlert/Form/StockAlertSubscribe.php new file mode 100644 index 00000000..13f62a95 --- /dev/null +++ b/local/modules/StockAlert/Form/StockAlertSubscribe.php @@ -0,0 +1,66 @@ + + * @author Julien Chanséaume + */ +class StockAlertSubscribe extends BaseForm +{ + protected function buildForm() + { + $this->formBuilder + ->add( + 'product_sale_elements_id', + 'product_sale_elements_id', + [ + 'required' => true, + "label" => Translator::getInstance()->trans("Product", [], StockAlert::MESSAGE_DOMAIN), + "label_attr" => [ + "for" => "product_sale_elements_id" + ] + ] + ) + ->add( + "email", + "email", + [ + "constraints" => [ + new NotBlank(), + new Email() + ], + "label" => Translator::getInstance()->trans("Email Address", [], StockAlert::MESSAGE_DOMAIN), + "label_attr" => [ + "for" => "email" + ] + ] + ); + } + + /** + * @return string the name of you form. This name must be unique + */ + public function getName() + { + return 'stockalert_subscribe_form'; + } +} diff --git a/local/modules/StockAlert/Hook/StockAlertHook.php b/local/modules/StockAlert/Hook/StockAlertHook.php new file mode 100644 index 00000000..419a7249 --- /dev/null +++ b/local/modules/StockAlert/Hook/StockAlertHook.php @@ -0,0 +1,61 @@ + + */ +class StockAlertHook extends BaseHook +{ + + public function onProductDetailsBottom(HookRenderEvent $event) + { + $event->add( + $this->render( + "product-details-bottom.html" + ) + ); + } + + public function onProductJavascriptInitialization(HookRenderEvent $event) + { + $event->add( + $this->render( + "product.javascript-initialization.html" + ) + ); + } + + public function onModuleConfiguration(HookRenderEvent $event) + { + $moduleId = $this->getModule()->getModuleId(); + $config = StockAlert::getConfig(); + + $event->add( + $this->render( + "configuration.html", + [ + 'module_id' => $moduleId, + 'config' => $config + ] + ) + ); + } +} diff --git a/local/modules/StockAlert/I18n/backOffice/default/en_US.php b/local/modules/StockAlert/I18n/backOffice/default/en_US.php new file mode 100644 index 00000000..d76d4875 --- /dev/null +++ b/local/modules/StockAlert/I18n/backOffice/default/en_US.php @@ -0,0 +1,13 @@ + 'Actions', + 'Configuration.' => 'Configuration.', + 'Date' => 'Date', + 'Email' => 'Email', + 'List of current subscriptions.' => 'List of current subscriptions.', + 'Product' => 'Product', + 'Save' => 'Save', + 'The stock is not not use on the site. Please set the config variable check-available-stock to 1.' => 'The stock is not not use on the site. Please set the config variable check-available-stock to 1.', + 'There is no subscriptions.' => 'There is no subscriptions.', +); diff --git a/local/modules/StockAlert/I18n/backOffice/default/fr_FR.php b/local/modules/StockAlert/I18n/backOffice/default/fr_FR.php new file mode 100644 index 00000000..a367e656 --- /dev/null +++ b/local/modules/StockAlert/I18n/backOffice/default/fr_FR.php @@ -0,0 +1,13 @@ + 'Actions', + 'Configuration.' => 'Configuration', + 'Date' => 'Date', + 'Email' => 'Email', + 'List of current subscriptions.' => 'Abonnements des clients', + 'Product' => 'Produit', + 'Save' => 'Enregistrer', + 'The stock is not not use on the site. Please set the config variable check-available-stock to 1.' => 'Le stock n\'est pas utilisé sur le site. Veuillez mettre la variable check-available-stock à 1.', + 'There is no subscriptions.' => 'Aucune alerte n\'a encore été créée.', +); diff --git a/local/modules/StockAlert/I18n/email/default/en_US.php b/local/modules/StockAlert/I18n/email/default/en_US.php new file mode 100644 index 00000000..f9238d1b --- /dev/null +++ b/local/modules/StockAlert/I18n/email/default/en_US.php @@ -0,0 +1,12 @@ + 'Best Regards.', + 'Feel free to contact us for any further information' => 'Feel free to contact us for any further information', + 'Hi' => 'Hi', + 'Some product(s) is (are) going to be out of stock :' => 'Some product(s) is (are) going to be out of stock :', + 'The product %title (%pse) is available again.' => 'The product %title (%pse) is available again.', + 'The product %title (%pse) is now available.' => 'The product %title (%pse) is now available.', + 'You can now order this product here.' => 'You can now order this product here.', + 'You can now order this product : %url' => 'You can now order this product : %url', +); diff --git a/local/modules/StockAlert/I18n/email/default/fr_FR.php b/local/modules/StockAlert/I18n/email/default/fr_FR.php new file mode 100644 index 00000000..004bb0cf --- /dev/null +++ b/local/modules/StockAlert/I18n/email/default/fr_FR.php @@ -0,0 +1,12 @@ + 'Cordialement.', + 'Feel free to contact us for any further information' => 'N\'hésitez pas à nous contacter pour toute question ou information.', + 'Hi' => 'Bonjour', + 'Some product(s) is (are) going to be out of stock :' => 'certains produits vont bientôt être indisponible :', + 'The product %title (%pse) is available again.' => 'Le produit %title (%pse) est à nouveau disponible.', + 'The product %title (%pse) is now available.' => 'Le produit %title (%pse) est à nouveau disponible.', + 'You can now order this product here.' => 'Vous pouvez maintenant le commander en cliquant ici.', + 'You can now order this product : %url' => 'Vous pouvez maintenant commander le produit : %url', +); diff --git a/local/modules/StockAlert/I18n/en_US.php b/local/modules/StockAlert/I18n/en_US.php new file mode 100644 index 00000000..42a16a8c --- /dev/null +++ b/local/modules/StockAlert/I18n/en_US.php @@ -0,0 +1,15 @@ + '\'%email\' is not a valid email address', + 'A comma separated list of email that will recieve notifications' => 'A comma separated list of email that will recieve notifications', + 'Email Address' => 'Email Address', + 'Enabled' => 'Enabled', + 'List of products nearly out of stock' => 'List of products nearly out of stock', + 'Product' => 'Product', + 'The Emails can not be empty' => 'The Emails can not be empty', + 'Threshold' => 'Threshold', + 'You have already subscribed to this product' => 'You have already subscribed to this product', + 'You will recieve a notification when the quantity in stock is lower or equal to this value.' => 'You will recieve a notification when the quantity in stock is lower or equal to this value.', + 'Your request has been taken into account' => 'Your request has been taken into account', +); diff --git a/local/modules/StockAlert/I18n/fr_FR.php b/local/modules/StockAlert/I18n/fr_FR.php new file mode 100644 index 00000000..51cd3680 --- /dev/null +++ b/local/modules/StockAlert/I18n/fr_FR.php @@ -0,0 +1,15 @@ + '\'%email\' n\'est pas un email valide', + 'A comma separated list of email that will recieve notifications' => 'Une liste d\'email séparés par des virgules', + 'Email Address' => 'Adresse email', + 'Enabled' => 'Activé', + 'List of products nearly out of stock' => 'Liste des produits bentôt en rupture de stock', + 'Product' => 'Produit', + 'The Emails can not be empty' => 'Le champs Email ne peut être vide', + 'Threshold' => 'Seuil', + 'You have already subscribed to this product' => 'Vous avez déjà souscrit à ce produit', + 'You will recieve a notification when the quantity in stock is lower or equal to this value.' => 'Vous recevrez une notification quand la quantité en stock sera inférieure ou égale à cette valeur.', + 'Your request has been taken into account' => 'Votre demande a été prise en compte', +); diff --git a/local/modules/StockAlert/I18n/frontOffice/default/en_US.php b/local/modules/StockAlert/I18n/frontOffice/default/en_US.php new file mode 100644 index 00000000..74bd697f --- /dev/null +++ b/local/modules/StockAlert/I18n/frontOffice/default/en_US.php @@ -0,0 +1,7 @@ + 'Notify me !', + 'Register your email to be notified when it will be available again.' => 'Register your email to be notified when it will be available again.', + 'This product is not available for now.' => 'This product is not available for now.', +); diff --git a/local/modules/StockAlert/I18n/frontOffice/default/fr_FR.php b/local/modules/StockAlert/I18n/frontOffice/default/fr_FR.php new file mode 100644 index 00000000..2c45755b --- /dev/null +++ b/local/modules/StockAlert/I18n/frontOffice/default/fr_FR.php @@ -0,0 +1,7 @@ + 'Alertez moi !', + 'Register your email to be notified when it will be available again.' => 'Saisissez votre email pour être alerté quand il sera à nouveau disponible.', + 'This product is not available for now.' => 'Ce produit n\'est pas disponible pour le moment', +); diff --git a/local/modules/StockAlert/LICENSE b/local/modules/StockAlert/LICENSE new file mode 100644 index 00000000..fb6d90b9 --- /dev/null +++ b/local/modules/StockAlert/LICENSE @@ -0,0 +1,166 @@ +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/StockAlert/Loop/RestockingAlertLoop.php b/local/modules/StockAlert/Loop/RestockingAlertLoop.php new file mode 100644 index 00000000..7e3807ed --- /dev/null +++ b/local/modules/StockAlert/Loop/RestockingAlertLoop.php @@ -0,0 +1,186 @@ + + */ +class RestockingAlertLoop extends BaseLoop implements PropelSearchLoopInterface +{ + + protected $timestampable = true; + + /** + * @param LoopResult $loopResult + * + * @return LoopResult + */ + public function parseResults(LoopResult $loopResult) + { + /** @var RestockingAlert $item */ + foreach ($loopResult->getResultDataCollection() as $item) { + + $loopResultRow = new LoopResultRow($item); + + $loopResultRow + ->set("ID", $item->getId()) + ->set("PRODUCT_SALE_ELEMENTS_ID", $item->getProductSaleElementsId()) + ->set("EMAIL", $item->getEmail()) + ->set("LOCALE", $item->getLocale()) + ; + + $this->addOutputFields($loopResultRow, $item); + + $loopResult->addRow($loopResultRow); + } + + return $loopResult; + } + + /** + * Definition of loop arguments + * + * example : + * + * public function getArgDefinitions() + * { + * return new ArgumentCollection( + * + * Argument::createIntListTypeArgument('id'), + * new Argument( + * 'ref', + * new TypeCollection( + * new Type\AlphaNumStringListType() + * ) + * ), + * Argument::createIntListTypeArgument('category'), + * Argument::createBooleanTypeArgument('new'), + * ... + * ); + * } + * + * @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection + */ + protected function getArgDefinitions() + { + return new ArgumentCollection( + Argument::createIntListTypeArgument('id'), + Argument::createIntTypeArgument('email'), + Argument::createIntListTypeArgument('product_sale_element'), + new Argument( + 'order', + new TypeCollection( + new EnumListType( + [ + 'id', + 'id_reverse', + 'product_sale_element_id', + 'product_sale_element_id_reverse', + 'email', + 'email_reverse', + 'created', + 'created_reverse', + 'updated', + 'updated_reverse', + 'random' + ] + ) + ), + 'id_reverse' + ) + ); + } + + /** + * this method returns a Propel ModelCriteria + * + * @return \Propel\Runtime\ActiveQuery\ModelCriteria + */ + public function buildModelCriteria() + { + $query = RestockingAlertQuery::create(); + + $id = $this->getArgValue('id'); + if (!empty($id)) { + $query->filterById($id, Criteria::IN); + } + + $email = $this->getArgValue('email'); + if (!empty($email)) { + $query->filterByEmail('%' . $email . '%', Criteria::LIKE); + } + + $id = $this->getArgValue('product_sale_element'); + if (!empty($id)) { + $query->filterByProductSaleElementsId($id, Criteria::IN); + } + + $orders = $this->getArgValue('order'); + + foreach ($orders as $order) { + switch ($order) { + case "id": + $query->orderById(Criteria::ASC); + break; + case "id_reverse": + $query->orderById(Criteria::DESC); + break; + case "product_sale_element_id": + $query->orderByProductSaleElementsId(Criteria::ASC); + break; + case "product_sale_element_id_reverse": + $query->orderByProductSaleElementsId(Criteria::DESC); + break; + case "email_id": + $query->orderByEmail(Criteria::ASC); + break; + case "email_reverse": + $query->orderByEmail(Criteria::DESC); + break; + case "created": + $query->addAscendingOrderByColumn('created_at'); + break; + case "created_reverse": + $query->addDescendingOrderByColumn('created_at'); + break; + case "updated": + $query->addAscendingOrderByColumn('updated_at'); + break; + case "updated_reverse": + $query->addDescendingOrderByColumn('updated_at'); + break; + case "random": + $query->clearOrderByColumns(); + $query->addAscendingOrderByColumn('RAND()'); + break(2); + } + } + + return $query; + } +} diff --git a/local/modules/IciRelais/Model/Base/IcirelaisFreeshipping.php b/local/modules/StockAlert/Model/Base/RestockingAlert.php similarity index 64% rename from local/modules/IciRelais/Model/Base/IcirelaisFreeshipping.php rename to local/modules/StockAlert/Model/Base/RestockingAlert.php index 8827dd87..9601c033 100644 --- a/local/modules/IciRelais/Model/Base/IcirelaisFreeshipping.php +++ b/local/modules/StockAlert/Model/Base/RestockingAlert.php @@ -1,30 +1,34 @@ IcirelaisFreeshipping instance. If - * obj is an instance of IcirelaisFreeshipping, delegates to - * equals(IcirelaisFreeshipping). Otherwise, returns false. + * Compares this with another RestockingAlert instance. If + * obj is an instance of RestockingAlert, delegates to + * equals(RestockingAlert). Otherwise, returns false. * * @param mixed $obj The object to compare to. * @return boolean Whether equal to the object specified. @@ -265,7 +286,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * @param string $name The virtual column name * @param mixed $value The value to give to the virtual column * - * @return IcirelaisFreeshipping The current object, for fluid interface + * @return RestockingAlert The current object, for fluid interface */ public function setVirtualColumn($name, $value) { @@ -293,11 +314,11 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}'); * * - * @param mixed $parser A AbstractParser instance, + * @param mixed $parser A AbstractParser instance, * or a format name ('XML', 'YAML', 'JSON', 'CSV') - * @param string $data The source data to import from + * @param string $data The source data to import from * - * @return IcirelaisFreeshipping The current object, for fluid interface + * @return RestockingAlert The current object, for fluid interface */ public function importFrom($parser, $data) { @@ -345,29 +366,53 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Get the [id] column value. * - * @return int + * @return int */ public function getId() { + return $this->id; } /** - * Get the [active] column value. + * Get the [product_sale_elements_id] column value. * - * @return boolean + * @return int */ - public function getActive() + public function getProductSaleElementsId() { - return $this->active; + + return $this->product_sale_elements_id; + } + + /** + * Get the [email] column value. + * + * @return string + */ + public function getEmail() + { + + return $this->email; + } + + /** + * Get the [locale] column value. + * + * @return string + */ + public function getLocale() + { + + return $this->locale; } /** * Get the [optionally formatted] temporal [created_at] column value. * * - * @param string $format The date/time format string (either date()-style or strftime()-style). - * If format is NULL, then the raw \DateTime object will be returned. + * @param string $format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the raw \DateTime object will be returned. * * @return mixed Formatted date/time value as string or \DateTime object (if format is NULL), NULL if column is NULL, and 0 if column value is 0000-00-00 00:00:00 * @@ -386,8 +431,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * Get the [optionally formatted] temporal [updated_at] column value. * * - * @param string $format The date/time format string (either date()-style or strftime()-style). - * If format is NULL, then the raw \DateTime object will be returned. + * @param string $format The date/time format string (either date()-style or strftime()-style). + * If format is NULL, then the raw \DateTime object will be returned. * * @return mixed Formatted date/time value as string or \DateTime object (if format is NULL), NULL if column is NULL, and 0 if column value is 0000-00-00 00:00:00 * @@ -405,8 +450,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Set the value of [id] column. * - * @param int $v new value - * @return \IciRelais\Model\IcirelaisFreeshipping The current object (for fluent API support) + * @param int $v new value + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) */ public function setId($v) { @@ -416,46 +461,86 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface if ($this->id !== $v) { $this->id = $v; - $this->modifiedColumns[IcirelaisFreeshippingTableMap::ID] = true; + $this->modifiedColumns[RestockingAlertTableMap::ID] = true; } + return $this; } // setId() /** - * Sets the value of the [active] column. - * Non-boolean arguments are converted using the following rules: - * * 1, '1', 'true', 'on', and 'yes' are converted to boolean true - * * 0, '0', 'false', 'off', and 'no' are converted to boolean false - * Check on string values is case insensitive (so 'FaLsE' is seen as 'false'). + * Set the value of [product_sale_elements_id] column. * - * @param boolean|integer|string $v The new value - * @return \IciRelais\Model\IcirelaisFreeshipping The current object (for fluent API support) + * @param int $v new value + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) */ - public function setActive($v) + public function setProductSaleElementsId($v) { if ($v !== null) { - if (is_string($v)) { - $v = in_array(strtolower($v), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true; - } else { - $v = (boolean) $v; - } + $v = (int) $v; } - if ($this->active !== $v) { - $this->active = $v; - $this->modifiedColumns[IcirelaisFreeshippingTableMap::ACTIVE] = true; + if ($this->product_sale_elements_id !== $v) { + $this->product_sale_elements_id = $v; + $this->modifiedColumns[RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID] = true; } + if ($this->aProductSaleElements !== null && $this->aProductSaleElements->getId() !== $v) { + $this->aProductSaleElements = null; + } + + return $this; - } // setActive() + } // setProductSaleElementsId() + + /** + * Set the value of [email] column. + * + * @param string $v new value + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) + */ + public function setEmail($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->email !== $v) { + $this->email = $v; + $this->modifiedColumns[RestockingAlertTableMap::EMAIL] = true; + } + + + return $this; + } // setEmail() + + /** + * Set the value of [locale] column. + * + * @param string $v new value + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) + */ + public function setLocale($v) + { + if ($v !== null) { + $v = (string) $v; + } + + if ($this->locale !== $v) { + $this->locale = $v; + $this->modifiedColumns[RestockingAlertTableMap::LOCALE] = true; + } + + + return $this; + } // setLocale() /** * Sets the value of [created_at] column to a normalized version of the date/time value specified. * - * @param mixed $v string, integer (timestamp), or \DateTime value. - * Empty strings are treated as NULL. - * @return \IciRelais\Model\IcirelaisFreeshipping The current object (for fluent API support) + * @param mixed $v string, integer (timestamp), or \DateTime value. + * Empty strings are treated as NULL. + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) */ public function setCreatedAt($v) { @@ -463,19 +548,20 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface if ($this->created_at !== null || $dt !== null) { if ($dt !== $this->created_at) { $this->created_at = $dt; - $this->modifiedColumns[IcirelaisFreeshippingTableMap::CREATED_AT] = true; + $this->modifiedColumns[RestockingAlertTableMap::CREATED_AT] = true; } } // if either are not null + return $this; } // setCreatedAt() /** * Sets the value of [updated_at] column to a normalized version of the date/time value specified. * - * @param mixed $v string, integer (timestamp), or \DateTime value. - * Empty strings are treated as NULL. - * @return \IciRelais\Model\IcirelaisFreeshipping The current object (for fluent API support) + * @param mixed $v string, integer (timestamp), or \DateTime value. + * Empty strings are treated as NULL. + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) */ public function setUpdatedAt($v) { @@ -483,10 +569,11 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface if ($this->updated_at !== null || $dt !== null) { if ($dt !== $this->updated_at) { $this->updated_at = $dt; - $this->modifiedColumns[IcirelaisFreeshippingTableMap::UPDATED_AT] = true; + $this->modifiedColumns[RestockingAlertTableMap::UPDATED_AT] = true; } } // if either are not null + return $this; } // setUpdatedAt() @@ -527,19 +614,25 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface try { - $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : IcirelaisFreeshippingTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; + $col = $row[TableMap::TYPE_NUM == $indexType ? 0 + $startcol : RestockingAlertTableMap::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)]; $this->id = (null !== $col) ? (int) $col : null; - $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : IcirelaisFreeshippingTableMap::translateFieldName('Active', TableMap::TYPE_PHPNAME, $indexType)]; - $this->active = (null !== $col) ? (boolean) $col : null; + $col = $row[TableMap::TYPE_NUM == $indexType ? 1 + $startcol : RestockingAlertTableMap::translateFieldName('ProductSaleElementsId', TableMap::TYPE_PHPNAME, $indexType)]; + $this->product_sale_elements_id = (null !== $col) ? (int) $col : null; - $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : IcirelaisFreeshippingTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)]; + $col = $row[TableMap::TYPE_NUM == $indexType ? 2 + $startcol : RestockingAlertTableMap::translateFieldName('Email', TableMap::TYPE_PHPNAME, $indexType)]; + $this->email = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : RestockingAlertTableMap::translateFieldName('Locale', TableMap::TYPE_PHPNAME, $indexType)]; + $this->locale = (null !== $col) ? (string) $col : null; + + $col = $row[TableMap::TYPE_NUM == $indexType ? 4 + $startcol : RestockingAlertTableMap::translateFieldName('CreatedAt', TableMap::TYPE_PHPNAME, $indexType)]; if ($col === '0000-00-00 00:00:00') { $col = null; } $this->created_at = (null !== $col) ? PropelDateTime::newInstance($col, null, '\DateTime') : null; - $col = $row[TableMap::TYPE_NUM == $indexType ? 3 + $startcol : IcirelaisFreeshippingTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)]; + $col = $row[TableMap::TYPE_NUM == $indexType ? 5 + $startcol : RestockingAlertTableMap::translateFieldName('UpdatedAt', TableMap::TYPE_PHPNAME, $indexType)]; if ($col === '0000-00-00 00:00:00') { $col = null; } @@ -552,10 +645,10 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface $this->ensureConsistency(); } - return $startcol + 4; // 4 = IcirelaisFreeshippingTableMap::NUM_HYDRATE_COLUMNS. + return $startcol + 6; // 6 = RestockingAlertTableMap::NUM_HYDRATE_COLUMNS. } catch (Exception $e) { - throw new PropelException("Error populating \IciRelais\Model\IcirelaisFreeshipping object", 0, $e); + throw new PropelException("Error populating \StockAlert\Model\RestockingAlert object", 0, $e); } } @@ -574,6 +667,9 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface */ public function ensureConsistency() { + if ($this->aProductSaleElements !== null && $this->product_sale_elements_id !== $this->aProductSaleElements->getId()) { + $this->aProductSaleElements = null; + } } // ensureConsistency /** @@ -581,10 +677,10 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * * 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. + * @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 + * @throws PropelException - if this object is deleted, unsaved or doesn't have pk match in db */ public function reload($deep = false, ConnectionInterface $con = null) { @@ -597,13 +693,13 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface } if ($con === null) { - $con = Propel::getServiceContainer()->getReadConnection(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $con = Propel::getServiceContainer()->getReadConnection(RestockingAlertTableMap::DATABASE_NAME); } // We don't need to alter the object instance pool; we're just modifying this instance // already in the pool. - $dataFetcher = ChildIcirelaisFreeshippingQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); + $dataFetcher = ChildRestockingAlertQuery::create(null, $this->buildPkeyCriteria())->setFormatter(ModelCriteria::FORMAT_STATEMENT)->find($con); $row = $dataFetcher->fetch(); $dataFetcher->close(); if (!$row) { @@ -613,17 +709,18 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface if ($deep) { // also de-associate any related objects? + $this->aProductSaleElements = null; } // if (deep) } /** * Removes this object from datastore and sets delete attribute. * - * @param ConnectionInterface $con + * @param ConnectionInterface $con * @return void * @throws PropelException - * @see IcirelaisFreeshipping::setDeleted() - * @see IcirelaisFreeshipping::isDeleted() + * @see RestockingAlert::setDeleted() + * @see RestockingAlert::isDeleted() */ public function delete(ConnectionInterface $con = null) { @@ -632,12 +729,12 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface } if ($con === null) { - $con = Propel::getServiceContainer()->getWriteConnection(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $con = Propel::getServiceContainer()->getWriteConnection(RestockingAlertTableMap::DATABASE_NAME); } $con->beginTransaction(); try { - $deleteQuery = ChildIcirelaisFreeshippingQuery::create() + $deleteQuery = ChildRestockingAlertQuery::create() ->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); if ($ret) { @@ -662,8 +759,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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. + * @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() */ @@ -674,7 +771,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface } if ($con === null) { - $con = Propel::getServiceContainer()->getWriteConnection(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $con = Propel::getServiceContainer()->getWriteConnection(RestockingAlertTableMap::DATABASE_NAME); } $con->beginTransaction(); @@ -684,16 +781,16 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface if ($isInsert) { $ret = $ret && $this->preInsert($con); // timestampable behavior - if (!$this->isColumnModified(IcirelaisFreeshippingTableMap::CREATED_AT)) { + if (!$this->isColumnModified(RestockingAlertTableMap::CREATED_AT)) { $this->setCreatedAt(time()); } - if (!$this->isColumnModified(IcirelaisFreeshippingTableMap::UPDATED_AT)) { + if (!$this->isColumnModified(RestockingAlertTableMap::UPDATED_AT)) { $this->setUpdatedAt(time()); } } else { $ret = $ret && $this->preUpdate($con); // timestampable behavior - if ($this->isModified() && !$this->isColumnModified(IcirelaisFreeshippingTableMap::UPDATED_AT)) { + if ($this->isModified() && !$this->isColumnModified(RestockingAlertTableMap::UPDATED_AT)) { $this->setUpdatedAt(time()); } } @@ -705,7 +802,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface $this->postUpdate($con); } $this->postSave($con); - IcirelaisFreeshippingTableMap::addInstanceToPool($this); + RestockingAlertTableMap::addInstanceToPool($this); } else { $affectedRows = 0; } @@ -724,8 +821,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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. + * @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() */ @@ -735,6 +832,18 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface 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->aProductSaleElements !== null) { + if ($this->aProductSaleElements->isModified() || $this->aProductSaleElements->isNew()) { + $affectedRows += $this->aProductSaleElements->save($con); + } + $this->setProductSaleElements($this->aProductSaleElements); + } + if ($this->isNew() || $this->isModified()) { // persist changes if ($this->isNew()) { @@ -756,7 +865,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Insert the row in the database. * - * @param ConnectionInterface $con + * @param ConnectionInterface $con * * @throws PropelException * @see doSave() @@ -766,27 +875,33 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface $modifiedColumns = array(); $index = 0; - $this->modifiedColumns[IcirelaisFreeshippingTableMap::ID] = true; + $this->modifiedColumns[RestockingAlertTableMap::ID] = true; if (null !== $this->id) { - throw new PropelException('Cannot insert a value for auto-increment primary key (' . IcirelaisFreeshippingTableMap::ID . ')'); + throw new PropelException('Cannot insert a value for auto-increment primary key (' . RestockingAlertTableMap::ID . ')'); } // check the columns in natural order for more readable SQL queries - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::ID)) { + if ($this->isColumnModified(RestockingAlertTableMap::ID)) { $modifiedColumns[':p' . $index++] = 'ID'; } - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::ACTIVE)) { - $modifiedColumns[':p' . $index++] = 'ACTIVE'; + if ($this->isColumnModified(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID)) { + $modifiedColumns[':p' . $index++] = 'PRODUCT_SALE_ELEMENTS_ID'; } - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::CREATED_AT)) { + if ($this->isColumnModified(RestockingAlertTableMap::EMAIL)) { + $modifiedColumns[':p' . $index++] = 'EMAIL'; + } + if ($this->isColumnModified(RestockingAlertTableMap::LOCALE)) { + $modifiedColumns[':p' . $index++] = 'LOCALE'; + } + if ($this->isColumnModified(RestockingAlertTableMap::CREATED_AT)) { $modifiedColumns[':p' . $index++] = 'CREATED_AT'; } - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::UPDATED_AT)) { + if ($this->isColumnModified(RestockingAlertTableMap::UPDATED_AT)) { $modifiedColumns[':p' . $index++] = 'UPDATED_AT'; } $sql = sprintf( - 'INSERT INTO icirelais_freeshipping (%s) VALUES (%s)', + 'INSERT INTO restocking_alert (%s) VALUES (%s)', implode(', ', $modifiedColumns), implode(', ', array_keys($modifiedColumns)) ); @@ -798,8 +913,14 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface case 'ID': $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); break; - case 'ACTIVE': - $stmt->bindValue($identifier, (int) $this->active, PDO::PARAM_INT); + case 'PRODUCT_SALE_ELEMENTS_ID': + $stmt->bindValue($identifier, $this->product_sale_elements_id, PDO::PARAM_INT); + break; + case 'EMAIL': + $stmt->bindValue($identifier, $this->email, PDO::PARAM_STR); + break; + case 'LOCALE': + $stmt->bindValue($identifier, $this->locale, PDO::PARAM_STR); break; case 'CREATED_AT': $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); @@ -828,7 +949,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Update the row in the database. * - * @param ConnectionInterface $con + * @param ConnectionInterface $con * * @return Integer Number of updated rows * @see doSave() @@ -844,16 +965,16 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * 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. + * @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 = IcirelaisFreeshippingTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $pos = RestockingAlertTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); $field = $this->getByPosition($pos); return $field; @@ -863,7 +984,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * Retrieves a field from the object by Position as specified in the xml schema. * Zero-based. * - * @param int $pos position in xml schema + * @param int $pos position in xml schema * @return mixed Value of field at $pos */ public function getByPosition($pos) @@ -873,12 +994,18 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface return $this->getId(); break; case 1: - return $this->getActive(); + return $this->getProductSaleElementsId(); break; case 2: - return $this->getCreatedAt(); + return $this->getEmail(); break; case 3: + return $this->getLocale(); + break; + case 4: + return $this->getCreatedAt(); + break; + case 5: return $this->getUpdatedAt(); break; default: @@ -893,49 +1020,58 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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 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()) + public function toArray($keyType = TableMap::TYPE_PHPNAME, $includeLazyLoadColumns = true, $alreadyDumpedObjects = array(), $includeForeignObjects = false) { - if (isset($alreadyDumpedObjects['IcirelaisFreeshipping'][$this->getPrimaryKey()])) { + if (isset($alreadyDumpedObjects['RestockingAlert'][$this->getPrimaryKey()])) { return '*RECURSION*'; } - $alreadyDumpedObjects['IcirelaisFreeshipping'][$this->getPrimaryKey()] = true; - $keys = IcirelaisFreeshippingTableMap::getFieldNames($keyType); + $alreadyDumpedObjects['RestockingAlert'][$this->getPrimaryKey()] = true; + $keys = RestockingAlertTableMap::getFieldNames($keyType); $result = array( $keys[0] => $this->getId(), - $keys[1] => $this->getActive(), - $keys[2] => $this->getCreatedAt(), - $keys[3] => $this->getUpdatedAt(), + $keys[1] => $this->getProductSaleElementsId(), + $keys[2] => $this->getEmail(), + $keys[3] => $this->getLocale(), + $keys[4] => $this->getCreatedAt(), + $keys[5] => $this->getUpdatedAt(), ); $virtualColumns = $this->virtualColumns; foreach ($virtualColumns as $key => $virtualColumn) { $result[$key] = $virtualColumn; } + if ($includeForeignObjects) { + if (null !== $this->aProductSaleElements) { + $result['ProductSaleElements'] = $this->aProductSaleElements->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. + * @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 = IcirelaisFreeshippingTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); + $pos = RestockingAlertTableMap::translateFieldName($name, $type, TableMap::TYPE_NUM); return $this->setByPosition($pos, $value); } @@ -944,8 +1080,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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 + * @param int $pos position in xml schema + * @param mixed $value field value * @return void */ public function setByPosition($pos, $value) @@ -955,12 +1091,18 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface $this->setId($value); break; case 1: - $this->setActive($value); + $this->setProductSaleElementsId($value); break; case 2: - $this->setCreatedAt($value); + $this->setEmail($value); break; case 3: + $this->setLocale($value); + break; + case 4: + $this->setCreatedAt($value); + break; + case 5: $this->setUpdatedAt($value); break; } // switch() @@ -979,18 +1121,20 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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. + * @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 = IcirelaisFreeshippingTableMap::getFieldNames($keyType); + $keys = RestockingAlertTableMap::getFieldNames($keyType); if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]); - if (array_key_exists($keys[1], $arr)) $this->setActive($arr[$keys[1]]); - if (array_key_exists($keys[2], $arr)) $this->setCreatedAt($arr[$keys[2]]); - if (array_key_exists($keys[3], $arr)) $this->setUpdatedAt($arr[$keys[3]]); + if (array_key_exists($keys[1], $arr)) $this->setProductSaleElementsId($arr[$keys[1]]); + if (array_key_exists($keys[2], $arr)) $this->setEmail($arr[$keys[2]]); + if (array_key_exists($keys[3], $arr)) $this->setLocale($arr[$keys[3]]); + if (array_key_exists($keys[4], $arr)) $this->setCreatedAt($arr[$keys[4]]); + if (array_key_exists($keys[5], $arr)) $this->setUpdatedAt($arr[$keys[5]]); } /** @@ -1000,12 +1144,15 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface */ public function buildCriteria() { - $criteria = new Criteria(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $criteria = new Criteria(RestockingAlertTableMap::DATABASE_NAME); + + if ($this->isColumnModified(RestockingAlertTableMap::ID)) $criteria->add(RestockingAlertTableMap::ID, $this->id); + if ($this->isColumnModified(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID)) $criteria->add(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $this->product_sale_elements_id); + if ($this->isColumnModified(RestockingAlertTableMap::EMAIL)) $criteria->add(RestockingAlertTableMap::EMAIL, $this->email); + if ($this->isColumnModified(RestockingAlertTableMap::LOCALE)) $criteria->add(RestockingAlertTableMap::LOCALE, $this->locale); + if ($this->isColumnModified(RestockingAlertTableMap::CREATED_AT)) $criteria->add(RestockingAlertTableMap::CREATED_AT, $this->created_at); + if ($this->isColumnModified(RestockingAlertTableMap::UPDATED_AT)) $criteria->add(RestockingAlertTableMap::UPDATED_AT, $this->updated_at); - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::ID)) $criteria->add(IcirelaisFreeshippingTableMap::ID, $this->id); - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::ACTIVE)) $criteria->add(IcirelaisFreeshippingTableMap::ACTIVE, $this->active); - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::CREATED_AT)) $criteria->add(IcirelaisFreeshippingTableMap::CREATED_AT, $this->created_at); - if ($this->isColumnModified(IcirelaisFreeshippingTableMap::UPDATED_AT)) $criteria->add(IcirelaisFreeshippingTableMap::UPDATED_AT, $this->updated_at); return $criteria; } @@ -1019,15 +1166,15 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface */ public function buildPkeyCriteria() { - $criteria = new Criteria(IcirelaisFreeshippingTableMap::DATABASE_NAME); - $criteria->add(IcirelaisFreeshippingTableMap::ID, $this->id); + $criteria = new Criteria(RestockingAlertTableMap::DATABASE_NAME); + $criteria->add(RestockingAlertTableMap::ID, $this->id); return $criteria; } /** * Returns the primary key for this object (row). - * @return int + * @return int */ public function getPrimaryKey() { @@ -1037,7 +1184,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Generic method to set the primary key (id column). * - * @param int $key Primary key. + * @param int $key Primary key. * @return void */ public function setPrimaryKey($key) @@ -1051,6 +1198,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface */ public function isPrimaryKeyNull() { + return null === $this->getId(); } @@ -1060,14 +1208,16 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * If desired, this method can also make copies of all associated (fkey referrers) * objects. * - * @param object $copyObj An object of \IciRelais\Model\IcirelaisFreeshipping (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. + * @param object $copyObj An object of \StockAlert\Model\RestockingAlert (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->setActive($this->getActive()); + $copyObj->setProductSaleElementsId($this->getProductSaleElementsId()); + $copyObj->setEmail($this->getEmail()); + $copyObj->setLocale($this->getLocale()); $copyObj->setCreatedAt($this->getCreatedAt()); $copyObj->setUpdatedAt($this->getUpdatedAt()); if ($makeNew) { @@ -1084,8 +1234,8 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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 \IciRelais\Model\IcirelaisFreeshipping Clone of current object. + * @param boolean $deepCopy Whether to also copy all rows that refer (by fkey) to the current row. + * @return \StockAlert\Model\RestockingAlert Clone of current object. * @throws PropelException */ public function copy($deepCopy = false) @@ -1098,13 +1248,66 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface return $copyObj; } + /** + * Declares an association between this object and a ChildProductSaleElements object. + * + * @param ChildProductSaleElements $v + * @return \StockAlert\Model\RestockingAlert The current object (for fluent API support) + * @throws PropelException + */ + public function setProductSaleElements(ChildProductSaleElements $v = null) + { + if ($v === null) { + $this->setProductSaleElementsId(NULL); + } else { + $this->setProductSaleElementsId($v->getId()); + } + + $this->aProductSaleElements = $v; + + // Add binding for other direction of this n:n relationship. + // If this object has already been added to the ChildProductSaleElements object, it will not be re-added. + if ($v !== null) { + $v->addRestockingAlert($this); + } + + + return $this; + } + + + /** + * Get the associated ChildProductSaleElements object + * + * @param ConnectionInterface $con Optional Connection object. + * @return ChildProductSaleElements The associated ChildProductSaleElements object. + * @throws PropelException + */ + public function getProductSaleElements(ConnectionInterface $con = null) + { + if ($this->aProductSaleElements === null && ($this->product_sale_elements_id !== null)) { + $this->aProductSaleElements = ProductSaleElementsQuery::create()->findPk($this->product_sale_elements_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->aProductSaleElements->addRestockingAlerts($this); + */ + } + + return $this->aProductSaleElements; + } + /** * Clears the current object and sets all attributes to their default values */ public function clear() { $this->id = null; - $this->active = null; + $this->product_sale_elements_id = null; + $this->email = null; + $this->locale = null; $this->created_at = null; $this->updated_at = null; $this->alreadyInSave = false; @@ -1121,13 +1324,14 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface * 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. + * @param boolean $deep Whether to also clear the references on all referrer objects. */ public function clearAllReferences($deep = false) { if ($deep) { } // if ($deep) + $this->aProductSaleElements = null; } /** @@ -1137,7 +1341,7 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface */ public function __toString() { - return (string) $this->exportTo(IcirelaisFreeshippingTableMap::DEFAULT_STRING_FORMAT); + return (string) $this->exportTo(RestockingAlertTableMap::DEFAULT_STRING_FORMAT); } // timestampable behavior @@ -1145,11 +1349,11 @@ abstract class IcirelaisFreeshipping implements ActiveRecordInterface /** * Mark the current object so that the update date doesn't get updated during next save * - * @return ChildIcirelaisFreeshipping The current object (for fluent API support) + * @return ChildRestockingAlert The current object (for fluent API support) */ public function keepUpdateDateUnchanged() { - $this->modifiedColumns[IcirelaisFreeshippingTableMap::UPDATED_AT] = true; + $this->modifiedColumns[RestockingAlertTableMap::UPDATED_AT] = true; return $this; } diff --git a/local/modules/StockAlert/Model/Base/RestockingAlertQuery.php b/local/modules/StockAlert/Model/Base/RestockingAlertQuery.php new file mode 100644 index 00000000..c8883cb3 --- /dev/null +++ b/local/modules/StockAlert/Model/Base/RestockingAlertQuery.php @@ -0,0 +1,700 @@ +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 ChildRestockingAlert|array|mixed the result, formatted by the current formatter + */ + public function findPk($key, $con = null) + { + if ($key === null) { + return null; + } + if ((null !== ($obj = RestockingAlertTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) { + // the object is already in the instance pool + return $obj; + } + if ($con === null) { + $con = Propel::getServiceContainer()->getReadConnection(RestockingAlertTableMap::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 ChildRestockingAlert A model object, or null if the key is not found + */ + protected function findPkSimple($key, $con) + { + $sql = 'SELECT ID, PRODUCT_SALE_ELEMENTS_ID, EMAIL, LOCALE, CREATED_AT, UPDATED_AT FROM restocking_alert 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 ChildRestockingAlert(); + $obj->hydrate($row); + RestockingAlertTableMap::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 ChildRestockingAlert|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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByPrimaryKey($key) + { + + return $this->addUsingAlias(RestockingAlertTableMap::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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByPrimaryKeys($keys) + { + + return $this->addUsingAlias(RestockingAlertTableMap::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 ChildRestockingAlertQuery 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(RestockingAlertTableMap::ID, $id['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($id['max'])) { + $this->addUsingAlias(RestockingAlertTableMap::ID, $id['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::ID, $id, $comparison); + } + + /** + * Filter the query on the product_sale_elements_id column + * + * Example usage: + * + * $query->filterByProductSaleElementsId(1234); // WHERE product_sale_elements_id = 1234 + * $query->filterByProductSaleElementsId(array(12, 34)); // WHERE product_sale_elements_id IN (12, 34) + * $query->filterByProductSaleElementsId(array('min' => 12)); // WHERE product_sale_elements_id > 12 + * + * + * @see filterByProductSaleElements() + * + * @param mixed $productSaleElementsId 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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByProductSaleElementsId($productSaleElementsId = null, $comparison = null) + { + if (is_array($productSaleElementsId)) { + $useMinMax = false; + if (isset($productSaleElementsId['min'])) { + $this->addUsingAlias(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $productSaleElementsId['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($productSaleElementsId['max'])) { + $this->addUsingAlias(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $productSaleElementsId['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $productSaleElementsId, $comparison); + } + + /** + * Filter the query on the email column + * + * Example usage: + * + * $query->filterByEmail('fooValue'); // WHERE email = 'fooValue' + * $query->filterByEmail('%fooValue%'); // WHERE email LIKE '%fooValue%' + * + * + * @param string $email 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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByEmail($email = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($email)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $email)) { + $email = str_replace('*', '%', $email); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::EMAIL, $email, $comparison); + } + + /** + * Filter the query on the locale column + * + * Example usage: + * + * $query->filterByLocale('fooValue'); // WHERE locale = 'fooValue' + * $query->filterByLocale('%fooValue%'); // WHERE locale LIKE '%fooValue%' + * + * + * @param string $locale 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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByLocale($locale = null, $comparison = null) + { + if (null === $comparison) { + if (is_array($locale)) { + $comparison = Criteria::IN; + } elseif (preg_match('/[\%\*]/', $locale)) { + $locale = str_replace('*', '%', $locale); + $comparison = Criteria::LIKE; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::LOCALE, $locale, $comparison); + } + + /** + * Filter the query on the created_at column + * + * Example usage: + * + * $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14' + * $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14' + * $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13' + * + * + * @param mixed $createdAt The value to use as filter. + * Values can be integers (unix timestamps), DateTime objects, or strings. + * Empty strings are treated as NULL. + * 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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByCreatedAt($createdAt = null, $comparison = null) + { + if (is_array($createdAt)) { + $useMinMax = false; + if (isset($createdAt['min'])) { + $this->addUsingAlias(RestockingAlertTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($createdAt['max'])) { + $this->addUsingAlias(RestockingAlertTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::CREATED_AT, $createdAt, $comparison); + } + + /** + * Filter the query on the updated_at column + * + * Example usage: + * + * $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14' + * $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14' + * $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13' + * + * + * @param mixed $updatedAt The value to use as filter. + * Values can be integers (unix timestamps), DateTime objects, or strings. + * Empty strings are treated as NULL. + * 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 ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByUpdatedAt($updatedAt = null, $comparison = null) + { + if (is_array($updatedAt)) { + $useMinMax = false; + if (isset($updatedAt['min'])) { + $this->addUsingAlias(RestockingAlertTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL); + $useMinMax = true; + } + if (isset($updatedAt['max'])) { + $this->addUsingAlias(RestockingAlertTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL); + $useMinMax = true; + } + if ($useMinMax) { + return $this; + } + if (null === $comparison) { + $comparison = Criteria::IN; + } + } + + return $this->addUsingAlias(RestockingAlertTableMap::UPDATED_AT, $updatedAt, $comparison); + } + + /** + * Filter the query by a related \Thelia\Model\ProductSaleElements object + * + * @param \Thelia\Model\ProductSaleElements|ObjectCollection $productSaleElements The related object(s) to use as filter + * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function filterByProductSaleElements($productSaleElements, $comparison = null) + { + if ($productSaleElements instanceof \Thelia\Model\ProductSaleElements) { + return $this + ->addUsingAlias(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $productSaleElements->getId(), $comparison); + } elseif ($productSaleElements instanceof ObjectCollection) { + if (null === $comparison) { + $comparison = Criteria::IN; + } + + return $this + ->addUsingAlias(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, $productSaleElements->toKeyValue('PrimaryKey', 'Id'), $comparison); + } else { + throw new PropelException('filterByProductSaleElements() only accepts arguments of type \Thelia\Model\ProductSaleElements or Collection'); + } + } + + /** + * Adds a JOIN clause to the query using the ProductSaleElements relation + * + * @param string $relationAlias optional alias for the relation + * @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join' + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function joinProductSaleElements($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + $tableMap = $this->getTableMap(); + $relationMap = $tableMap->getRelation('ProductSaleElements'); + + // 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, 'ProductSaleElements'); + } + + return $this; + } + + /** + * Use the ProductSaleElements relation ProductSaleElements 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\ProductSaleElementsQuery A secondary query class using the current class as primary query + */ + public function useProductSaleElementsQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN) + { + return $this + ->joinProductSaleElements($relationAlias, $joinType) + ->useQuery($relationAlias ? $relationAlias : 'ProductSaleElements', '\Thelia\Model\ProductSaleElementsQuery'); + } + + /** + * Exclude object from result + * + * @param ChildRestockingAlert $restockingAlert Object to remove from the list of results + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function prune($restockingAlert = null) + { + if ($restockingAlert) { + $this->addUsingAlias(RestockingAlertTableMap::ID, $restockingAlert->getId(), Criteria::NOT_EQUAL); + } + + return $this; + } + + /** + * Deletes all rows from the restocking_alert 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(RestockingAlertTableMap::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). + RestockingAlertTableMap::clearInstancePool(); + RestockingAlertTableMap::clearRelatedInstancePool(); + + $con->commit(); + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + + return $affectedRows; + } + + /** + * Performs a DELETE on the database, given a ChildRestockingAlert or Criteria object OR a primary key value. + * + * @param mixed $values Criteria or ChildRestockingAlert 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(RestockingAlertTableMap::DATABASE_NAME); + } + + $criteria = $this; + + // Set the correct dbName + $criteria->setDbName(RestockingAlertTableMap::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(); + + + RestockingAlertTableMap::removeInstanceFromPool($criteria); + + $affectedRows += ModelCriteria::delete($con); + RestockingAlertTableMap::clearRelatedInstancePool(); + $con->commit(); + + return $affectedRows; + } catch (PropelException $e) { + $con->rollBack(); + throw $e; + } + } + + // timestampable behavior + + /** + * Filter by the latest updated + * + * @param int $nbDays Maximum age of the latest update in days + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function recentlyUpdated($nbDays = 7) + { + return $this->addUsingAlias(RestockingAlertTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL); + } + + /** + * Filter by the latest created + * + * @param int $nbDays Maximum age of in days + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function recentlyCreated($nbDays = 7) + { + return $this->addUsingAlias(RestockingAlertTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL); + } + + /** + * Order by update date desc + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function lastUpdatedFirst() + { + return $this->addDescendingOrderByColumn(RestockingAlertTableMap::UPDATED_AT); + } + + /** + * Order by update date asc + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function firstUpdatedFirst() + { + return $this->addAscendingOrderByColumn(RestockingAlertTableMap::UPDATED_AT); + } + + /** + * Order by create date desc + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function lastCreatedFirst() + { + return $this->addDescendingOrderByColumn(RestockingAlertTableMap::CREATED_AT); + } + + /** + * Order by create date asc + * + * @return ChildRestockingAlertQuery The current query, for fluid interface + */ + public function firstCreatedFirst() + { + return $this->addAscendingOrderByColumn(RestockingAlertTableMap::CREATED_AT); + } + +} // RestockingAlertQuery diff --git a/local/modules/IciRelais/Model/Map/IcirelaisFreeshippingTableMap.php b/local/modules/StockAlert/Model/Map/RestockingAlertTableMap.php similarity index 55% rename from local/modules/IciRelais/Model/Map/IcirelaisFreeshippingTableMap.php rename to local/modules/StockAlert/Model/Map/RestockingAlertTableMap.php index 6186e269..0df5ba88 100644 --- a/local/modules/IciRelais/Model/Map/IcirelaisFreeshippingTableMap.php +++ b/local/modules/StockAlert/Model/Map/RestockingAlertTableMap.php @@ -1,9 +1,7 @@ array('Id', 'Active', 'CreatedAt', 'UpdatedAt', ), - self::TYPE_STUDLYPHPNAME => array('id', 'active', 'createdAt', 'updatedAt', ), - self::TYPE_COLNAME => array(IcirelaisFreeshippingTableMap::ID, IcirelaisFreeshippingTableMap::ACTIVE, IcirelaisFreeshippingTableMap::CREATED_AT, IcirelaisFreeshippingTableMap::UPDATED_AT, ), - self::TYPE_RAW_COLNAME => array('ID', 'ACTIVE', 'CREATED_AT', 'UPDATED_AT', ), - self::TYPE_FIELDNAME => array('id', 'active', 'created_at', 'updated_at', ), - self::TYPE_NUM => array(0, 1, 2, 3, ) + self::TYPE_PHPNAME => array('Id', 'ProductSaleElementsId', 'Email', 'Locale', 'CreatedAt', 'UpdatedAt', ), + self::TYPE_STUDLYPHPNAME => array('id', 'productSaleElementsId', 'email', 'locale', 'createdAt', 'updatedAt', ), + self::TYPE_COLNAME => array(RestockingAlertTableMap::ID, RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID, RestockingAlertTableMap::EMAIL, RestockingAlertTableMap::LOCALE, RestockingAlertTableMap::CREATED_AT, RestockingAlertTableMap::UPDATED_AT, ), + self::TYPE_RAW_COLNAME => array('ID', 'PRODUCT_SALE_ELEMENTS_ID', 'EMAIL', 'LOCALE', 'CREATED_AT', 'UPDATED_AT', ), + self::TYPE_FIELDNAME => array('id', 'product_sale_elements_id', 'email', 'locale', 'created_at', 'updated_at', ), + self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, ) ); /** @@ -116,12 +127,12 @@ class IcirelaisFreeshippingTableMap extends TableMap * e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0 */ protected static $fieldKeys = array ( - self::TYPE_PHPNAME => array('Id' => 0, 'Active' => 1, 'CreatedAt' => 2, 'UpdatedAt' => 3, ), - self::TYPE_STUDLYPHPNAME => array('id' => 0, 'active' => 1, 'createdAt' => 2, 'updatedAt' => 3, ), - self::TYPE_COLNAME => array(IcirelaisFreeshippingTableMap::ID => 0, IcirelaisFreeshippingTableMap::ACTIVE => 1, IcirelaisFreeshippingTableMap::CREATED_AT => 2, IcirelaisFreeshippingTableMap::UPDATED_AT => 3, ), - self::TYPE_RAW_COLNAME => array('ID' => 0, 'ACTIVE' => 1, 'CREATED_AT' => 2, 'UPDATED_AT' => 3, ), - self::TYPE_FIELDNAME => array('id' => 0, 'active' => 1, 'created_at' => 2, 'updated_at' => 3, ), - self::TYPE_NUM => array(0, 1, 2, 3, ) + self::TYPE_PHPNAME => array('Id' => 0, 'ProductSaleElementsId' => 1, 'Email' => 2, 'Locale' => 3, 'CreatedAt' => 4, 'UpdatedAt' => 5, ), + self::TYPE_STUDLYPHPNAME => array('id' => 0, 'productSaleElementsId' => 1, 'email' => 2, 'locale' => 3, 'createdAt' => 4, 'updatedAt' => 5, ), + self::TYPE_COLNAME => array(RestockingAlertTableMap::ID => 0, RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID => 1, RestockingAlertTableMap::EMAIL => 2, RestockingAlertTableMap::LOCALE => 3, RestockingAlertTableMap::CREATED_AT => 4, RestockingAlertTableMap::UPDATED_AT => 5, ), + self::TYPE_RAW_COLNAME => array('ID' => 0, 'PRODUCT_SALE_ELEMENTS_ID' => 1, 'EMAIL' => 2, 'LOCALE' => 3, 'CREATED_AT' => 4, 'UPDATED_AT' => 5, ), + self::TYPE_FIELDNAME => array('id' => 0, 'product_sale_elements_id' => 1, 'email' => 2, 'locale' => 3, 'created_at' => 4, 'updated_at' => 5, ), + self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, ) ); /** @@ -134,14 +145,16 @@ class IcirelaisFreeshippingTableMap extends TableMap public function initialize() { // attributes - $this->setName('icirelais_freeshipping'); - $this->setPhpName('IcirelaisFreeshipping'); - $this->setClassName('\\IciRelais\\Model\\IcirelaisFreeshipping'); - $this->setPackage('IciRelais.Model'); + $this->setName('restocking_alert'); + $this->setPhpName('RestockingAlert'); + $this->setClassName('\\StockAlert\\Model\\RestockingAlert'); + $this->setPackage('StockAlert.Model'); $this->setUseIdGenerator(true); // columns $this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null); - $this->addColumn('ACTIVE', 'Active', 'BOOLEAN', true, 1, null); + $this->addForeignKey('PRODUCT_SALE_ELEMENTS_ID', 'ProductSaleElementsId', 'INTEGER', 'product_sale_elements', 'ID', true, null, null); + $this->addColumn('EMAIL', 'Email', 'VARCHAR', false, 255, null); + $this->addColumn('LOCALE', 'Locale', 'VARCHAR', false, 45, null); $this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null); $this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null); } // initialize() @@ -151,6 +164,7 @@ class IcirelaisFreeshippingTableMap extends TableMap */ public function buildRelations() { + $this->addRelation('ProductSaleElements', '\\Thelia\\Model\\ProductSaleElements', RelationMap::MANY_TO_ONE, array('product_sale_elements_id' => 'id', ), 'CASCADE', null); } // buildRelations() /** @@ -175,7 +189,7 @@ class IcirelaisFreeshippingTableMap extends TableMap * @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 + * TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM */ public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM) { @@ -195,12 +209,13 @@ class IcirelaisFreeshippingTableMap extends TableMap * @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 + * 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 @@ -216,12 +231,12 @@ class IcirelaisFreeshippingTableMap extends TableMap * 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 + * @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 ? IcirelaisFreeshippingTableMap::CLASS_DEFAULT : IcirelaisFreeshippingTableMap::OM_CLASS; + return $withPrefix ? RestockingAlertTableMap::CLASS_DEFAULT : RestockingAlertTableMap::OM_CLASS; } /** @@ -234,22 +249,22 @@ class IcirelaisFreeshippingTableMap extends TableMap * 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 (IcirelaisFreeshipping object, last column rank) + * rethrown wrapped into a PropelException. + * @return array (RestockingAlert object, last column rank) */ public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM) { - $key = IcirelaisFreeshippingTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); - if (null !== ($obj = IcirelaisFreeshippingTableMap::getInstanceFromPool($key))) { + $key = RestockingAlertTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType); + if (null !== ($obj = RestockingAlertTableMap::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 + IcirelaisFreeshippingTableMap::NUM_HYDRATE_COLUMNS; + $col = $offset + RestockingAlertTableMap::NUM_HYDRATE_COLUMNS; } else { - $cls = IcirelaisFreeshippingTableMap::OM_CLASS; + $cls = RestockingAlertTableMap::OM_CLASS; $obj = new $cls(); $col = $obj->hydrate($row, $offset, false, $indexType); - IcirelaisFreeshippingTableMap::addInstanceToPool($obj, $key); + RestockingAlertTableMap::addInstanceToPool($obj, $key); } return array($obj, $col); @@ -259,10 +274,10 @@ class IcirelaisFreeshippingTableMap extends TableMap * The returned array will contain objects of the default type or * objects that inherit from the default. * - * @param DataFetcherInterface $dataFetcher + * @param DataFetcherInterface $dataFetcher * @return array - * @throws PropelException Any exceptions caught during processing will be - * rethrown wrapped into a PropelException. + * @throws PropelException Any exceptions caught during processing will be + * rethrown wrapped into a PropelException. */ public static function populateObjects(DataFetcherInterface $dataFetcher) { @@ -272,8 +287,8 @@ class IcirelaisFreeshippingTableMap extends TableMap $cls = static::getOMClass(false); // populate the object(s) while ($row = $dataFetcher->fetch()) { - $key = IcirelaisFreeshippingTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); - if (null !== ($obj = IcirelaisFreeshippingTableMap::getInstanceFromPool($key))) { + $key = RestockingAlertTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType()); + if (null !== ($obj = RestockingAlertTableMap::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 @@ -282,7 +297,7 @@ class IcirelaisFreeshippingTableMap extends TableMap $obj = new $cls(); $obj->hydrate($row); $results[] = $obj; - IcirelaisFreeshippingTableMap::addInstanceToPool($obj, $key); + RestockingAlertTableMap::addInstanceToPool($obj, $key); } // if key exists } @@ -295,21 +310,25 @@ class IcirelaisFreeshippingTableMap extends TableMap * 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 + * @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. + * rethrown wrapped into a PropelException. */ public static function addSelectColumns(Criteria $criteria, $alias = null) { if (null === $alias) { - $criteria->addSelectColumn(IcirelaisFreeshippingTableMap::ID); - $criteria->addSelectColumn(IcirelaisFreeshippingTableMap::ACTIVE); - $criteria->addSelectColumn(IcirelaisFreeshippingTableMap::CREATED_AT); - $criteria->addSelectColumn(IcirelaisFreeshippingTableMap::UPDATED_AT); + $criteria->addSelectColumn(RestockingAlertTableMap::ID); + $criteria->addSelectColumn(RestockingAlertTableMap::PRODUCT_SALE_ELEMENTS_ID); + $criteria->addSelectColumn(RestockingAlertTableMap::EMAIL); + $criteria->addSelectColumn(RestockingAlertTableMap::LOCALE); + $criteria->addSelectColumn(RestockingAlertTableMap::CREATED_AT); + $criteria->addSelectColumn(RestockingAlertTableMap::UPDATED_AT); } else { $criteria->addSelectColumn($alias . '.ID'); - $criteria->addSelectColumn($alias . '.ACTIVE'); + $criteria->addSelectColumn($alias . '.PRODUCT_SALE_ELEMENTS_ID'); + $criteria->addSelectColumn($alias . '.EMAIL'); + $criteria->addSelectColumn($alias . '.LOCALE'); $criteria->addSelectColumn($alias . '.CREATED_AT'); $criteria->addSelectColumn($alias . '.UPDATED_AT'); } @@ -320,11 +339,11 @@ class IcirelaisFreeshippingTableMap extends TableMap * 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. + * rethrown wrapped into a PropelException. */ public static function getTableMap() { - return Propel::getServiceContainer()->getDatabaseMap(IcirelaisFreeshippingTableMap::DATABASE_NAME)->getTable(IcirelaisFreeshippingTableMap::TABLE_NAME); + return Propel::getServiceContainer()->getDatabaseMap(RestockingAlertTableMap::DATABASE_NAME)->getTable(RestockingAlertTableMap::TABLE_NAME); } /** @@ -332,45 +351,45 @@ class IcirelaisFreeshippingTableMap extends TableMap */ public static function buildTableMap() { - $dbMap = Propel::getServiceContainer()->getDatabaseMap(IcirelaisFreeshippingTableMap::DATABASE_NAME); - if (!$dbMap->hasTable(IcirelaisFreeshippingTableMap::TABLE_NAME)) { - $dbMap->addTableObject(new IcirelaisFreeshippingTableMap()); + $dbMap = Propel::getServiceContainer()->getDatabaseMap(RestockingAlertTableMap::DATABASE_NAME); + if (!$dbMap->hasTable(RestockingAlertTableMap::TABLE_NAME)) { + $dbMap->addTableObject(new RestockingAlertTableMap()); } } /** - * Performs a DELETE on the database, given a IcirelaisFreeshipping or Criteria object OR a primary key value. + * Performs a DELETE on the database, given a RestockingAlert or Criteria object OR a primary key value. * - * @param mixed $values Criteria or IcirelaisFreeshipping 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. + * @param mixed $values Criteria or RestockingAlert 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(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $con = Propel::getServiceContainer()->getWriteConnection(RestockingAlertTableMap::DATABASE_NAME); } if ($values instanceof Criteria) { // rename for clarity $criteria = $values; - } elseif ($values instanceof \IciRelais\Model\IcirelaisFreeshipping) { // it's a model object + } elseif ($values instanceof \StockAlert\Model\RestockingAlert) { // 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(IcirelaisFreeshippingTableMap::DATABASE_NAME); - $criteria->add(IcirelaisFreeshippingTableMap::ID, (array) $values, Criteria::IN); + $criteria = new Criteria(RestockingAlertTableMap::DATABASE_NAME); + $criteria->add(RestockingAlertTableMap::ID, (array) $values, Criteria::IN); } - $query = IcirelaisFreeshippingQuery::create()->mergeWith($criteria); + $query = RestockingAlertQuery::create()->mergeWith($criteria); - if ($values instanceof Criteria) { IcirelaisFreeshippingTableMap::clearInstancePool(); + if ($values instanceof Criteria) { RestockingAlertTableMap::clearInstancePool(); } elseif (!is_object($values)) { // it's a primary key, or an array of pks - foreach ((array) $values as $singleval) { IcirelaisFreeshippingTableMap::removeInstanceFromPool($singleval); + foreach ((array) $values as $singleval) { RestockingAlertTableMap::removeInstanceFromPool($singleval); } } @@ -378,43 +397,44 @@ class IcirelaisFreeshippingTableMap extends TableMap } /** - * Deletes all rows from the icirelais_freeshipping table. + * Deletes all rows from the restocking_alert table. * - * @param ConnectionInterface $con the connection to use - * @return int The number of affected rows (if supported by underlying database driver). + * @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 IcirelaisFreeshippingQuery::create()->doDeleteAll($con); + return RestockingAlertQuery::create()->doDeleteAll($con); } /** - * Performs an INSERT on the database, given a IcirelaisFreeshipping or Criteria object. + * Performs an INSERT on the database, given a RestockingAlert or Criteria object. * - * @param mixed $criteria Criteria or IcirelaisFreeshipping 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. + * @param mixed $criteria Criteria or RestockingAlert 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(IcirelaisFreeshippingTableMap::DATABASE_NAME); + $con = Propel::getServiceContainer()->getWriteConnection(RestockingAlertTableMap::DATABASE_NAME); } if ($criteria instanceof Criteria) { $criteria = clone $criteria; // rename for clarity } else { - $criteria = $criteria->buildCriteria(); // build Criteria from IcirelaisFreeshipping object + $criteria = $criteria->buildCriteria(); // build Criteria from RestockingAlert object } - if ($criteria->containsKey(IcirelaisFreeshippingTableMap::ID) && $criteria->keyContainsValue(IcirelaisFreeshippingTableMap::ID) ) { - throw new PropelException('Cannot insert a value for auto-increment primary key ('.IcirelaisFreeshippingTableMap::ID.')'); + if ($criteria->containsKey(RestockingAlertTableMap::ID) && $criteria->keyContainsValue(RestockingAlertTableMap::ID) ) { + throw new PropelException('Cannot insert a value for auto-increment primary key ('.RestockingAlertTableMap::ID.')'); } + // Set the correct dbName - $query = IcirelaisFreeshippingQuery::create()->mergeWith($criteria); + $query = RestockingAlertQuery::create()->mergeWith($criteria); try { // use transaction because $criteria could contain info @@ -430,7 +450,7 @@ class IcirelaisFreeshippingTableMap extends TableMap return $pk; } -} // IcirelaisFreeshippingTableMap +} // RestockingAlertTableMap // This is the static code needed to register the TableMap for this table with the main Propel class. // -IcirelaisFreeshippingTableMap::buildTableMap(); +RestockingAlertTableMap::buildTableMap(); diff --git a/local/modules/StockAlert/Model/RestockingAlert.php b/local/modules/StockAlert/Model/RestockingAlert.php new file mode 100644 index 00000000..2dff47b3 --- /dev/null +++ b/local/modules/StockAlert/Model/RestockingAlert.php @@ -0,0 +1,10 @@ + + */ +class StockAlert extends BaseModule +{ + const MESSAGE_DOMAIN = "stockalert"; + + const CONFIG_ENABLED = "stockalert_enabled"; + const CONFIG_THRESHOLD = "stockalert_threshold"; + const CONFIG_EMAILS = "stockalert_emails"; + + const DEFAULT_ENABLED = "1"; + const DEFAULT_THRESHOLD = "1"; + const DEFAULT_EMAILS = ""; + + /** @var Translator */ + protected $translator = null; + + public static function getConfig() + { + $config = [ + 'enabled' => ("1" == ConfigQuery::read(self::CONFIG_ENABLED, self::DEFAULT_ENABLED)), + 'threshold' => intval(ConfigQuery::read(self::CONFIG_THRESHOLD, self::DEFAULT_THRESHOLD)), + 'emails' => explode(',', ConfigQuery::read(self::CONFIG_EMAILS, self::DEFAULT_EMAILS)) + ]; + + return $config; + } + + /** + * @param ConnectionInterface|null $con + * @throws \Propel\Runtime\Exception\PropelException + */ + public function postActivation(ConnectionInterface $con = null) + { + ConfigQuery::write(self::CONFIG_ENABLED, self::DEFAULT_ENABLED); + ConfigQuery::write(self::CONFIG_THRESHOLD, self::DEFAULT_THRESHOLD); + ConfigQuery::write(self::CONFIG_EMAILS, ConfigQuery::read('store_notification_emails')); + + // create new message + if (null === MessageQuery::create()->findOneByName('stockalert_customer')) { + (new Message()) + ->setName('stockalert_customer') + ->setHtmlTemplateFileName('alert-customer.html') + ->setTextTemplateFileName('alert-customer.txt') + ->setSecured(0) + ->setLocale('en_US') + ->setTitle('Stock Alert - Customer') + ->setSubject('Product {$product_title} is available again') + ->setLocale('fr_FR') + ->setTitle('Alerte Stock - Client') + ->setSubject('Le produit {$product_title} est à nouveau disponible') + ->save(); + + (new Message()) + ->setName('stockalert_administrator') + ->setHtmlTemplateFileName('alert-administrator.html') + ->setTextTemplateFileName('alert-administrator.txt') + ->setSecured(0) + ->setLocale('en_US') + ->setTitle('Stock Alert - Administrator') + ->setSubject('List of products nearly out of stock') + ->setLocale('fr_FR') + ->setTitle('Alerte Stock - Administrateur') + ->setSubject('Liste des produits qui seront bientôt en rupture de stock') + ->save(); + } + + try { + RestockingAlertQuery::create()->findOne(); + } catch (\Exception $e) { + $database = new Database($con); + $database->insertSql(null, [__DIR__ . '/Config/thelia.sql']); + } + } + + /** + * @param ConnectionInterface|null $con + * @param bool $deleteModuleData + * @throws \Propel\Runtime\Exception\PropelException + */ + public function destroy(ConnectionInterface $con = null, $deleteModuleData = false) + { + if (null !== $msg = MessageQuery::create()->findOneByName('stockalert_customer')) { + $msg->delete(); + } + if (null !== $msg = MessageQuery::create()->findOneByName('stockalert_administrator')) { + $msg->delete(); + } + + ConfigQuery::create() + ->filterByName([ self::CONFIG_ENABLED, self::CONFIG_THRESHOLD, self::CONFIG_EMAILS ]) + ->delete() + ; + + $database = new Database($con); + $database->insertSql(null, [__DIR__ . '/Config/destroy.sql']); + } + + protected function trans($id, array $parameters = [], $locale = null) + { + if (null === $this->translator) { + $this->translator = Translator::getInstance(); + } + + return $this->translator->trans($id, $parameters, StockAlert::MESSAGE_DOMAIN, $locale); + } + + public function getHooks() + { + return [ + [ + 'code' => 'product.stock-alert', + 'type' => TemplateDefinition::FRONT_OFFICE, + "title" => array( + "fr_FR" => "Hook alertes stock", + "en_US" => "Stock alert hook", + ), + "active" => true + ] + ]; + } +} diff --git a/local/modules/BetterPassword/composer.json b/local/modules/StockAlert/composer.json similarity index 59% rename from local/modules/BetterPassword/composer.json rename to local/modules/StockAlert/composer.json index 77da19ed..d1ce4ce8 100644 --- a/local/modules/BetterPassword/composer.json +++ b/local/modules/StockAlert/composer.json @@ -1,11 +1,11 @@ { - "name": "cqfdev/better-password-module", + "name": "thelia/stock-alert-module", "license": "LGPL-3.0+", "type": "thelia-module", "require": { "thelia/installer": "~1.1" }, "extra": { - "installer-name": "BetterPassword" + "installer-name": "StockAlert" } -} +} \ No newline at end of file diff --git a/local/modules/StockAlert/templates/backOffice/default/configuration.html b/local/modules/StockAlert/templates/backOffice/default/configuration.html new file mode 100644 index 00000000..a8561a24 --- /dev/null +++ b/local/modules/StockAlert/templates/backOffice/default/configuration.html @@ -0,0 +1,112 @@ + +
+
+ +
+ {intl d='stockalert.bo.default' l='Configuration.'} +
+ +
+
+ + {form name="stockalert.configuration.form"} + + + {form_hidden_fields form=$form} + + {render_form_field form=$form field="success_url" value={url path='/admin/module/StockAlert'}} + + {if {config key="check-available-stock"} != "1"} +

+ {intl d='stockalert.bo.default' l='The stock is not not use on the site. Please set the config variable check-available-stock to 1.'} +

+ {/if} + + {if $form_error} +
{$form_error_message}
+ {/if} + + {render_form_field form=$form field="enabled"} + + {render_form_field form=$form field="threshold"} + + {render_form_field form=$form field="emails"} + + + + {/form} + +
+ +
+ +
+
+ +
+
+ +
+ {intl d='stockalert.bo.default' l='List of current subscriptions.'} +
+ {$limit={$smarty.get.limit|default:100}} + {$page={$smarty.get.page|default:1}} + + {if {count type="restocking-alert"} < $limit * $page} + {$page=1} + {/if} + +
+ {ifloop rel="restocking-alert"} +
+ + + + + + + {**} + + + + {loop type="restocking-alert" name="restocking-alert" limit=$limit page=$page} + + + + + + {/loop} + + + + + + +
{intl d='stockalert.bo.default' l='Date'}{intl d='stockalert.bo.default' l='Email'}{intl d='stockalert.bo.default' l='Product'}{intl l='Actions'}
{format_date date=$CREATE_DATE output="date"}{$EMAIL} + {loop type="product_sale_elements" name="pse" id=$PRODUCT_SALE_ELEMENTS_ID limit="1"} + {loop type="product" name="product" id=$PRODUCT_ID limit="1"} + {$ID}. {$TITLE} + {/loop} + {/loop} +
+ {include + file = "includes/pagination.html" + + loop_ref = "restocking-alert" + max_page_count = 10 + page_url = {url path='/admin/module/StockAlert'} + } +
+
+ {/ifloop} + {elseloop rel="restocking-alert"} +
+

+ {intl d='stockalert.bo.default' l='There is no subscriptions.'} +

+
+ {/elseloop} +
+
+
diff --git a/local/modules/StockAlert/templates/email/default/alert-administrator.html b/local/modules/StockAlert/templates/email/default/alert-administrator.html new file mode 100644 index 00000000..92ecf932 --- /dev/null +++ b/local/modules/StockAlert/templates/email/default/alert-administrator.html @@ -0,0 +1,15 @@ +{default_translation_domain domain="stockalert.email.default"} + +

{intl l="Hi" },

+ +

{intl l="Some product(s) is (are) going to be out of stock :"}

+{$products={','|implode:$products_id}} +{loop type="product" name="product" id=$products visible="*" backend_context="yes" lang=$locale} +

{$ID}: {$REF} - {$TITLE} :

+ +{/loop} + +

{intl l="Best Regards."}

diff --git a/local/modules/StockAlert/templates/email/default/alert-administrator.txt b/local/modules/StockAlert/templates/email/default/alert-administrator.txt new file mode 100644 index 00000000..ed0e182f --- /dev/null +++ b/local/modules/StockAlert/templates/email/default/alert-administrator.txt @@ -0,0 +1,15 @@ +{default_translation_domain domain="stockalert.email.default"} + +{intl l="Hi" }, + +{intl l="Some product(s) is (are) going to be out of stock :"} +{$products={','|implode:$products_id}} +{loop type="product" name="product" id=$products visible="*" backend_context="yes" lang=$locale} +{$ID}. {$TITLE} : + +url : {$URL} +admin url : {url path='/admin/products/update' product_id=$ID} + +{/loop} + +{intl l="Best Regards."} \ No newline at end of file diff --git a/local/modules/StockAlert/templates/email/default/alert-customer.html b/local/modules/StockAlert/templates/email/default/alert-customer.html new file mode 100644 index 00000000..f6f86263 --- /dev/null +++ b/local/modules/StockAlert/templates/email/default/alert-customer.html @@ -0,0 +1,21 @@ +{default_translation_domain domain="stockalert.email.default"} + +

{intl l="Hi" },

+ +{loop type="product" name="product" id=$product_id limit="1" lang=$locale} + {$pse=[]} + {loop name="pse" type="product_sale_elements" id=$pse_id|default:0} + {loop name="combi" type="attribute_combination" product_sale_elements="$ID"} + {$pse[]=$ATTRIBUTE_AVAILABILITY_TITLE}{*$ATTRIBUTE_TITLE*} + {/loop} + {/loop} + + {$pse={', '|implode:$pse}} +

{intl l="The product %title (%pse) is now available." title=$TITLE pse=$pse}

+ +

{intl l='You can now order this product here.' url=$URL}

+{/loop} + +

{intl l="Feel free to contact us for any further information"}

+ +

{intl l="Best Regards."}

diff --git a/local/modules/StockAlert/templates/email/default/alert-customer.txt b/local/modules/StockAlert/templates/email/default/alert-customer.txt new file mode 100644 index 00000000..fca75032 --- /dev/null +++ b/local/modules/StockAlert/templates/email/default/alert-customer.txt @@ -0,0 +1,21 @@ +{default_translation_domain domain="stockalert.email.default"} + +{intl l="Hi" }, + +{loop type="product" name="product" id=$product_id limit="1" lang=$locale} + +{$pse=[]} +{loop name="pse" type="product_sale_elements" id=$pse_id} +{loop name="combi" type="attribute_combination" product_sale_elements="$ID"} +{$pse[]=$ATTRIBUTE_AVAILABILITY_TITLE}{*$ATTRIBUTE_TITLE*} +{/loop} +{/loop} +{$pse={', '|implode:$pse}} +{intl l="The product %title (%pse) is available again." title=$TITLE pse=$pse} + +{intl l="You can now order this product : %url" url=$URL} +{/loop} + +{intl l="Feel free to contact us for any further information"} + +{intl l="Best Regards."} \ No newline at end of file diff --git a/local/modules/StockAlert/templates/frontOffice/default/product-details-bottom.html b/local/modules/StockAlert/templates/frontOffice/default/product-details-bottom.html new file mode 100644 index 00000000..e69fe9ea --- /dev/null +++ b/local/modules/StockAlert/templates/frontOffice/default/product-details-bottom.html @@ -0,0 +1,29 @@ + diff --git a/local/modules/StockAlert/templates/frontOffice/default/product.javascript-initialization.html b/local/modules/StockAlert/templates/frontOffice/default/product.javascript-initialization.html new file mode 100644 index 00000000..ca57afd9 --- /dev/null +++ b/local/modules/StockAlert/templates/frontOffice/default/product.javascript-initialization.html @@ -0,0 +1,66 @@ + \ No newline at end of file diff --git a/templates/frontOffice/boutique/assets/dist/css/thelia.min.css b/templates/frontOffice/boutique/assets/dist/css/thelia.min.css index f3675a84..a89283b9 100644 --- a/templates/frontOffice/boutique/assets/dist/css/thelia.min.css +++ b/templates/frontOffice/boutique/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);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}}/*! + *//*! 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{color:#b66f09;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}#categories.block-nav .block-title,#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}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}#payment-success.panel .panel-heading .payment-method,pre code{font-size:inherit}.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;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{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}}.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;background-image:none;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;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{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:#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%}.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,.navbar-toggle{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>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{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{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>.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}.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;text-align:center;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;border-radius:.25em}.badge,.progress-bar,.tooltip{font-size:12px}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;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-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:#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}.modal.in .modal-dialog{-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;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;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%;border-radius:10px}.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}.product-price .price-label,.text-hide{color:transparent;border:0;text-shadow:none}.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;background-color:transparent}@-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 + */@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;-ms-transform:translate(0,0);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{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"}.cart-warning:before,.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%}.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}.alert-warning:before,.breadcrumb>li+li:before,.cart-warning:before,.js .dropdown-toggle:after{font:normal normal normal 14px/1 FontAwesome}.cart-warning>a{color:inherit}.cart-warning:before{text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);display:block;font-size:2.2em}.breadcrumb>li+li:before,.js .dropdown-toggle:after{-ms-transform:translate(0,0);text-rendering:auto;-moz-osx-font-smoothing:grayscale}#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}.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-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%}}#brands .brands>ul .item>article .brand-image>img,.grid .item .product-image>img,.list .item>article .product-image>img,.loader{width:100%}.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;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{display:inline-block;font-size:inherit;-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f078"}#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{text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);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:before,.block-nav .block-content li a.accordion-toggle:after{font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-moz-osx-font-smoothing:grayscale}.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-size:inherit;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);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-size:inherit;-webkit-font-smoothing:antialiased;-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}.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}.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}.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}.has-error .help-block:before,.navbar li.cart-not-empty>a.cart:before,.navbar li>a.home:before,.navbar li>a.login:before{font:normal normal normal 14px/1 FontAwesome}.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}#account .panel,.dropdown-menu,.modal-content,.popover{box-shadow:none}.has-error .help-block:before{display:inline-block;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)}#filters>h3:before,.overlay:after{content:"\f002"}.overlay:after{font-family:FontAwesome;color:#fff;text-align:center;-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{-ms-transform:translate(0,50%);transform:translate(0,50%)}.navbar li>a.home:before{display:inline-block;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f015";color:#c9c9c9;font-size:26px;line-height:0;margin-right:.5em;position:relative;top:3px}#product-details .product-promo .sale-saving:before,.navbar li.cart-not-empty>a.cart:before,.navbar li>a.login:before{display:inline-block;text-rendering:auto;-moz-osx-font-smoothing:grayscale;-ms-transform:translate(0,0)}.navbar li>a.login:before{-webkit-font-smoothing:antialiased;transform:translate(0,0);content:"\f007";color:#f49a17;font-size:19px;line-height:0;margin-right:.5em}.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{-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;background-color:transparent;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: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}#delivery-address.panel .panel-body,#delivery-method.panel .panel-body,#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{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,.block.block-newsletter .block-content form .form-group:before{font:normal normal normal 14px/1 FontAwesome;-moz-osx-font-smoothing:grayscale;text-rendering:auto}#filters>h3:before{display:inline-block;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);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-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-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%}#account .panel-title>a:before,#account-info .list-info .email:before,#account-info .list-info .mobile:before,#account-info .list-info .tel:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;-moz-osx-font-smoothing:grayscale}#payment-success.panel .panel-body{padding:20px 40px}#payment-success.panel .panel-body>h3{color:#f49a17}#account .panel{border-color:#fff}#account .panel-title>a:before{font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-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{text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f10b";font-size:30px}#account-info .list-info .tel:before{text-rendering:auto;-webkit-font-smoothing:antialiased;-ms-transform:translate(0,0);transform:translate(0,0);content:"\f095";font-size:22px}#account-info .list-info .email:before{text-rendering:auto;-webkit-font-smoothing:antialiased;-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} \ No newline at end of file diff --git a/templates/frontOffice/boutique/assets/dist/img/218x146.png b/templates/frontOffice/boutique/assets/dist/img/218x146.png index 6e964a2c..07f043b1 100644 Binary files a/templates/frontOffice/boutique/assets/dist/img/218x146.png and b/templates/frontOffice/boutique/assets/dist/img/218x146.png differ diff --git a/templates/frontOffice/boutique/assets/dist/img/280x196.png b/templates/frontOffice/boutique/assets/dist/img/280x196.png index 592012de..0df3c940 100644 Binary files a/templates/frontOffice/boutique/assets/dist/img/280x196.png and b/templates/frontOffice/boutique/assets/dist/img/280x196.png differ diff --git a/templates/frontOffice/boutique/assets/dist/img/favicon.png b/templates/frontOffice/boutique/assets/dist/img/favicon.png index e481a99d..5669f3e7 100644 Binary files a/templates/frontOffice/boutique/assets/dist/img/favicon.png and b/templates/frontOffice/boutique/assets/dist/img/favicon.png differ diff --git a/templates/frontOffice/boutique/assets/dist/img/logo.png b/templates/frontOffice/boutique/assets/dist/img/logo.png index 6cb56aea..56ab1ce8 100644 Binary files a/templates/frontOffice/boutique/assets/dist/img/logo.png and b/templates/frontOffice/boutique/assets/dist/img/logo.png differ diff --git a/templates/frontOffice/boutique/assets/dist/js/thelia.min.js b/templates/frontOffice/boutique/assets/dist/js/thelia.min.js index 812cae59..6a254d90 100644 --- a/templates/frontOffice/boutique/assets/dist/js/thelia.min.js +++ b/templates/frontOffice/boutique/assets/dist/js/thelia.min.js @@ -1 +1 @@ -!function(){for(var a,b=function(){},c=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],d=c.length,e=window.console=window.console||{};d--;)a=c[d],e[a]||(e[a]=b)}();var pseManager=function(a){function b(){m={id:a("#pse-id"),product:a("#product"),name:a("#pse-name"),ref:a("#pse-ref"),ean:a("#pse-ean"),availability:a("#pse-availability"),validity:a("#pse-validity"),quantity:a("#quantity"),promo:a("#pse-promo"),"new":a("#pse-new"),weight:a("#pse-weight"),price:a("#pse-price"),priceOld:a("#pse-price-old"),submit:a("#pse-submit"),options:{},pseId:null,useFallback:!1,fallback:a("#pse-options .pse-fallback")}}function c(){var b,c=null,f=null,g=null,h=null,i=[];if(m.pseId=m.id.val(),PSE_COUNT>1)if(m.useFallback=j(),m.useFallback){a("#pse-options .option-option").remove();for(c in PSE){if(h=PSE[c].combinations,i=[],void 0!==h)for(b=0;b"+i.join(", ")+"")}a("#pse-options .pse-fallback").on("change",function(){e()})}else{a("#pse-options .option-fallback").remove(),a("#pse-options .pse-option").each(function(){var b=a(this);b.data("attribute")in PSE_COMBINATIONS?(m.options[b.data("attribute")]=b,b.on("change",e)):b.closest(".option").remove()});for(g in PSE_COMBINATIONS_VALUE)f=PSE_COMBINATIONS_VALUE[g],m.options[f[1]].append("");d()}}function d(a){var b,c=null;if(c=PSE[a||m.pseId],void 0!==c)if(m.useFallback)m.fallbak.val(c.id);else if(void 0!==c)for(var d=0;d1&&(m.useFallback?b=m.fallback.val():(a=k(),b=i(a),b?m.validity.hide():(f(),d())),m.id.val(b),m.pseId=b),g()}function f(){var a=m.validity;a.stop().show("fast",function(){setTimeout(function(){a.stop().hide("fast")},3e3)})}function g(){var a,b,c=PSE[m.pseId],d=[];if(void 0!==c){if(m.ref.html(c.ref),PSE_COUNT>1){for(b=0;b0||!PSE_CHECK_AVAILABILITY?(h(!0),parseInt(m.quantity.val())>c.quantity&&m.quantity.val(c.quantity),PSE_CHECK_AVAILABILITY?m.quantity.attr("max",c.quantity):(m.quantity.attr("max",PSE_DEFAULT_AVAILABLE_STOCK),m.quantity.val("1"))):h(!1),c.isPromo?(m.priceOld.html(c.price),m.price.html(c.promo)):(m.priceOld.html(""),m.price.html(c.price))}else h(!1)}function h(a){a?(m.availability.removeClass("out-of-stock").addClass("in-stock").attr("href","http://schema.org/InStock"),m.submit.prop("disabled",!1)):(m.availability.removeClass("in-stock").addClass("out-of-stock").attr("href","http://schema.org/OutOfStock"),m.submit.prop("disabled",!0))}function i(a){var b,c,d,e,f,g=null;for(g in PSE)if(b=g,c=PSE[g].combinations,void 0!==c){for(d=0;d=d}function k(){var a,b=[];for(a in m.options)b.push(m.options[a].val());return b}var l={},m={};return l.load=function(){b(),c(),e()},l}(jQuery);!function(a){var b={"address.delete":function(b){a.post(b.attr("href"),function(a){a.success?b.closest("tr").remove():bootbox.alert(a.message)})}};a(document).ready(function(){var c=a('
');a("body").append(c),a(document).ajaxStart(function(){c.show()}).ajaxStop(function(){c.hide()}).ajaxError(function(){c.hide()});var d=a(window).width()>768?!0:!1;a(".navbar").on("click.subnav","[data-toggle=dropdown]",function(b){return a(this).parent().hasClass("open")&&a(this).is(b.target)?!1:void 0}).on("mouseenter.subnav",".dropdown",function(){a(this).hasClass("open")||a(this).addClass("open")}).on("mouseleave.subnav",".dropdown",function(){var b=a(this);b.hasClass("open")&&(0===b.find(":input:focus").length?b.removeClass("open"):b.find(":input:focus").one("blur",function(){b.trigger("mouseleave.subnav")}))}),a("body").tooltip({selector:"[data-toggle=tooltip]"}),a(document).on("click.confirm","[data-confirm]",function(){var c=a(this),d=c.attr("href"),e=c.attr("data-confirm-callback"),f=""!==c.attr("data-confirm")?c.attr("data-confirm"):"Are you sure?";return bootbox.confirm(f,function(f){if(f)if(e&&a.isFunction(b[e]))b[e](c);else if(d)window.location.href=d;else{var g=c.closest("form");g.size()>0&&g.submit()}}),!1}),a(document).on("click.product-quickview",".product-quickview",function(){return d?(a.get(this.href,function(b){bootbox.hideAll(),bootbox.dialog({message:a("#product",b),onEscape:function(){bootbox.hideAll()}}),window.pseManager.load()}),!1):void 0}),"undefined"!=typeof window.PSE_FORM&&window.pseManager.load(),a(document).on("submit.form-product",".form-product",function(){if(d){var b=a(this).attr("action"),c=a("input[name$='product_id']",this).val(),e=a("input.pse-id",this).val();return a.ajax({type:"POST",data:a(this).serialize(),url:b,success:function(b){a(".cart-container").html(a(b).html()),a.ajax({url:addCartMessageUrl,data:{product_id:c,pse_id:e},success:function(a){bootbox.hideAll(),bootbox.dialog({message:a,onEscape:function(){bootbox.hideAll()}})}})},error:function(a){console.log("Error.",a)}}),!1}});var e=a("#category-products"),f=e.parent();f.on("click.view-mode","[data-toggle=view]",function(){return a(this).hasClass("btn-grid")&&f.hasClass("grid")||a(this).hasClass("btn-list")&&f.hasClass("list")?void 0:(c.show(),setTimeout(function(){f.toggleClass("grid").toggleClass("list"),c.hide()},400),!1)});var g=a("#form-login");g.on("change.account",":radio",function(){"0"===a(this).val()?a("#password",g).val("").prop("disabled",!0):a("#password",g).prop("disabled",!1)}).find(":radio:checked").trigger("change.account"),a("#form-newsletter-mini").on("submit.newsletter",function(){return a.ajax({url:a(this).attr("action"),type:a(this).attr("method"),data:a(this).serialize(),dataType:"json",success:function(a){bootbox.alert(a.message)},error:function(b){try{bootbox.alert(a.parseJSON(b.responseText).message)}catch(c){bootbox.alert(b.responseText)}}}),!1}),a("#form-filters").each(function(){var b=a(this);b.on("change.filter",":checkbox",function(){c.show(),b.submit()}).find(".group-btn > .btn").addClass("sr-only")}),a(document).on("click.thumbnails","#product-thumbnails .thumbnail",function(){if(a(this).hasClass("active"))return!1;var b=a(this).closest("#product-gallery");return a(".product-image > img",b).attr("src",a(this).attr("href")),a(".thumbnail",b).removeClass("active"),a(this).addClass("active"),!1}),a("#product-gallery").each(function(){a(".item",this).size()>1&&a("#product-thumbnails",this).carousel({interval:!1}).find(".carousel-control").show()}),a("#payment-method").each(function(){var b=a("label",this);b.on("change",":radio",function(){b.removeClass("active"),b.filter('[for="'+a(this).attr("id")+'"]').addClass("active")}).filter(":has(:checked)").addClass("active")}),a("#form-contact, #form-register, #form-address").validate({highlight:function(b){a(b).closest(".form-group").addClass("has-error")},unhighlight:function(b){a(b).closest(".form-group").removeClass("has-error")},errorElement:"span",errorClass:"help-block"}),a("#content").on("change.toolbarfilter","#limit-top, #sortby-top",function(){window.location=a(this).val()}),g.each(function(){var b=a('input[type="email"]',g),c=a("#account1",g);b.on("keypress",function(){c.click()})})})}(jQuery),function(a){a(document).ready(function(){var b=function(){return initialize=function(b){var c={};c.state=a(b),c.stateId=c.state.val(),c.country=a(c.state.data("thelia-country")),c.countryId=c.country.val(),c.block=a(c.state.data("thelia-toggle")),c.states=c.state.children().clone(),c.state.children().remove();var d=function(){var b=c.country.val(),d=c.state.val(),e=!1;null!==d&&""!==d&&(c.stateId=d),c.state.children().remove(),c.states.each(function(){var d=a(this);d.data("country")==b&&(d.appendTo(c.state),e=!0)}),e?(c.state.val(c.stateId),c.block.removeClass("hidden")):c.block.addClass("hidden")};c.country.on("change",d),d()},{init:function(){a("[data-thelia-state]").each(function(){initialize(this)})}}}();b.init()})}(jQuery); \ No newline at end of file +!function(){for(var a,b=function(){},c=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],d=c.length,e=window.console=window.console||{};d--;)a=c[d],e[a]||(e[a]=b)}();var nouvelId,pseManager=function(a){function b(){m={id:a("#pse-id"),product:a("#product"),name:a("#pse-name"),ref:a("#pse-ref"),ean:a("#pse-ean"),availability:a("#pse-availability"),validity:a("#pse-validity"),lblQuantity:a("#lblQuantity"),unitePoids:a("#unitePoids"),quantity:a("#quantity"),promo:a("#pse-promo"),new:a("#pse-new"),weight:a("#pse-weight"),price:a("#pse-price"),priceOld:a("#pse-price-old"),submit:a("#pse-submit"),options:{},pseId:null,useFallback:!1,fallback:a("#pse-options .pse-fallback")}}function c(){var b,c=null,f=null,g=null,h=null,i=[];if(m.pseId=m.id.val(),PSE_COUNT>1)if(m.useFallback=j(),m.useFallback){a("#pse-options .option-option").remove();for(c in PSE){if(h=PSE[c].combinations,i=[],void 0!==h)for(b=0;b"+i.join(", ")+"")}a("#pse-options .pse-fallback").on("change",function(){e()})}else{a("#pse-options .option-fallback").remove(),a("#pse-options .pse-option").each(function(){var b=a(this);b.data("attribute")in PSE_COMBINATIONS?(m.options[b.data("attribute")]=b,b.on("change",e)):b.closest(".option").remove()});for(g in PSE_COMBINATIONS_VALUE)f=PSE_COMBINATIONS_VALUE[g],m.options[f[1]].append("");d()}}function d(a){var b,c=null;if(void 0!==(c=PSE[a||m.pseId]))if(m.useFallback)m.fallbak.val(c.id);else if(void 0!==c)for(var d=0;d1&&(m.useFallback?b=m.fallback.val():(a=k(),b=i(a),b?m.validity.hide():(f(),d())),m.id.val(b),m.pseId=b),g()}function f(){var a=m.validity;a.stop().show("fast",function(){setTimeout(function(){a.stop().hide("fast")},3e3)})}function g(){var a,b,c=PSE[m.pseId],d=[];if(void 0!==c){if(m.ref.html(c.ref),PSE_COUNT>1){for(b=0;b0||!PSE_CHECK_AVAILABILITY?(h(!0),parseInt(m.quantity.val())>c.quantity&&m.quantity.val(c.quantity),PSE_CHECK_AVAILABILITY?m.quantity.attr("max",c.quantity):(m.quantity.attr("max",PSE_DEFAULT_AVAILABLE_STOCK),m.quantity.val("1"))):h(!1),c.isPromo?(m.priceOld.html(c.price),m.price.html(c.promo)):(m.priceOld.html(""),m.price.html(c.price))}else h(!1)}function h(a){a?(m.availability.removeClass("out-of-stock").addClass("in-stock").attr("href","http://schema.org/InStock"),m.submit.prop("disabled",!1)):(m.availability.removeClass("in-stock").addClass("out-of-stock").attr("href","http://schema.org/OutOfStock"),m.submit.prop("disabled",!0))}function i(a){var b,c,d,e,f,g=null;for(g in PSE)if(b=g,void 0!==(c=PSE[g].combinations)){for(d=0;d');a("body").append(c),a(document).ajaxStart(function(){c.show()}).ajaxStop(function(){c.hide()}).ajaxError(function(){c.hide()});var d=a(window).width()>768;a(".navbar").on("click.subnav","[data-toggle=dropdown]",function(b){if(a(this).parent().hasClass("open")&&a(this).is(b.target))return!1}).on("mouseenter.subnav",".dropdown",function(){a(this).hasClass("open")||a(this).addClass("open")}).on("mouseleave.subnav",".dropdown",function(){var b=a(this);b.hasClass("open")&&(0===b.find(":input:focus").length?b.removeClass("open"):b.find(":input:focus").one("blur",function(){b.trigger("mouseleave.subnav")}))}),a("body").tooltip({selector:"[data-toggle=tooltip]"}),a(document).on("click.confirm","[data-confirm]",function(){var c=a(this),d=c.attr("href"),e=c.attr("data-confirm-callback"),f=""!==c.attr("data-confirm")?c.attr("data-confirm"):"Are you sure?";return bootbox.confirm(f,function(f){if(f)if(e&&a.isFunction(b[e]))b[e](c);else if(d)window.location.href=d;else{var g=c.closest("form");g.size()>0&&g.submit()}}),!1}),a(document).on("click.product-quickview",".product-quickview",function(){if(d)return a.get(this.href,function(b){bootbox.hideAll(),bootbox.dialog({message:a("#product",b),onEscape:function(){bootbox.hideAll()}}),window.pseManager.load()}),!1}),void 0!==window.PSE_FORM&&window.pseManager.load(),a(document).on("submit.form-product",".form-product",function(){if(d){var b=a(this).attr("action"),c=a("input[name$='product_id']",this).val(),e=a("input.pse-id",this).val();return a.ajax({type:"POST",data:a(this).serialize(),url:b,success:function(b){a(".cart-container").html(a(b).html()),a.ajax({url:addCartMessageUrl,data:{product_id:c,pse_id:e},success:function(a){bootbox.hideAll(),bootbox.dialog({message:a,onEscape:function(){bootbox.hideAll()}})}})},error:function(a){console.log("Error.",a)}}),!1}});var e=a("#category-products"),f=e.parent();f.on("click.view-mode","[data-toggle=view]",function(){if(!(a(this).hasClass("btn-grid")&&f.hasClass("grid")||a(this).hasClass("btn-list")&&f.hasClass("list")))return c.show(),setTimeout(function(){f.toggleClass("grid").toggleClass("list"),c.hide()},400),!1});var g=a("#form-login");g.on("change.account",":radio",function(){"0"===a(this).val()?a("#password",g).val("").prop("disabled",!0):a("#password",g).prop("disabled",!1)}).find(":radio:checked").trigger("change.account"),a("#form-newsletter-mini").on("submit.newsletter",function(){return a.ajax({url:a(this).attr("action"),type:a(this).attr("method"),data:a(this).serialize(),dataType:"json",success:function(a){bootbox.alert(a.message)},error:function(b){try{bootbox.alert(a.parseJSON(b.responseText).message)}catch(c){bootbox.alert(b.responseText)}}}),!1}),a("#form-filters").each(function(){var b=a(this);b.on("change.filter",":checkbox",function(){c.show(),b.submit()}).find(".group-btn > .btn").addClass("sr-only")}),a(document).on("click.thumbnails","#product-thumbnails .thumbnail",function(){if(a(this).hasClass("active"))return!1;var b=a(this).closest("#product-gallery");return a(".product-image > img",b).attr("src",a(this).attr("href")),a(".thumbnail",b).removeClass("active"),a(this).addClass("active"),!1}),a("#product-gallery").each(function(){a(".item",this).size()>1&&a("#product-thumbnails",this).carousel({interval:!1}).find(".carousel-control").show()}),a("#payment-method").each(function(){var b=a("label",this);b.on("change",":radio",function(){b.removeClass("active"),b.filter('[for="'+a(this).attr("id")+'"]').addClass("active")}).filter(":has(:checked)").addClass("active")}),a("#form-contact, #form-register, #form-address").validate({highlight:function(b){a(b).closest(".form-group").addClass("has-error")},unhighlight:function(b){a(b).closest(".form-group").removeClass("has-error")},errorElement:"span",errorClass:"help-block"}),a("#content").on("change.toolbarfilter","#limit-top, #sortby-top",function(){window.location=a(this).val()}),g.each(function(){var b=a('input[type="email"]',g),c=a("#account1",g);b.on("keypress",function(){c.click()})})})}(jQuery),function(a){a(document).ready(function(){(function(){return initialize=function(b){var c={};c.state=a(b),c.stateId=c.state.val(),c.country=a(c.state.data("thelia-country")),c.countryId=c.country.val(),c.block=a(c.state.data("thelia-toggle")),c.states=c.state.children().clone(),c.state.children().remove();var d=function(){var b=c.country.val(),d=c.state.val(),e=!1;null!==d&&""!==d&&(c.stateId=d),c.state.children().remove(),c.states.each(function(){var d=a(this);d.data("country")==b&&(d.appendTo(c.state),e=!0)}),e?(c.state.val(c.stateId),c.block.removeClass("hidden")):c.block.addClass("hidden")};c.country.on("change",d),d()},{init:function(){a("[data-thelia-state]").each(function(){initialize(this)})}}})().init()})}(jQuery); \ No newline at end of file diff --git a/templates/frontOffice/boutique/assets/src/css/thelia.css b/templates/frontOffice/boutique/assets/src/css/thelia.css index 6bfb3b7a..e69de29b 100644 --- a/templates/frontOffice/boutique/assets/src/css/thelia.css +++ b/templates/frontOffice/boutique/assets/src/css/thelia.css @@ -1,11075 +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); -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -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 { - line-height: normal; -} -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-appearance: textfield; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -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 { - *, - *:before, - *:after { - background: transparent !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^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - 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 th, - .table-bordered td { - 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-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - box-sizing: border-box; -} -*:before, -*:after { - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: 'Open Sans', sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #7a7a7a; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #f49a17; - text-decoration: none; -} -a:hover, -a:focus { - color: #b66f09; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > 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 0.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: 0; - 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, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #e5e5e5; -} -h1, -.h1, -h2, -.h2, -h3, -.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, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10px; - margin-bottom: 10px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 36px; -} -h2, -.h2 { - font-size: 30px; -} -h3, -.h3 { - font-size: 24px; -} -h4, -.h4 { - font-size: 18px; -} -h5, -.h5 { - font-size: 14px; -} -h6, -.h6 { - font-size: 12px; -} -p { - margin: 0 0 10px; -} -.lead { - margin-bottom: 20px; - font-size: 16px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 21px; - } -} -small, -.small { - font-size: 85%; -} -mark, -.mark { - background-color: #fcf8e3; - padding: .2em; -} -.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:hover, -a.text-primary:focus { - color: #ce7e0a; -} -.text-success { - color: #3c763d; -} -a.text-success:hover, -a.text-success:focus { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover, -a.text-info:focus { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover, -a.text-warning:focus { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover, -a.text-danger:focus { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #f49a17; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #ce7e0a; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 20px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -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[title], -abbr[data-original-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 p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #e5e5e5; -} -blockquote footer:before, -blockquote small: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; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 20px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Monaco, Menlo, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 3px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #fff; - background-color: #333; - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - 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; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - 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 { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #e5e5e5; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - 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 > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #f5f5f5; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - overflow-x: auto; - min-height: 0.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 > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #7a7a7a; - border: 0; - border-bottom: 1px solid transparent; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 7px; - font-size: 14px; - line-height: 1.42857143; - color: #555; -} -.form-control { - display: block; - width: 100%; - height: 34px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #e5e5e5; - border-radius: 3px; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - 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, 0.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; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 34px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .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"] { - line-height: 30px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .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"] { - line-height: 46px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - 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; -} -.input-sm { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 30px; - line-height: 30px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 30px; - min-height: 32px; - padding: 6px 10px; - font-size: 12px; - line-height: 1.5; -} -.input-lg { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 46px; - line-height: 46px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].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; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #2b542c; - box-shadow: inset 0 1px 1px rgba(0, 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 .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #66512c; - box-shadow: inset 0 1px 1px rgba(0, 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 .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #843534; - box-shadow: inset 0 1px 1px rgba(0, 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-top: 5px; - margin-bottom: 10px; - color: #bababa; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 7px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 7px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 11px; - font-size: 18px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - font-size: 12px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - 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; - border-radius: 3px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #f49a17; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.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:hover { - color: #f49a17; - background-color: #dedede; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #f49a17; - background-color: #dedede; - border-color: #adadad; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #f49a17; - background-color: #cccccc; - border-color: #8c8c8c; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - 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:hover { - color: #fff; - background-color: #ce7e0a; - border-color: #c47809; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #ce7e0a; - border-color: #c47809; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - 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:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - 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:hover { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - 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:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #5cb85c; - border-color: #4cae4c; -} -.btn-success .badge { - color: #5cb85c; - background-color: #fff; -} -.btn-info { - color: #fff; - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info:focus, -.btn-info.focus { - color: #fff; - background-color: #31b0d5; - border-color: #1b6d85; -} -.btn-info:hover { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - 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:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #5bc0de; - border-color: #46b8da; -} -.btn-info .badge { - color: #5bc0de; - background-color: #fff; -} -.btn-warning { - color: #fff; - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning:focus, -.btn-warning.focus { - color: #fff; - background-color: #ec971f; - border-color: #985f0d; -} -.btn-warning:hover { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - 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:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f0ad4e; - border-color: #eea236; -} -.btn-warning .badge { - color: #f0ad4e; - background-color: #fff; -} -.btn-danger { - color: #fff; - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger:focus, -.btn-danger.focus { - color: #fff; - background-color: #c9302c; - border-color: #761c19; -} -.btn-danger:hover { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - 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:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - color: #f49a17; - font-weight: normal; - 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:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #b66f09; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #e5e5e5; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - 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="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - transition-property: height, visibility; - transition-duration: 0.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; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 14px; - text-align: left; - background-color: #fff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 3px; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #7a7a7a; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #6d6d6d; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - outline: 0; - background-color: #f49a17; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #e5e5e5; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - 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-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.42857143; - color: #e5e5e5; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.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 > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.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 > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-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, 0.125); -} -.btn-group.open .dropdown-toggle.btn-link { - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 3px; - border-top-left-radius: 3px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 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="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - 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; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].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; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control: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: normal; - 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="radio"], -.input-group-addon input[type="checkbox"] { - 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:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - 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:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - 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:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - 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 { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #e5e5e5; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #e5e5e5; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - 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:hover, -.nav-tabs > li.active > a:focus { - 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; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 3px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ddd; - border-radius: 3px 3px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 3px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #fff; - background-color: #f49a17; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 3px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 768px) { - .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:hover, - .nav-tabs-justified > .active > a:focus { - 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; -} -@media (min-width: 992px) { - .navbar { - border-radius: 3px; - } -} -@media (min-width: 992px) { - .navbar-header { - float: left; - } -} -.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, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 992px) { - .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-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 992px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 992px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 992px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 15px 15px; - font-size: 18px; - line-height: 20px; - height: 50px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 992px) { - .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; -} -@media (min-width: 992px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 7.5px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 20px; -} -@media (max-width: 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 > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 992px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 15px; - padding-bottom: 15px; - } -} -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 8px; - margin-bottom: 8px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@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-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-top-right-radius: 3px; - border-top-left-radius: 3px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 8px; - margin-bottom: 8px; -} -.navbar-btn.btn-sm { - margin-top: 10px; - margin-bottom: 10px; -} -.navbar-btn.btn-xs { - margin-top: 14px; - margin-bottom: 14px; -} -.navbar-text { - margin-top: 15px; - margin-bottom: 15px; -} -@media (min-width: 992px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 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:hover, -.navbar-default .navbar-brand:focus { - color: #575757; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #707070; -} -.navbar-default .navbar-nav > li > a { - color: #707070; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #fff; - background-color: #f49a17; -} -.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; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - 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:hover, -.navbar-default .navbar-nav > .open > a:focus { - 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 > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: #f49a17; - } - .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; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - 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:hover, -.navbar-default .btn-link:focus { - color: #fff; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #ffffff; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #ffffff; -} -.navbar-inverse .navbar-nav > li > a { - color: #ffffff; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - 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:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - 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: #ffffff; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #444; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #ffffff; -} -.navbar-inverse .navbar-link:hover { - color: #fff; -} -.navbar-inverse .btn-link { - color: #ffffff; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #444; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 20px; - list-style: none; - background-color: #fff; - border-radius: 3px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #7a7a7a; -} -.breadcrumb > .active { - color: #7a7a7a; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 20px 0; - border-radius: 3px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 6px 12px; - line-height: 1.42857143; - text-decoration: none; - color: #f49a17; - background-color: #f9f9f9; - border: 1px solid #ddd; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #b66f09; - background-color: transparent; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #fff; - background-color: #f49a17; - border-color: #f49a17; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - 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; -} -.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 { - display: inline; -} -.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:hover, -.pager li > a:focus { - 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:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #e5e5e5; - background-color: #f7f7f7; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - 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]:hover, -.label-default[href]:focus { - background-color: #cccccc; -} -.label-primary { - background-color: #f49a17; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #ce7e0a; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - color: #fff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #e5e5e5; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #f49a17; - background-color: #fff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #eee; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 21px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #d5d5d5; -} -.container .jumbotron, -.container-fluid .jumbotron { - 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 { - display: block; - padding: 4px; - margin-bottom: 20px; - line-height: 1.42857143; - background-color: #fff; - border: 1px solid #ddd; - border-radius: 3px; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #f49a17; -} -.thumbnail .caption { - padding: 9px; - color: #7a7a7a; -} -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 3px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - 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 { - overflow: hidden; - height: 20px; - margin-bottom: 20px; - background-color: #f5f5f5; - border-radius: 3px; - box-shadow: inset 0 1px 2px rgba(0, 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, 0.15); - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #5cb85c; -} -.progress-striped .progress-bar-success { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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 { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - 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:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - 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:hover, -.list-group-item.disabled:focus { - background-color: #eee; - color: #e5e5e5; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #e5e5e5; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #f49a17; - border-color: #f49a17; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .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:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - 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:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - 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:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - 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:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #a94442; - border-color: #a94442; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 20px; - background-color: #fff; - border: 1px solid transparent; - border-radius: 0; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.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-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 16px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.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, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-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-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: -1; - border-top-left-radius: -1; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: -1; - border-top-right-radius: -1; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: -1; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: -1; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: -1; - border-bottom-left-radius: -1; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: -1; - border-bottom-right-radius: -1; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: -1; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .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 th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 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 { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - 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 iframe, -.embed-responsive embed, -.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, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 21px; - font-weight: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.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 { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - transform: translate(0, -25%); - transition: -webkit-transform 0.3s ease-out; - transition: transform 0.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, 0.2); - border-radius: 6px; - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - background-clip: padding-box; - 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); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 15px; -} -.modal-footer { - padding: 15px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-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, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: 'Open Sans', sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: 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: 0.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 { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: 'Open Sans', sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 14px; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - box-shadow: 0 5px 10px rgba(0, 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: #999999; - border-top-color: rgba(0, 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.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #fff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 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: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #fff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - transition: -webkit-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - 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%; - opacity: 0.5; - filter: alpha(opacity=50); - 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, 0.5) 0%, rgba(0, 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, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ccc; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - 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; -} -.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-prev, - .carousel-control .icon-next { - 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; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after, -.block-thumbnail:before, -.block-thumbnail:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after, -.block-thumbnail: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; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -/*! - * 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 PATH - * -------------------------- */ -@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: normal; - font-style: normal; -} -.fa { - 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); -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.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: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eee; - border-radius: .1em; -} -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.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(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 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-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - -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-inverse { - color: #fff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.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-remove:before, -.fa-close: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-gear:before, -.fa-cog: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-rotate-right:before, -.fa-repeat: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-photo:before, -.fa-image: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-warning:before, -.fa-exclamation-triangle: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-gears:before, -.fa-cogs: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-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars: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-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard: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-unlink:before, -.fa-chain-broken: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-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw: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-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try: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-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap: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-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-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-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire: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-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-genderless:before, -.fa-circle-thin: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-soccer-ball-o:before, -.fa-futbol-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-shekel:before, -.fa-sheqel:before, -.fa-ils: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-hotel:before, -.fa-bed: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 .logo { - margin-top: 0; -} -header .header .language-container { - text-align: right; -} -header .header .language-container .search-container { - margin-bottom: 10px; -} -header .header .language-container .search-container .form-control { - width: auto; -} -header .header .language-container .language-switch, -header .header .language-container .currency-switch { - display: inline-block; - position: relative; -} -header .header .language-container .language-switch .dropdown-label, -header .header .language-container .currency-switch .dropdown-label { - display: inline-block; - float: left; - margin-left: 1em; - margin-right: .4em; -} -header .header .language-container .language-switch .current, -header .header .language-container .currency-switch .current { - display: inline-block; - float: left; - position: relative; -} -header .header .language-container .language-switch .select, -header .header .language-container .currency-switch .select { - left: auto; - right: 0; -} -.footer-container .footer-banner .banner .col { - padding: 10px 0; -} -.footer-container .footer-block .blocks { - padding: 20px 0; -} -.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 .mobile, -.account-info .tel, -.account-info .email { - display: block; -} -.account-info li { - margin-bottom: 20px; -} -.table-order tbody td.product .name { - margin-top: 0; -} -.table-order tbody td.qty .group-qty { - margin-bottom: 0; -} -.table-order-total td { - width: 50%; -} -#delivery-address .panel-heading { - position: relative; -} -.list-payment { - margin-bottom: 0; -} -#payment-method.panel .radio { - display: block; -} -.checkout-progress { - margin-bottom: 20px; - width: 100%; -} -.cart-empty { - margin: 0; - padding: 40px; -} -.table-cart-mini { - margin-bottom: 0; -} -.table-cart tbody td.product .name { - margin-top: 0; -} -.table-cart tbody td.qty .group-qty { - margin-bottom: 0; -} -.table-cart-total td { - width: 50%; -} -.cart-warning { - clear: both; - margin-bottom: 0; -} -.js .group-qty .form-inline .form-group { - display: block; -} -.breadcrumb { - padding: 8px 15px; -} -.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 { - float: right; - padding-left: .3em; - } - .navbar .navbar-cart .dropdown > a:after, - .navbar .navbar-customer .dropdown > a:after { - 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"; - } - .navbar .navbar-cart .dropdown > a:after, - .navbar .navbar-customer .dropdown > a:after { - 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; -} -@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: right; - padding-left: .3em; -} -@media (min-width: 992px) { - .js .dropdown-toggle:after { - float: none; - } -} -#form-login, -#form-forgotpassword { - padding: 45px; -} -#form-login legend, -#form-forgotpassword legend { - margin-bottom: 10px; -} -#filters { - margin-bottom: 20px; -} -.filter { - margin-bottom: 20px; - padding: 0 15px; -} -.filter .filter-heading { - margin: 0; - margin-bottom: 4px; -} -.toolbar { - margin-bottom: 20px; -} -.toolbar .sorter-container, -.toolbar .pagination-container { - overflow: hidden; -} -.toolbar .sorter-container .amount { - float: left; -} -.toolbar .sorter-container .sort-by { - margin-left: 40px; -} -.toolbar .sorter-container .view-mode { - margin-left: 40px; -} -.toolbar .pagination-container > .pagination { - margin: 15px 0 0; -} -.products-content > ul .item .product-info .short-description { - display: block; - margin-bottom: 5px; -} -.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 > article .product-image, -.grid .products-content > ul .item > article .product-info, -.grid .products-content > ul .item > article .product-price { - width: 100%; - float: none; -} -.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; - } - th.grid .products-content > ul .item .description, - td.grid .products-content > ul .item .description { - display: table-cell !important; - } -} -.grid .products-content > ul .item .product-price { - padding: 0; -} -.list .products-content > ul .item { - width: 100%; - float: none; -} -.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; - margin-bottom: 5px; -} -#product > section { - margin-bottom: 20px; -} -#product #product-gallery .product-image { - margin-bottom: 20px; -} -#product #product-gallery #product-thumbnails .carousel-inner { - margin: 0 auto; - width: 90%; -} -#product #product-gallery #product-thumbnails .carousel-control { - background-image: none; - display: none; - width: 4%; - margin-top: -4px; -} -#product #product-gallery #product-thumbnails ul { - margin: 0; -} -#product #product-gallery #product-thumbnails ul > li { - margin: 0; - padding: 0; - width: 19%; -} -#product #product-details .name { - margin-top: 0; -} -#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; -} -#folder-contents .contents > ul .item { - padding-bottom: 15px; -} -#folder-contents .contents > ul .item + .item { - padding-top: 15px; -} -#folder-contents .contents > ul .item > article { - margin-left: 0; -} -#folder-contents .contents > ul .item > article .content-image { - margin-bottom: 15px; - padding: 0; -} -#folder-contents .contents > ul .item > article .content-info .name { - margin-top: 0; -} -#folder-contents .contents > ul .item + .item { - border-top: 1px solid #ededed; -} -#folder-contents .contents > ul .item > article .content-image > img { - width: 100%; -} -.contents-list .item { - padding-bottom: 15px; -} -.contents-list .item + .item { - padding-top: 15px; -} -.contents-list .item > article { - margin-left: 0; -} -.contents-list .item > article .content-image { - margin-bottom: 15px; - padding: 0; -} -.contents-list .item > article .content-info .name { - margin-top: 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 { - margin-left: 0; -} -#brands .brands > ul .item > article .brand-image { - margin-bottom: 15px; - padding: 0; -} -#brands .brands > ul .item > article .brand-info .name { - margin-top: 0; -} -header .header .logo a { - text-decoration: none; -} -header .header .language-container { - text-align: right; -} -header .header .language-container .language-switch, -header .header .language-container .currency-switch { - vertical-align: middle; -} -header .header .language-container .language-switch .dropdown-label, -header .header .language-container .currency-switch .dropdown-label { - font-size: 1em; - font-weight: 300; -} -header .header .language-container .language-switch .select, -header .header .language-container .currency-switch .select { - min-width: 80px; -} -.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: normal; -} -.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: #444444; - color: #fff; - font-size: 12px; -} -.footer-container .footer-info a { - color: #fff; -} -.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; -} -.footer-container .footer-info .info .copyright > a { - font-weight: bold; -} -.cart-warning { - text-align: center; -} -.cart-warning > a { - color: inherit; -} -.cart-warning: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: "\f071"; - display: block; - font-size: 2.2em; -} -#cart-address .panel { - box-shadow: none; - border: none; -} -#payment-method.panel .panel-body { - text-align: center; -} -#payment-method.panel .radio label > img { - border: 1px solid #ddd; - border-radius: 3px; - opacity: 0.4; - filter: alpha(opacity=40); -} -#payment-method.panel .radio label > img:hover, -#payment-method.panel .radio label > img:focus { - opacity: 1; - filter: alpha(opacity=100); - transition: opacity 200ms 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:hover, -.checkout-progress .btn-step:focus, -.checkout-progress .btn-step:active, -.checkout-progress .btn-step.active { - color: #fff; - background: #f49a17; -} -.checkout-progress .btn-step:hover .step-nb, -.checkout-progress .btn-step:focus .step-nb, -.checkout-progress .btn-step:active .step-nb, -.checkout-progress .btn-step.active .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: bold; - 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; -} -#folder-contents .contents > ul .item > article { - margin-left: 0; -} -#folder-contents .contents > ul .item > article .content-image { - margin-bottom: 15px; - padding: 0; -} -#folder-contents .contents > ul .item > article .content-info .name { - margin-top: 0; -} -#folder-contents .contents > ul .item + .item { - border-top: 1px solid #ededed; -} -#folder-contents .contents > ul .item > article .content-image > img { - width: 100%; -} -.contents-list .item + .item { - border-top: 1px solid #ededed; -} -.contents-list .item > article .content-image > img { - width: 100%; -} -a { - transition: all 0.3s ease-in-out; -} -.breadcrumb { - padding: 0; -} -.breadcrumb > li + li: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: "\f105"; -} -.btn { - transition: all 0.3s ease-in-out; - border-radius: 0; - text-align: left; - font-weight: 600; -} -.btn:active, -.btn.active { - box-shadow: none; -} -@media (min-width: 992px) { - .btn { - padding: 2px 15px 2px 5px; - } -} -.btn-primary { - font-style: italic; - border-left: 3px solid #f9c478; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #f49a17; - color: #b66f09; -} -.btn-default { - border-left: 3px solid #cccccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #f7f7f7; -} -.btn-default:active, -.btn-primary:active, -.btn-default.active, -.btn-primary.active, -.btn-default:active:hover, -.btn-primary:active:hover, -.btn-default.active:hover, -.btn-primary.active:hover { - background-color: #d5d5d5; - border-color: #6f6f6f; - color: #fff; -} -.btn-link { - font-weight: normal; -} -.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-login, -#form-forgotpassword { - background: #f5f5f5; -} -#form-login legend, -#form-forgotpassword legend { - font-size: 14px; - font-weight: bold; -} -#form-login .btn-login, -#form-forgotpassword .btn-login { - display: block; - width: 100%; -} -@media (min-width: 768px) { - #form-login .group-btn, - #form-forgotpassword .group-btn { - text-align: right; - } - #form-login .group-btn .btn-login, - #form-forgotpassword .group-btn .btn-login { - display: inline-block; - width: auto; - } -} -@media (min-width: 992px) { - #form-login, - #form-forgotpassword { - width: 45%; - } -} -.page-header { - margin-top: 0; -} -.no-js .collapse { - display: block !important; -} -.no-js #carousel .carousel-control { - display: none; -} -.loader { - position: fixed; - background: #fff url(../img/ajax-loader.gif) no-repeat center center; - background-color: rgba(255, 255, 255, 0.5); - display: none; - left: 0; - top: 0; - width: 100%; - height: 100%; - z-index: 100; -} -.oldie { - position: absolute; -} -.thumbnail.active { - border-color: #7a7a7a; -} -.main { - margin-bottom: 20px; -} -.fn { - font-weight: 600; - display: block; -} -.adr, -.org { - font-size: 12px; -} -.table-address .radio, -.table-delivery .radio { - margin-top: 0; -} -.table-address .radio label, -.table-delivery .radio label { - font-weight: 600; -} -.table-address .group-btn, -.table-delivery .group-btn { - text-align: right; -} -.table-address thead > tr > th, -.table-delivery thead > tr > th, -.table-address tbody > tr > th, -.table-delivery tbody > tr > th, -.table-address tfoot > tr > th, -.table-delivery tfoot > tr > th, -.table-address thead > tr > td, -.table-delivery thead > tr > td, -.table-address tbody > tr > td, -.table-delivery tbody > tr > td, -.table-address tfoot > tr > td, -.table-delivery tfoot > tr > td { - border-color: #f5f5f5; - padding: 10px 10px 0; -} -@media (min-width: 768px) { - .table-address thead > tr > th, - .table-delivery thead > tr > th, - .table-address tbody > tr > th, - .table-delivery tbody > tr > th, - .table-address tfoot > tr > th, - .table-delivery tfoot > tr > th, - .table-address thead > tr > td, - .table-delivery thead > tr > td, - .table-address tbody > tr > td, - .table-delivery tbody > tr > td, - .table-address tfoot > tr > td, - .table-delivery tfoot > tr > td { - 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 > li > a:hover, - .navbar .list-subnav > li > a:focus { - color: #f49a17; - 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; - } -} -.navbar .full-width .dropdown-menu .dropdown-content { - padding: 20px; -} -.navbar .full-width .dropdown-menu .dropdown-content .dropdown-subheading { - font-weight: bold; -} -.js .dropdown-toggle:after { - 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"; -} -.panel-heading { - text-transform: uppercase; -} -#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: none; - color: inherit; -} -#account .panel-heading .panel-title > a.collapsed:hover, -#account .panel-heading .panel-title > a.collapsed:focus { - background: #f49a17; - color: #fff; -} -#account .panel-body { - padding: 25px; -} -.table-order thead > tr > th, -.table-cart thead > tr > th, -.table-order tbody > tr > th, -.table-cart tbody > tr > th, -.table-order tfoot > tr > th, -.table-cart tfoot > tr > th, -.table-order thead > tr > td, -.table-cart thead > tr > td, -.table-order tbody > tr > td, -.table-cart tbody > tr > td, -.table-order tfoot > tr > td, -.table-cart tfoot > tr > td { - padding: 14px; - text-align: center; - vertical-align: middle; -} -.table-order thead > tr > th.product, -.table-cart thead > tr > th.product, -.table-order tbody > tr > th.product, -.table-cart tbody > tr > th.product, -.table-order tfoot > tr > th.product, -.table-cart tfoot > tr > th.product, -.table-order thead > tr > td.product, -.table-cart thead > tr > td.product, -.table-order tbody > tr > td.product, -.table-cart tbody > tr > td.product, -.table-order tfoot > tr > td.product, -.table-cart tfoot > tr > td.product { - text-align: left; -} -.table-order thead > tr > th.image, -.table-cart thead > tr > th.image, -.table-order tbody > tr > th.image, -.table-cart tbody > tr > th.image, -.table-order tfoot > tr > th.image, -.table-cart tfoot > tr > th.image, -.table-order thead > tr > td.image, -.table-cart thead > tr > td.image, -.table-order tbody > tr > td.image, -.table-cart tbody > tr > td.image, -.table-order tfoot > tr > td.image, -.table-cart tfoot > tr > td.image { - border-right-color: transparent; -} -.table-order thead th, -.table-cart thead th { - background-color: #f5f5f5; - text-transform: uppercase; - border-bottom-width: 1px; -} -.table-order thead th.subprice, -.table-cart thead th.subprice { - color: #f49a17; -} -.table-order tbody td.price, -.table-cart tbody td.price, -.table-order tbody td.qty, -.table-cart tbody td.qty, -.table-order tbody td.subprice, -.table-cart tbody td.subprice { - padding: 35px 10px; -} -.table-order tbody td.unitprice .price, -.table-cart tbody td.unitprice .price { - color: #7a7a7a; -} -.table-order tbody td.unitprice .old-price .price, -.table-cart tbody td.unitprice .old-price .price { - font-size: 14px; -} -.table-order tbody td.unitprice .secondary-price .price, -.table-cart tbody td.unitprice .secondary-price .price { - font-size: 14px; - font-weight: normal; -} -.table-order tbody td.subprice .price, -.table-cart tbody td.subprice .price { - color: #f49a17; -} -.table-order tfoot th, -.table-cart tfoot th, -.table-order tfoot td, -.table-cart tfoot td { - background-color: #f5f5f5; -} -.table-order tfoot th.empty, -.table-cart tfoot th.empty, -.table-order tfoot td.empty, -.table-cart tfoot td.empty { - background: transparent; -} -.table-order tfoot th.total, -.table-cart tfoot th.total, -.table-order tfoot td.total, -.table-cart tfoot td.total { - background-color: #666; - color: #fff; -} -.table-order tfoot th.total .price, -.table-cart tfoot th.total .price, -.table-order tfoot td.total .price, -.table-cart tfoot td.total .price { - color: inherit; -} -.table-order tfoot td.shipping .price, -.table-cart tfoot td.shipping .price { - color: #7a7a7a; - font-size: 19px; -} -.table-order tfoot td.total .price, -.table-cart tfoot td.total .price { - font-size: 19px; -} -.table-order tfoot td.empty, -.table-cart tfoot td.empty { - border-bottom-color: transparent; - border-left-color: transparent; -} -.table-order tfoot th.total, -.table-cart tfoot th.total { - text-transform: uppercase; - font-weight: 100; - font-size: 16px; -} -.table-order-total td.total .price, -.table-cart-total td.total .price { - font-size: 19px; -} -.table-order-total td.empty, -.table-cart-total td.empty { - border-bottom-color: transparent; - border-left-color: transparent; -} -.alert-warning { - clear: both; - margin-bottom: 0; - text-align: center; -} -.alert-warning > a { - color: inherit; -} -.alert-warning: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: "\f071"; - display: block; - font-size: 2.2em; -} -.block { - background: transparent; - border: 1px solid transparent; - border-radius: 0; - box-shadow: none; -} -.block .block-heading { - background: transparent; - border-bottom: 1px solid #dfdfdf; - color: #888888; - margin: 0 0 6px 0; - 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 0; -} -.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:hover, -.block-default .block-content li a:focus { - color: #b66f09; -} -.block-default .block-content li: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: "\f054"; - color: #f49a17; - margin-left: -15px; - margin-right: 5px; -} -/* Block - Links */ -.block-links .block-content li + li a { - border-top: 1px solid #fff; -} -.block-links .block-content li a { - background-color: transparent; - color: #747474; - display: block; - font-size: 12px; - font-weight: normal; - padding: 10px 3px; - position: relative; -} -.block-links .block-content li a:hover, -.block-links .block-content li a:focus { - text-decoration: none; - background-color: #ebebeb; -} -.block-links .block-content li a > p { - margin-bottom: 0; -} -/* Block - Nav */ -.block-nav .block-heading { - margin-bottom: 0; -} -.block-nav .block-content li a { - background-color: transparent; - color: #747474; - display: block; - font-size: 12px; - font-weight: normal; - padding: 10px 60px 10px 3px; - position: relative; -} -.block-nav .block-content li a:hover, -.block-nav .block-content li a:focus { - 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; - -webkit-transform: translate(0, 0); - -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 - Thumbnails */ -.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-social .block-content li { - display: inline-block; - font-size: 18px; -} -.block-social .block-content li > a { - color: #888888; -} -.block-social .block-content li > a:hover, -.block-social .block-content li > a:focus { - color: #b66f09; -} -/* Block - Newsletter */ -.block-newsletter .block-content form .btn-subscribe { - padding: 6px 6px; -} -/* Block - Contact Info */ -.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 300ms ease-in-out; -} -.block-carousel .block-carousel-control .carousel-control:hover, -.block-carousel .block-carousel-control .carousel-control:focus { - background-color: #000; - color: #fff; -} -.label-new { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; - background-color: #5bc0de; -} -a.label-new:hover, -a.label-new:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-new:empty { - display: none; -} -.btn .label-new { - position: relative; - top: -1px; -} -.label-new[href]:hover, -.label-new[href]:focus { - background-color: #31b0d5; -} -.label-sale { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; - background-color: #d9534f; -} -a.label-sale:hover, -a.label-sale:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-sale:empty { - display: none; -} -.btn .label-sale { - position: relative; - top: -1px; -} -.label-sale[href]:hover, -.label-sale[href]:focus { - background-color: #c9302c; -} -.label-delivered { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; - background-color: #5cb85c; -} -a.label-delivered:hover, -a.label-delivered:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label-delivered:empty { - display: none; -} -.btn .label-delivered { - position: relative; - top: -1px; -} -.label-delivered[href]:hover, -.label-delivered[href]:focus { - background-color: #449d44; -} -.products-heading .btn-all { - float: right; - font-size: .6em; -} -.products-heading h3 { - top: -14px !important; - margin: 0; -} -.availability .in-stock { - color: #5cb85c; - font-style: italic; - font-weight: bold; - text-transform: uppercase; -} -.availability .in-stock .in { - display: block; -} -.availability .in-stock .out { - display: none; -} -.availability .in-stock .quantity { - font-style: italic; -} -.availability .out-of-stock { - color: #f0ad4e; - font-style: italic; - font-weight: bold; - text-transform: uppercase; -} -.availability .out-of-stock .in { - display: none; -} -.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: bold; -} -.option .option-content .radio label, -.option .option-content .checkbox 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 .nav-tabs li { - text-transform: uppercase; -} -#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 .btn-grid { - cursor: default; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - box-shadow: none; -} -.grid .item .product-image > img { - width: 100%; -} -.list .btn-list { - cursor: default; - pointer-events: none; - opacity: 0.65; - filter: alpha(opacity=65); - box-shadow: none; -} -.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: #888888; - font-size: 19px; - font-weight: 100; - text-transform: uppercase; -} -.filter .filter-content .radio label, -.filter .filter-content .checkbox label { - font-weight: 100; -} -.toolbar { - line-height: 50px; -} -.toolbar .sorter-container, -.toolbar .pagination-container { - 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; -} -.no-js .toolbar .limiter, -.no-js .toolbar .sort-by { - display: none; -} -#brands .brands > ul .item + .item { - border-top: 1px solid #ededed; -} -#brands .brands > ul .item > article .brand-image.overlay:after { - display: none; -} -#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: bold; - text-align: center; -} -.page-404 #main-label span { - color: #CCC; - display: block; - font-size: 15px; - font-weight: normal; -} -.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, 0.075), 0 0 6px #ce8483; -} -.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; - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); - content: "\f00d"; - margin-right: .3em; -} -label { - font-weight: 600; -} -.dropdown-menu { - box-shadow: none; -} -.modal-content { - box-shadow: none; -} -.popover { - border-radius: 3px; - box-shadow: none; -} -.overlay { - display: block; - overflow: hidden; - position: relative; - font-size: 40px; -} -.overlay:before, -.overlay:after { - display: block; - width: 100%; - height: 100%; - visibility: hidden; - position: absolute; - top: 0; - left: 0; - right: 0; - opacity: 0; - filter: alpha(opacity=0); - transition: all 300ms ease-in-out 50ms; -} -.overlay:before { - content: ''; - overflow: visible; - background-color: #f49a17; - background-color: rgba(244, 154, 23, 0.4); -} -.overlay:after { - font-family: FontAwesome; - content: "\f002"; - color: #fff; - text-align: center; - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - transform: translate(0, 0); - line-height: 0; -} -.overlay:hover:before, -.overlay:focus:before, -.overlay:hover:after, -.overlay:focus:after { - visibility: visible; - opacity: 1; - filter: alpha(opacity=100); -} -.overlay:hover:after, -.overlay:focus:after { - -webkit-transform: translate(0, 50%); - -ms-transform: translate(0, 50%); - transform: translate(0, 50%); -} -.navbar li > a.home: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: "\f015"; - color: #c9c9c9; - font-size: 26px; - line-height: 0; - margin-right: .5em; - position: relative; - top: 3px; -} -.navbar li > a.login: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: "\f007"; - color: #f49a17; - font-size: 19px; - line-height: 0; - margin-right: .5em; -} -.navbar li > a.cart:hover > .badge, -.navbar li > a.cart:focus > .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:hover, -.navbar li.cart-not-empty > a.cart:focus { - background-color: #f49a17; - color: #fff; -} -.navbar li.cart-not-empty > a.cart: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: "\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:hover:before, -.navbar .navbar-nav > li > a:focus:before { - color: #fff; -} -.navbar .navbar-nav > .active > a:hover, -.navbar .navbar-nav > .active > a:focus { - 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:hover, -.navbar .navbar-nav > .open > a:focus { - background-color: #f49a17; - color: #fff; -} -.navbar .navbar-nav > .open > a:before, -.navbar .navbar-nav > .open > a:hover:before, -.navbar .navbar-nav > .open > a:focus: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: bold; -} -.products-heading .btn-all, -.products-heading .btn-all:hover, -.products-heading .btn-all:focus { - 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; -} -td.product .name, -.product-info .name { - font-size: 16px; - font-weight: 600; -} -td.product .name > a, -.product-info .name > a { - color: #7a7a7a; - text-decoration: none; -} -td.product .name > a:hover, -.product-info .name > a:hover, -td.product .name > a:focus, -.product-info .name > a:focus { - 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 { - -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:hover, -#products-new .products-grid .item > article .product-info:focus { - 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: bold; -} -@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 300ms 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:hover, - #products-new .products-grid .item > article .product-info:focus { - 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-upsell .products-grid .item > article, -#products-related .products-grid .item > article, -#products-offer .products-grid .item > article { - border-radius: 3px; - transition: background-color 300ms ease-in-out; - padding: 6px; -} -#products-upsell .products-grid .item > article .product-info, -#products-related .products-grid .item > article .product-info, -#products-offer .products-grid .item > article .product-info { - padding: 0; -} -#products-upsell .products-grid .item > article .product-info .short-description, -#products-related .products-grid .item > article .product-info .short-description, -#products-offer .products-grid .item > article .product-info .short-description { - font-size: 11px; -} -@media (min-width: 768px) { - #products-upsell .products-grid .item:hover article, - #products-related .products-grid .item:hover article, - #products-offer .products-grid .item:hover article { - background-color: #f6f6f6; - } -} -#products-offer .overlay:after, -#products-new .overlay:after, -#products-upsell .overlay:after, -#products-offer .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 .regular-price, -.list #category-products .item > article .product-price .price-container .special-price, -.list #category-products .item > article .product-price .price-container .old-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; - -webkit-transform: translate(0, 0); - -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 0px -4px 10px rgba(0, 0, 0, 0.125); - margin: 0 0 15px 0; - padding: 10px 15px; - font-size: 18px; - font-weight: bold; - text-transform: uppercase; -} -#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; - 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: "\f002"; - font-size: 30px; - float: left; - margin-right: .5em; -} -#filters .filter { - margin-bottom: 10px; -} -.block { - /* Block - Newsletter */ - /* Block - Social */ - /* Block - Contact Info */ -} -.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, 0.075); -} -.block.block-newsletter .block-content form .form-group .form-control::-moz-placeholder { - color: #888888; - opacity: 1; -} -.block.block-newsletter .block-content form .form-group .form-control:-ms-input-placeholder { - color: #888888; -} -.block.block-newsletter .block-content form .form-group .form-control::-webkit-input-placeholder { - color: #888888; -} -.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; - 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: "\f0e0"; - color: #8b8b8b; - font-size: 18px; - position: absolute; - top: 8px; - left: 9px; -} -.block.block-newsletter .block-content form .btn-subscribe { - padding: 6px 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; - 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: "\f041"; - font-size: 34px; -} -.block.block-contact .block-content ul > li.contact-phone: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: "\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; - 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: "\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; - 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: "\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: bold; -} -#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:hover, -#categories.block-nav .block-content li .accordion-toggle:focus { - background: none; -} -#categories.block-nav .block-content li .accordion-toggle:hover:after, -#categories.block-nav .block-content li .accordion-toggle:focus: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-top .pagination-container { - display: none; -} -.toolbar.toolbar-bottom .sorter-container { - display: none; -} -.toolbar .amount { - color: #f49a17; - font-size: 22px; - font-weight: normal; -} -.toolbar .view-mode > .view-mode-btn a { - background-color: #fff; - border: 0 !important; - color: #7a7a7a; -} -.toolbar .view-mode > .view-mode-btn a:hover, -.toolbar .view-mode > .view-mode-btn a:focus { - 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, 0.1); - transition: all 200ms ease-in-out; - background-image: linear-gradient(to bottom, #ffffff 0%, #f9f9f9 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff9f9f9', GradientType=0); - color: #7a7a7a; - font-weight: bold; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - background: transparent; -} -.pagination > li > a:hover:active, -.pagination > li > span:hover:active, -.pagination > li > a:focus:active, -.pagination > li > span:focus: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-login .group-email label, -#form-forgotpassword .group-email label, -#form-login legend, -#form-forgotpassword legend { - font-size: 16px; - font-weight: 600; -} -#form-login .radio-account1, -#form-forgotpassword .radio-account1 { - margin-top: 10px; -} -#form-login .forgot-password, -#form-forgotpassword .forgot-password { - color: #7a7a7a; - font-size: 12px; - font-style: italic; -} -@media (min-width: 768px) { - #form-login .radio-account1, - #form-forgotpassword .radio-account1 { - float: left; - } - #form-login .group-password, - #form-forgotpassword .group-password { - float: right; - margin-top: 5px; - width: 50%; - } -} -#delivery-address.panel .panel-body { - padding: 0; -} -#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; -} -.js #payment-method .radio { - padding-left: 0; - position: relative; -} -.js #payment-method .radio .active:after { - 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: "\f077"; - color: #f49a17; - display: block; - font-size: 1.5em; - line-height: 0; - position: absolute; - bottom: -8px; - left: 40%; -} -#payment-success.panel .panel-heading { - text-align: left; -} -#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 { - text-align: left; -} -#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; - -webkit-transform: translate(0, 0); - -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 .mobile:before, -#account-info .list-info .tel:before, -#account-info .list-info .email:before { - color: #f49a17; - line-height: 1; - margin-right: .4em; - vertical-align: middle; -} -#account-info .list-info .mobile: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: "\f10b"; - font-size: 30px; -} -#account-info .list-info .tel: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: "\f095"; - font-size: 22px; -} -#account-info .list-info .email: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: "\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:hover, -#account-info .group-btn a:focus { - 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 thead > tr > th, -#account-orders .table-orders tbody > tr > th, -#account-orders .table-orders thead > tr > td, -#account-orders .table-orders tbody > tr > td { - padding: 14px; - text-align: center; -} -#account-orders .table-orders thead > tr > th { - background-color: #f5f5f5; - border-bottom-width: 1px; -} -#account-orders .table-order-products thead > tr > th, -#account-orders .table-order-products tbody > tr > th, -#account-orders .table-order-products thead > tr > td, -#account-orders .table-order-products tbody > tr > td { - padding: 5px; - text-align: center; -} -.table-cart-mini thead > tr > th, -.table-cart-mini tbody > tr > th, -.table-cart-mini tfoot > tr > th, -.table-cart-mini thead > tr > td, -.table-cart-mini tbody > tr > td, -.table-cart-mini tfoot > tr > td { - 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; -} diff --git a/templates/frontOffice/boutique/assets/src/less/theme/buttons.less b/templates/frontOffice/boutique/assets/src/less/theme/buttons.less index ab390713..b207848e 100644 --- a/templates/frontOffice/boutique/assets/src/less/theme/buttons.less +++ b/templates/frontOffice/boutique/assets/src/less/theme/buttons.less @@ -17,7 +17,9 @@ .btn-primary { font-style: italic; - border-left: 3px solid lighten(@brand-primary, 20%); + //border-left: 3px solid lighten(@brand-primary, 20%); + border-radius: 12px; + text-align: center; &:hover, &:focus { diff --git a/templates/frontOffice/boutique/assets/src/less/theme/footer.less b/templates/frontOffice/boutique/assets/src/less/theme/footer.less index f0675756..60170195 100644 --- a/templates/frontOffice/boutique/assets/src/less/theme/footer.less +++ b/templates/frontOffice/boutique/assets/src/less/theme/footer.less @@ -3,7 +3,8 @@ // footer-banner .footer-banner { - background-color: @footer-banner-bg; + background-color: @brand-primary ;//@footer-banner-bg; + color: #fff; font-size: ceil(@font-size-base * 1.3); .banner { i { diff --git a/templates/frontOffice/boutique/assets/src/less/theme/navbar.less b/templates/frontOffice/boutique/assets/src/less/theme/navbar.less index d7b650d3..aa620f57 100644 --- a/templates/frontOffice/boutique/assets/src/less/theme/navbar.less +++ b/templates/frontOffice/boutique/assets/src/less/theme/navbar.less @@ -4,6 +4,10 @@ z-index: 1001; } + &.nav-main { + border-radius: 30px; + } + // Subnav Links @media (min-width: @grid-float-breakpoint) { .list-subnav { diff --git a/templates/frontOffice/boutique/assets/src/less/theme/theme.less b/templates/frontOffice/boutique/assets/src/less/theme/theme.less index b7278a54..e5ffe098 100644 --- a/templates/frontOffice/boutique/assets/src/less/theme/theme.less +++ b/templates/frontOffice/boutique/assets/src/less/theme/theme.less @@ -103,7 +103,7 @@ label { &:before { .fa-icon(); content: @fa-var-home; - color: #c9c9c9; + color: @pictos; //#c9c9c9; font-size: 26px; line-height: 0; margin-right: .5em; @@ -488,7 +488,6 @@ td.product, } .product-btn { - min-height: 26px; } } } diff --git a/templates/frontOffice/boutique/assets/src/less/theme/variables.less b/templates/frontOffice/boutique/assets/src/less/theme/variables.less index be708e92..eeb4c770 100644 --- a/templates/frontOffice/boutique/assets/src/less/theme/variables.less +++ b/templates/frontOffice/boutique/assets/src/less/theme/variables.less @@ -8,7 +8,7 @@ @gray-light: #e5e5e5; @gray-lighter: #eee; -@brand-primary: #f49a17; +@brand-primary: #EF8201; //#f49a17; @brand-success: #5cb85c; @brand-warning: #f0ad4e; @brand-danger: #d9534f; @@ -55,14 +55,14 @@ // Navbar -@navbar-default-color: darken(@navbar-default-bg, 52%); //#707070; -@navbar-default-bg: darken(@body-bg, 4%); +@navbar-default-color: #ffffff; //darken(@navbar-default-bg, 52%); //#707070; +@navbar-default-bg: @brand-primary; //darken(@body-bg, 4%); @navbar-default-border: @body-bg; // Navbar links @navbar-default-link-color: @navbar-default-color; -@navbar-default-link-hover-color: #fff; -@navbar-default-link-hover-bg: @brand-primary; +@navbar-default-link-hover-color: @brand-primary; //#fff; +@navbar-default-link-hover-bg: #FFEDD8; //@brand-primary; @navbar-default-link-active-color: @navbar-default-link-hover-color; @navbar-default-link-active-bg: @navbar-default-link-hover-bg; @@ -126,3 +126,6 @@ @pager-bg: @btn-default-bg; @pager-border: @btn-default-border; @pager-border-radius: 0; + +// Couleurs personnalisées +@pictos: #7407AA; \ No newline at end of file diff --git a/templates/frontOffice/boutique/assets/src/less/vendors/bootstrap/carousel.less b/templates/frontOffice/boutique/assets/src/less/vendors/bootstrap/carousel.less index 252011e9..d557415d 100644 --- a/templates/frontOffice/boutique/assets/src/less/vendors/bootstrap/carousel.less +++ b/templates/frontOffice/boutique/assets/src/less/vendors/bootstrap/carousel.less @@ -12,6 +12,7 @@ position: relative; overflow: hidden; width: 100%; + border-radius: 10px; > .item { display: none; diff --git a/templates/frontOffice/boutique/cart.html b/templates/frontOffice/boutique/cart.html index cc192c16..e3a45a69 100644 --- a/templates/frontOffice/boutique/cart.html +++ b/templates/frontOffice/boutique/cart.html @@ -80,13 +80,13 @@ {$errorStock="TRUE"}
{intl l="Out of Stock"}
{/if} - {loop type="attribute_combination" name="product_options" product_sale_elements="$PRODUCT_SALE_ELEMENTS_ID" order="manual"}
{$ATTRIBUTE_TITLE}
{$ATTRIBUTE_AVAILABILITY_TITLE}
- + {if $ATTRIBUTE_AVAILABILITY_ID == 6} {$nb_pots_taille_M = $nb_pots_taille_M + $QUANTITY} {/if} @@ -202,26 +202,35 @@
- + + {$promo_totale = 0} {if $nb_pots_taille_M >= 3} + {$promo_totale = 1.5} {if $nb_pots_taille_M >= 6} - {$value="PROMO_3"} - {else} - {$value="PROMO_1.5"} + {$promo_totale = 2} {/if} - {else} - {if $nb_pots_taille_L >= 3} - {if $nb_pots_taille_L >= 6} - {$value="PROMO_6"} - {else} - {$value="PROMO_3"} - {/if} + {/if} + {if $nb_pots_taille_L >= 3} + {if $nb_pots_taille_L >= 6} + {$promo_totale = $promo_totale + 4} {else} - {$value=""} + {$promo_totale = $promo_totale + 2} {/if} {/if} - + {$promo_totale} + + {$code_promo="555"} + {if $promo_totale = 1.5} + {$code_promo="PROMO_1.5"} + {elseif $promo_totale = 2} + {$code_promo="PROMO_2"} + {elseif $promo_totale > 2} + {$code_promo="PROMO_4"} + {/if} + + + diff --git a/templates/frontOffice/boutique/package-lock.json b/templates/frontOffice/boutique/package-lock.json new file mode 100644 index 00000000..463c1424 --- /dev/null +++ b/templates/frontOffice/boutique/package-lock.json @@ -0,0 +1,4279 @@ +{ + "name": "Default", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "optional": true + } + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz", + "integrity": "sha1-QchHGUZGN15qGl0Qw8oFTvn8mA0=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "archive-type": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", + "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", + "optional": true, + "requires": { + "file-type": "^3.1.0" + } + }, + "argparse": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", + "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", + "requires": { + "underscore": "~1.7.0", + "underscore.string": "~2.4.0" + }, + "dependencies": { + "underscore.string": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", + "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=" + } + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "optional": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "async": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz", + "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=" + }, + "async-each-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", + "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "atob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz", + "integrity": "sha1-lfE2KbEsOlGl0hWr3OKqnzL4B3M=" + }, + "autoprefixer-core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.2.1.tgz", + "integrity": "sha1-5kDEFK5Bmq4hwa1DyOoPPbgqVm0=", + "requires": { + "browserslist": "~0.4.0", + "caniuse-db": "^1.0.30000214", + "num2fraction": "^1.1.0", + "postcss": "~4.1.12" + } + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "optional": true + }, + "bin-build": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", + "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", + "optional": true, + "requires": { + "archive-type": "^3.0.1", + "decompress": "^3.0.0", + "download": "^4.1.2", + "exec-series": "^1.0.0", + "rimraf": "^2.2.6", + "tempfile": "^1.0.0", + "url-regex": "^3.0.0" + } + }, + "bin-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", + "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", + "optional": true, + "requires": { + "executable": "^1.0.0" + } + }, + "bin-version": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", + "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", + "optional": true, + "requires": { + "find-versions": "^1.0.0" + } + }, + "bin-version-check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", + "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", + "optional": true, + "requires": { + "bin-version": "^1.0.0", + "minimist": "^1.1.0", + "semver": "^4.0.3", + "semver-truncate": "^1.0.0" + }, + "dependencies": { + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "optional": true + } + } + }, + "bin-wrapper": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", + "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", + "optional": true, + "requires": { + "bin-check": "^2.0.0", + "bin-version-check": "^2.1.0", + "download": "^4.0.0", + "each-async": "^1.1.1", + "lazy-req": "^1.0.0", + "os-filter-obj": "^1.0.0" + } + }, + "bl": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "optional": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "optional": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "~0.2.0" + } + }, + "browserslist": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-0.4.0.tgz", + "integrity": "sha1-O9SrkZncG5FQ1NbbpNnTqrvIbdQ=", + "requires": { + "caniuse-db": "^1.0.30000153" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "optional": true + }, + "buffer-to-vinyl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", + "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", + "requires": { + "file-type": "^3.1.0", + "readable-stream": "^2.0.2", + "uuid": "^2.0.1", + "vinyl": "^1.0.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-db": { + "version": "1.0.30000706", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000706.tgz", + "integrity": "sha1-4rXwRgVzy8yIoJhfXM7QjxYXxvU=" + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "caw": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", + "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", + "optional": true, + "requires": { + "get-proxy": "^1.0.1", + "is-obj": "^1.0.0", + "object-assign": "^3.0.0", + "tunnel-agent": "^0.4.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "optional": true + } + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", + "integrity": "sha1-s89O0P9Tl8mcdbj2edsvUoMfltw=", + "requires": { + "ansi-styles": "^2.0.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^1.0.3", + "strip-ansi": "^2.0.1", + "supports-color": "^1.3.0" + } + }, + "clap": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "optional": true, + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "optional": true + } + } + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "requires": { + "commander": "2.8.x", + "source-map": "0.4.x" + } + }, + "cli": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", + "integrity": "sha1-Aq1Eo4Cr8nraxebwzdewQ9dMU+M=", + "requires": { + "exit": "0.1.2", + "glob": "~ 3.2.1" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" + }, + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", + "optional": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "optional": true, + "requires": { + "q": "^1.1.2" + } + }, + "coffee-script": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz", + "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=" + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "^0.1.4" + } + }, + "console-stream": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", + "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", + "optional": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "optional": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true, + "requires": { + "boom": "2.x.x" + } + }, + "css": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz", + "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", + "requires": { + "inherits": "^2.0.1", + "source-map": "^0.1.38", + "source-map-resolve": "^0.3.0", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "requires": { + "css": "^2.0.0" + } + }, + "csso": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.0.0.tgz", + "integrity": "sha1-F4tDpEYhIhwndWCG9THgL0KQDug=", + "optional": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "optional": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "dateformat": { + "version": "1.0.2-1.2.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz", + "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=" + }, + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", + "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", + "optional": true, + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "decompress-tar": "^3.0.0", + "decompress-tarbz2": "^3.0.0", + "decompress-targz": "^3.0.0", + "decompress-unzip": "^3.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-assign": "^1.0.1", + "vinyl-fs": "^2.2.0" + } + }, + "decompress-tar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", + "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", + "optional": true, + "requires": { + "is-tar": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "optional": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "optional": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "optional": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-tarbz2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", + "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", + "optional": true, + "requires": { + "is-bzip2": "^1.0.0", + "object-assign": "^2.0.0", + "seek-bzip": "^1.0.3", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "optional": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "optional": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "optional": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-targz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", + "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", + "optional": true, + "requires": { + "is-gzip": "^1.0.0", + "object-assign": "^2.0.0", + "strip-dirs": "^1.0.0", + "tar-stream": "^1.1.1", + "through2": "^0.6.1", + "vinyl": "^0.4.3" + }, + "dependencies": { + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", + "optional": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "optional": true + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "optional": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + } + } + }, + "decompress-unzip": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", + "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", + "optional": true, + "requires": { + "is-zip": "^1.0.0", + "read-all-stream": "^3.0.0", + "stat-mode": "^0.2.0", + "strip-dirs": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0", + "yauzl": "^2.2.1" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "optional": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "optional": true + }, + "diff": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.3.2.tgz", + "integrity": "sha1-/Qeh8fiRUZ2ZBaTJqJ3PWnC2YDc=" + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "download": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", + "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", + "optional": true, + "requires": { + "caw": "^1.0.1", + "concat-stream": "^1.4.7", + "each-async": "^1.0.0", + "filenamify": "^1.0.1", + "got": "^5.0.0", + "gulp-decompress": "^1.2.0", + "gulp-rename": "^1.2.0", + "is-url": "^1.2.0", + "object-assign": "^4.0.1", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.2", + "stream-combiner2": "^1.1.1", + "vinyl": "^1.0.0", + "vinyl-fs": "^2.2.0", + "ware": "^1.2.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "requires": { + "end-of-stream": "1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", + "requires": { + "once": "~1.3.0" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1" + } + } + } + }, + "each-async": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", + "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", + "optional": true, + "requires": { + "onetime": "^1.0.0", + "set-immediate-shim": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "~0.1.0" + } + }, + "end-of-stream": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "optional": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "optional": true, + "requires": { + "prr": "~0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", + "integrity": "sha1-lu258v2wGZWCKyY92KratnSBgbw=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "exec-buffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-2.0.1.tgz", + "integrity": "sha1-ACijG+CxRgth0HX5avRYO54zXqA=", + "optional": true, + "requires": { + "rimraf": "^2.2.6", + "tempfile": "^1.0.0" + } + }, + "exec-series": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", + "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", + "optional": true, + "requires": { + "async-each-series": "^1.1.0", + "object-assign": "^4.1.0" + } + }, + "executable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", + "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", + "optional": true, + "requires": { + "meow": "^3.1.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "optional": true + }, + "fancy-log": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", + "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", + "optional": true, + "requires": { + "chalk": "^1.1.1", + "time-stamp": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "optional": true + } + } + }, + "faye-websocket": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz", + "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=" + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "optional": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-sync-cmp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz", + "integrity": "sha1-peeo/7+kk7Q7kju9TKiaU7Y7YSs=" + }, + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "filename-reserved-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", + "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", + "optional": true + }, + "filenamify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", + "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", + "optional": true, + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "find-versions": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", + "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", + "optional": true, + "requires": { + "array-uniq": "^1.0.0", + "get-stdin": "^4.0.1", + "meow": "^3.5.0", + "semver-regex": "^1.0.0" + } + }, + "findup-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz", + "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=", + "requires": { + "glob": "~3.2.9", + "lodash": "~2.4.1" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "requires": { + "globule": "~0.1.0" + } + }, + "get-proxy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", + "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", + "optional": true, + "requires": { + "rc": "^1.1.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "gifsicle": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", + "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "requires": { + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=" + } + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "requires": { + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" + }, + "dependencies": { + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=" + } + } + }, + "glogg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", + "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", + "optional": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "optional": true, + "requires": { + "create-error-class": "^3.0.1", + "duplexer2": "^0.1.4", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "node-status-codes": "^1.0.0", + "object-assign": "^4.0.1", + "parse-json": "^2.1.0", + "pinkie-promise": "^2.0.0", + "read-all-stream": "^3.0.0", + "readable-stream": "^2.0.5", + "timed-out": "^3.0.0", + "unzip-response": "^1.0.2", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "grunt": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", + "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=", + "requires": { + "async": "~0.1.22", + "coffee-script": "~1.3.3", + "colors": "~0.6.2", + "dateformat": "1.0.2-1.2.3", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.1.2", + "getobject": "~0.1.0", + "glob": "~3.1.21", + "grunt-legacy-log": "~0.1.0", + "grunt-legacy-util": "~0.2.0", + "hooker": "~0.2.3", + "iconv-lite": "~0.2.11", + "js-yaml": "~2.0.5", + "lodash": "~0.9.2", + "minimatch": "~0.2.12", + "nopt": "~1.0.10", + "rimraf": "~2.2.8", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + } + }, + "grunt-autoprefixer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-3.0.4.tgz", + "integrity": "sha1-/kLiR7z6ucKSoSwGLa1PNb3pAsU=", + "requires": { + "autoprefixer-core": "^5.1.7", + "chalk": "~1.0.0", + "diff": "~1.3.0", + "postcss": "^4.1.11" + } + }, + "grunt-contrib-clean": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.6.0.tgz", + "integrity": "sha1-9TLbpLghJnTHwBPhRr2mY4uQSPY=", + "requires": { + "rimraf": "~2.2.1" + } + }, + "grunt-contrib-copy": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.2.tgz", + "integrity": "sha1-3zHJD/zECbyfr+ROwN0eQlmRb+o=", + "requires": { + "chalk": "^1.1.1", + "file-sync-cmp": "^0.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "grunt-contrib-cssmin": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.3.tgz", + "integrity": "sha1-QVdZYJb7dlb8RktMx7B0beHzkBQ=", + "requires": { + "chalk": "^1.0.0", + "clean-css": "^3.1.0", + "maxmin": "^1.1.0" + } + }, + "grunt-contrib-imagemin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-imagemin/-/grunt-contrib-imagemin-1.0.1.tgz", + "integrity": "sha1-5Ho1YTN29MqpwfkERlA8rhyUTXk=", + "requires": { + "async": "^1.5.2", + "chalk": "^1.0.0", + "gulp-rename": "^1.2.0", + "imagemin": "^4.0.0", + "pretty-bytes": "^3.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "pretty-bytes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", + "requires": { + "number-is-nan": "^1.0.0" + } + } + } + }, + "grunt-contrib-jshint": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.11.3.tgz", + "integrity": "sha1-gDaBgdzNVRGG5bg4XAEc7iTWQKA=", + "requires": { + "hooker": "^0.2.3", + "jshint": "~2.8.0" + } + }, + "grunt-contrib-less": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz", + "integrity": "sha1-O73sC3XRLOqlXWKUNiXAsIYc328=", + "requires": { + "async": "^2.0.0", + "chalk": "^1.0.0", + "less": "~2.7.1", + "lodash": "^4.8.2" + }, + "dependencies": { + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=", + "requires": { + "lodash": "^4.14.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + } + } + }, + "grunt-contrib-uglify": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.9.2.tgz", + "integrity": "sha1-GmHG8hJBDkq7T3yJFTcXsQFWAmA=", + "requires": { + "chalk": "^1.0.0", + "lodash": "^3.2.0", + "maxmin": "^1.0.0", + "uglify-js": "^2.4.24", + "uri-path": "0.0.2" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, + "grunt-contrib-watch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz", + "integrity": "sha1-ZP3LolpjX1tNobbOb5DaCutuPxU=", + "requires": { + "async": "~0.2.9", + "gaze": "~0.5.1", + "lodash": "~2.4.1", + "tiny-lr-fork": "0.0.5" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + } + } + }, + "grunt-css-count": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grunt-css-count/-/grunt-css-count-0.3.2.tgz", + "integrity": "sha1-lPgSDvQ1P2PqWMSB65ZS7622USs=", + "requires": { + "css-parse": ">=2.0.0", + "glob": ">=7.1.1", + "gzip-size": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "requires": { + "duplexer": "^0.1.1" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "grunt-legacy-log": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz", + "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=", + "requires": { + "colors": "~0.6.2", + "grunt-legacy-log-utils": "~0.1.1", + "hooker": "~0.2.3", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=" + } + } + }, + "grunt-legacy-log-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz", + "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=", + "requires": { + "colors": "~0.6.2", + "lodash": "~2.4.1", + "underscore.string": "~2.3.3" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" + }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=" + } + } + }, + "grunt-legacy-util": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz", + "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=", + "requires": { + "async": "~0.1.22", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~0.9.2", + "underscore.string": "~2.2.1", + "which": "~1.0.5" + } + }, + "gulp-decompress": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", + "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", + "optional": true, + "requires": { + "archive-type": "^3.0.0", + "decompress": "^3.0.0", + "gulp-util": "^3.0.1", + "readable-stream": "^2.0.2" + } + }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=" + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "optional": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "dateformat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", + "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", + "optional": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "optional": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "optional": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "optional": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "optional": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "requires": { + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "optional": true, + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + } + }, + "has-ansi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", + "integrity": "sha1-wLWxYV2eOCsP9nFp2We0JeSMpTg=", + "requires": { + "ansi-regex": "^1.1.0", + "get-stdin": "^4.0.1" + } + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "optional": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "optional": true + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz", + "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=" + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "optional": true + }, + "imagemin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-4.0.0.tgz", + "integrity": "sha1-6Q5/CTaDZZXxj6Ff6Qb0+iWeqEc=", + "requires": { + "buffer-to-vinyl": "^1.0.0", + "concat-stream": "^1.4.6", + "imagemin-gifsicle": "^4.0.0", + "imagemin-jpegtran": "^4.0.0", + "imagemin-optipng": "^4.0.0", + "imagemin-svgo": "^4.0.0", + "optional": "^0.1.0", + "readable-stream": "^2.0.0", + "stream-combiner2": "^1.1.1", + "vinyl-fs": "^2.1.1" + } + }, + "imagemin-gifsicle": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-4.2.0.tgz", + "integrity": "sha1-D++butNHbmt2iFc2zFsLh6CHV8o=", + "optional": true, + "requires": { + "gifsicle": "^3.0.0", + "is-gif": "^1.0.0", + "through2": "^0.6.1" + } + }, + "imagemin-jpegtran": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-4.3.2.tgz", + "integrity": "sha1-G8bR4r0T/bZNJFUm1jWn5d/rEvw=", + "optional": true, + "requires": { + "is-jpg": "^1.0.0", + "jpegtran-bin": "^3.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "optional": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "imagemin-optipng": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-4.3.0.tgz", + "integrity": "sha1-dgRmOrLuMVczJ0cm/Rw3TStErbY=", + "optional": true, + "requires": { + "exec-buffer": "^2.0.0", + "is-png": "^1.0.0", + "optipng-bin": "^3.0.0", + "through2": "^0.6.1" + } + }, + "imagemin-svgo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-4.2.1.tgz", + "integrity": "sha1-VPB9xW9HJgRi32phxUvvtEtXvlU=", + "optional": true, + "requires": { + "is-svg": "^1.0.0", + "svgo": "^0.6.0", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "optional": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "optional": true + }, + "ip-regex": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", + "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", + "optional": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "optional": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-bzip2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", + "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", + "optional": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-gif": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", + "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", + "optional": true + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", + "optional": true + }, + "is-jpg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", + "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", + "optional": true + }, + "is-natural-number": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", + "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", + "optional": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "optional": true + }, + "is-png": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", + "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", + "optional": true + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "optional": true + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", + "optional": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "optional": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-1.1.1.tgz", + "integrity": "sha1-rA76r7ZTrFhHNwix+HNjbKEQ4xs=", + "optional": true + }, + "is-tar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", + "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", + "optional": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "is-url": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", + "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", + "optional": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" + }, + "is-zip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", + "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jpegtran-bin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", + "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "js-base64": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=" + }, + "js-yaml": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz", + "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=", + "requires": { + "argparse": "~ 0.1.11", + "esprima": "~ 1.0.2" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jshint": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.8.0.tgz", + "integrity": "sha1-HQmjvZE8TK36gb8Y1YK9hb/+DUQ=", + "requires": { + "cli": "0.6.x", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "3.7.x", + "minimatch": "2.0.x", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "dependencies": { + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz", + "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" + } + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", + "optional": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "less": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", + "integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=", + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.2.11", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.72.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "optional": true + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "optional": true + } + } + }, + "load-grunt-tasks": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz", + "integrity": "sha1-ByhWEYD9IP+KaSdQWFL8WKrqDIg=", + "requires": { + "arrify": "^1.0.0", + "multimatch": "^2.0.0", + "pkg-up": "^1.0.0", + "resolve-pkg": "^0.1.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "lodash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz", + "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "optional": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "optional": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "optional": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "optional": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "optional": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "optional": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "optional": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "optional": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "optional": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "optional": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "optional": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "optional": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "optional": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "optional": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "optional": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "optional": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "logalot": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", + "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", + "optional": true, + "requires": { + "figures": "^1.3.5", + "squeak": "^1.0.0" + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "optional": true + }, + "lpad-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", + "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", + "optional": true, + "requires": { + "get-stdin": "^4.0.1", + "indent-string": "^2.1.0", + "longest": "^1.0.0", + "meow": "^3.3.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "mime": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "optional": true + }, + "mime-db": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", + "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=", + "optional": true + }, + "mime-types": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "optional": true, + "requires": { + "mime-db": "~1.29.0" + } + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "optional": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "optional": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "optional": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "optional": true + } + } + }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", + "optional": true + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "noptify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz", + "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", + "requires": { + "nopt": "~2.0.0" + }, + "dependencies": { + "nopt": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz", + "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", + "requires": { + "abbrev": "1" + } + } + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "optional": true + }, + "optional": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", + "integrity": "sha1-zbGpvtxzfSAl9pDO61DgSURP1bM=" + }, + "optipng-bin": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", + "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", + "optional": true, + "requires": { + "bin-build": "^2.0.0", + "bin-wrapper": "^3.0.0", + "logalot": "^2.0.0" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "os-filter-obj": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", + "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + } + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "optional": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "optional": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "requires": { + "find-up": "^1.0.0" + } + }, + "postcss": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-4.1.16.tgz", + "integrity": "sha1-TESbTIr53zyvbTf44eV10DYXWNw=", + "requires": { + "es6-promise": "~2.3.0", + "js-base64": "~2.1.8", + "source-map": "~0.4.2" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "optional": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "q": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "optional": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "optional": true, + "requires": { + "pinkie-promise": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "requires": { + "is-equal-shallow": "^0.1.3", + "is-primitive": "^2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=", + "optional": true + } + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "resolve-pkg": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz", + "integrity": "sha1-AsyZNBDik2livZcWahsHfalyVTE=", + "requires": { + "resolve-from": "^2.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "optional": true + }, + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "optional": true, + "requires": { + "commander": "~2.8.1" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=" + }, + "semver-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", + "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", + "optional": true + }, + "semver-truncate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", + "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "optional": true, + "requires": { + "semver": "^5.3.0" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "optional": true + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true, + "requires": { + "hoek": "2.x.x" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-resolve": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz", + "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", + "requires": { + "atob": "~1.1.0", + "resolve-url": "~0.2.1", + "source-map-url": "~0.3.0", + "urix": "~0.1.0" + } + }, + "source-map-url": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz", + "integrity": "sha1-fsrxO1e80J2opAxdJp2zN5nUqvk=" + }, + "sparkles": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", + "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", + "optional": true + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "^1.0.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "optional": true + }, + "squeak": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", + "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", + "optional": true, + "requires": { + "chalk": "^1.0.0", + "console-stream": "^0.1.1", + "lpad-align": "^1.0.1" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "stat-mode": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", + "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", + "optional": true + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "integrity": "sha1-32LBqpTtLxFOHQ8h/R1QSCt5pg4=", + "requires": { + "ansi-regex": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + } + }, + "strip-dirs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", + "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", + "optional": true, + "requires": { + "chalk": "^1.0.0", + "get-stdin": "^4.0.1", + "is-absolute": "^0.1.5", + "is-natural-number": "^2.0.0", + "minimist": "^1.1.0", + "sum-up": "^1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "strip-outer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", + "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", + "optional": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "sum-up": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", + "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", + "optional": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", + "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=" + }, + "svgo": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.6.6.tgz", + "integrity": "sha1-s0CIkDbyD5tEdUMHfQ9Vc+0ETAg=", + "optional": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.0.0", + "js-yaml": "~3.6.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "optional": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "optional": true + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "optional": true + }, + "js-yaml": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", + "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", + "optional": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + } + } + }, + "tar-stream": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "optional": true, + "requires": { + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "optional": true, + "requires": { + "os-tmpdir": "^1.0.0", + "uuid": "^2.0.1" + } + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "optional": true + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", + "optional": true + }, + "tiny-lr-fork": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz", + "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", + "requires": { + "debug": "~0.7.0", + "faye-websocket": "~0.4.3", + "noptify": "~0.0.3", + "qs": "~0.5.2" + }, + "dependencies": { + "qs": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=" + } + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "requires": { + "extend-shallow": "^2.0.1" + } + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "optional": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "optional": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "optional": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" + }, + "underscore.string": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", + "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=" + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" + } + }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", + "optional": true + }, + "uri-path": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-0.0.2.tgz", + "integrity": "sha1-gD6wHy/rF5J9zOD2GH5yt19T9VQ=" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "optional": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "url-regex": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", + "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", + "optional": true, + "requires": { + "ip-regex": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" + } + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-assign": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", + "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", + "optional": true, + "requires": { + "object-assign": "^4.0.1", + "readable-stream": "^2.0.0" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + } + } + }, + "ware": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", + "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", + "optional": true, + "requires": { + "wrap-fn": "^0.1.0" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "optional": true + }, + "which": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz", + "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=" + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, + "wrap-fn": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", + "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", + "optional": true, + "requires": { + "co": "3.1.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + } + } + }, + "yauzl": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz", + "integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=", + "optional": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.0.1" + } + } + } +} diff --git a/templates/frontOffice/boutique/product.html b/templates/frontOffice/boutique/product.html index 5af1483d..0b45dbf6 100644 --- a/templates/frontOffice/boutique/product.html +++ b/templates/frontOffice/boutique/product.html @@ -146,7 +146,7 @@ {intl l="Availability"}: {intl l='In Stock'} - + {if $pse_count == 1} {loop name="LLE_pse" type="product_sale_elements" product="$product_id"} {loop name="LLE_combi" type="attribute_combination" product_sale_elements="$ID"} @@ -155,6 +155,12 @@ {/loop} {/if} + + + {if {$QUANTITY} <= {config key="thecoredev_seuil_alerte_stock" default="1"}} + {intl l='Limited stock' d='prixdegressifs'} + {/if} + {intl l='Out of Stock'}