text:
<?php

namespace Symfony\Component\Validator\Mapping;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Constraints\GroupSequence;
use Symfony\Component\Validator\Constraints\Traverse;
use Symfony\Component\Validator\Constraints\Valid;
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
use Symfony\Component\Validator\Exception\GroupDefinitionException;
use Symfony\Component\Validator\ValidationVisitorInterface;

/**
 * Default implementation of {@link ClassMetadataInterface}.
 *
 * This class supports serialization and cloning.
 *
 * @author Bernhard Schussek <bschussek@gmail.com>
 * @author Fabien Potencier <fabien@symfony.com>
 */
class ClassMetadata extends ElementMetadata implements ClassMetadataInterface
{
    /**
     * @var string
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getClassName()} instead.
     */
    public $name;

    /**
     * @var string
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getDefaultGroup()} instead.
     */
    public $defaultGroup;

    /**
     * @var MemberMetadata[]
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getPropertyMetadata()} instead.
     */
    public $members = array();

    /**
     * @var PropertyMetadata[]
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getPropertyMetadata()} instead.
     */
    public $properties = array();

    /**
     * @var GetterMetadata[]
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getPropertyMetadata()} instead.
     */
    public $getters = array();

    /**
     * @var array
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getGroupSequence()} instead.
     */
    public $groupSequence = array();

    /**
     * @var bool
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link isGroupSequenceProvider()} instead.
     */
    public $groupSequenceProvider = false;

    /**
     * The strategy for traversing traversable objects.
     *
     * By default, only instances of {@link \Traversable} are traversed.
     *
     * @var int
     *
     * @internal This property is public in order to reduce the size of the
     *           class' serialized representation. Do not access it. Use
     *           {@link getTraversalStrategy()} instead.
     */
    public $traversalStrategy = TraversalStrategy::IMPLICIT;

    /**
     * @var \ReflectionClass
     */
    private $reflClass;

    /**
     * Constructs a metadata for the given class
     *
     * @param string $class
     */
    public function __construct($class)
    {
        $this->name = $class;
        // class name without namespace
        if (false !== $nsSep = strrpos($class, '\\')) {
            $this->defaultGroup = substr($class, $nsSep + 1);
        } else {
            $this->defaultGroup = $class;
        }
    }

    /**
     * {@inheritdoc}
     *
     * @deprecated Deprecated since version 2.5, to be removed in Symfony 3.0.
     */
    public function accept(ValidationVisitorInterface $visitor, $value, $group, $propertyPath, $propagatedGroup = null)
    {
        if (null === $propagatedGroup && Constraint::DEFAULT_GROUP === $group
                && ($this->hasGroupSequence() || $this->isGroupSequenceProvider())) {
            if ($this->hasGroupSequence()) {
                $groups = $this->getGroupSequence();
            } else {
                $groups = $value->getGroupSequence();
            }

            foreach ($groups as $group) {
                $this->accept($visitor, $value, $group, $propertyPath, Constraint::DEFAULT_GROUP);

                if (count($visitor->getViolations()) > 0) {
                    break;
                }
            }

            return;
        }

        $visitor->visit($this, $value, $group, $propertyPath);

        if (null !== $value) {
            $pathPrefix = empty($propertyPath) ? '' : $propertyPath.'.';

            foreach ($this->getConstrainedProperties() as $property) {
                foreach ($this->getPropertyMetadata($property) as $member) {
                    $member->accept($visitor, $member->getPropertyValue($value), $group, $pathPrefix.$property, $propagatedGroup);
                }
            }
        }
    }

    /**
     * {@inheritdoc}
     */
    public function __sleep()
    {
        $parentProperties = parent::__sleep();

        // Don't store the cascading strategy. Classes never cascade.
        unset($parentProperties[array_search('cascadingStrategy', $parentProperties)]);

        return array_merge($parentProperties, array(
            'getters',
            'groupSequence',
            'groupSequenceProvider',
            'members',
            'name',
            'properties',
            'defaultGroup',
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getClassName()
    {
        return $this->name;
    }

    /**
     * Returns the name of the default group for this class
     *
     * For each class, the group "Default" is an alias for the group
     * "<ClassName>", where <ClassName> is the non-namespaced name of the
     * class. All constraints implicitly or explicitly assigned to group
     * "Default" belong to both of these groups, unless the class defines
     * a group sequence.
     *
     * If a class defines a group sequence, validating the class in "Default"
     * will validate the group sequence. The constraints assigned to "Default"
     * can still be validated by validating the class in "<ClassName>".
     *
     * @return string  The name of the default group
     */
    public function getDefaultGroup()
    {
        return $this->defaultGroup;
    }

    /**
     * {@inheritdoc}
     */
    public function addConstraint(Constraint $constraint)
    {
        if (!in_array(Constraint::CLASS_CONSTRAINT, (array) $constraint->getTargets())) {
            throw new ConstraintDefinitionException(sprintf(
                'The constraint "%s" cannot be put on classes.',
                get_class($constraint)
            ));
        }

        if ($constraint instanceof Valid) {
            throw new ConstraintDefinitionException(sprintf(
                'The constraint "%s" cannot be put on classes.',
                get_class($constraint)
            ));
        }

        if ($constraint instanceof Traverse) {
            if ($constraint->traverse) {
                // If traverse is true, traversal should be explicitly enabled
                $this->traversalStrategy = TraversalStrategy::TRAVERSE;
            } else {
                // If traverse is false, traversal should be explicitly disabled
                $this->traversalStrategy = TraversalStrategy::NONE;
            }

            // The constraint is not added
            return $this;
        }

        $constraint->addImplicitGroupName($this->getDefaultGroup());

        parent::addConstraint($constraint);

        return $this;
    }

    /**
     * Adds a constraint to the given property.
     *
     * @param string     $property   The name of the property
     * @param Constraint $constraint The constraint
     *
     * @return ClassMetadata This object
     */
    public function addPropertyConstraint($property, Constraint $constraint)
    {
        if (!isset($this->properties[$property])) {
            $this->properties[$property] = new PropertyMetadata($this->getClassName(), $property);

            $this->addPropertyMetadata($this->properties[$property]);
        }

        $constraint->addImplicitGroupName($this->getDefaultGroup());

        $this->properties[$property]->addConstraint($constraint);

        return $this;
    }

    /**
     * @param string       $property
     * @param Constraint[] $constraints
     *
     * @return ClassMetadata
     */
    public function addPropertyConstraints($property, array $constraints)
    {
        foreach ($constraints as $constraint) {
            $this->addPropertyConstraint($property, $constraint);
        }

        return $this;
    }

    /**
     * Adds a constraint to the getter of the given property.
     *
     * The name of the getter is assumed to be the name of the property with an
     * uppercased first letter and either the prefix "get" or "is".
     *
     * @param string     $property   The name of the property
     * @param Constraint $constraint The constraint
     *
     * @return ClassMetadata This object
     */
    public function addGetterConstraint($property, Constraint $constraint)
    {
        if (!isset($this->getters[$property])) {
            $this->getters[$property] = new GetterMetadata($this->getClassName(), $property);

            $this->addPropertyMetadata($this->getters[$property]);
        }

        $constraint->addImplicitGroupName($this->getDefaultGroup());

        $this->getters[$property]->addConstraint($constraint);

        return $this;
    }

    /**
     * @param string       $property
     * @param Constraint[] $constraints
     *
     * @return ClassMetadata
     */
    public function addGetterConstraints($property, array $constraints)
    {
        foreach ($constraints as $constraint) {
            $this->addGetterConstraint($property, $constraint);
        }

        return $this;
    }

    /**
     * Merges the constraints of the given metadata into this object.
     *
     * @param ClassMetadata $source The source metadata
     */
    public function mergeConstraints(ClassMetadata $source)
    {
        foreach ($source->getConstraints() as $constraint) {
            $this->addConstraint(clone $constraint);
        }

        foreach ($source->getConstrainedProperties() as $property) {
            foreach ($source->getPropertyMetadata($property) as $member) {
                $member = clone $member;

                foreach ($member->getConstraints() as $constraint) {
                    $constraint->addImplicitGroupName($this->getDefaultGroup());
                }

                $this->addPropertyMetadata($member);

                if ($member instanceof MemberMetadata && !$member->isPrivate($this->name)) {
                    $property = $member->getPropertyName();

                    if ($member instanceof PropertyMetadata && !isset($this->properties[$property])) {
                        $this->properties[$property] = $member;
                    } elseif ($member instanceof GetterMetadata && !isset($this->getters[$property])) {
                        $this->getters[$property] = $member;
                    }
                }
            }
        }
    }

    /**
     * Adds a member metadata.
     *
     * @param MemberMetadata $metadata
     *
     * @deprecated Deprecated since version 2.6, to be removed in 3.0.
     */
    protected function addMemberMetadata(MemberMetadata $metadata)
    {
        $this->addPropertyMetadata($metadata);
    }

    /**
     * Returns true if metadatas of members is present for the given property.
     *
     * @param string $property The name of the property
     *
     * @return bool
     *
     * @deprecated Deprecated since version 2.6, to be removed in 3.0. Use {@link hasPropertyMetadata} instead.
     */
    public function hasMemberMetadatas($property)
    {
        return $this->hasPropertyMetadata($property);
    }

    /**
     * Returns all metadatas of members describing the given property.
     *
     * @param string $property The name of the property
     *
     * @return MemberMetadata[] An array of MemberMetadata
     *
     * @deprecated Deprecated since version 2.6, to be removed in 3.0. Use {@link getPropertyMetadata} instead.
     */
    public function getMemberMetadatas($property)
    {
        return $this->getPropertyMetadata($property);
    }

    /**
     * {@inheritdoc}
     */
    public function hasPropertyMetadata($property)
    {
        return array_key_exists($property, $this->members);
    }

    /**
     * {@inheritdoc}
     */
    public function getPropertyMetadata($property)
    {
        if (!isset($this->members[$property])) {
            return array();
        }

        return $this->members[$property];
    }

    /**
     * {@inheritdoc}
     */
    public function getConstrainedProperties()
    {
        return array_keys($this->members);
    }

    /**
     * Sets the default group sequence for this class.
     *
     * @param array $groupSequence An array of group names
     *
     * @return ClassMetadata
     *
     * @throws GroupDefinitionException
     */
    public function setGroupSequence($groupSequence)
    {
        if ($this->isGroupSequenceProvider()) {
            throw new GroupDefinitionException('Defining a static group sequence is not allowed with a group sequence provider');
        }

        if (is_array($groupSequence)) {
            $groupSequence = new GroupSequence($groupSequence);
        }

        if (in_array(Constraint::DEFAULT_GROUP, $groupSequence->groups, true)) {
            throw new GroupDefinitionException(sprintf('The group "%s" is not allowed in group sequences', Constraint::DEFAULT_GROUP));
        }

        if (!in_array($this->getDefaultGroup(), $groupSequence->groups, true)) {
            throw new GroupDefinitionException(sprintf('The group "%s" is missing in the group sequence', $this->getDefaultGroup()));
        }

        $this->groupSequence = $groupSequence;

        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function hasGroupSequence()
    {
        return count($this->groupSequence) > 0;
    }

    /**
     * {@inheritdoc}
     */
    public function getGroupSequence()
    {
        return $this->groupSequence;
    }

    /**
     * Returns a ReflectionClass instance for this class.
     *
     * @return \ReflectionClass
     */
    public function getReflectionClass()
    {
        if (!$this->reflClass) {
            $this->reflClass = new \ReflectionClass($this->getClassName());
        }

        return $this->reflClass;
    }

    /**
     * Sets whether a group sequence provider should be used.
     *
     * @param bool    $active
     *
     * @throws GroupDefinitionException
     */
    public function setGroupSequenceProvider($active)
    {
        if ($this->hasGroupSequence()) {
            throw new GroupDefinitionException('Defining a group sequence provider is not allowed with a static group sequence');
        }

        if (!$this->getReflectionClass()->implementsInterface('Symfony\Component\Validator\GroupSequenceProviderInterface')) {
            throw new GroupDefinitionException(sprintf('Class "%s" must implement GroupSequenceProviderInterface', $this->name));
        }

        $this->groupSequenceProvider = $active;
    }

    /**
     * {@inheritdoc}
     */
    public function isGroupSequenceProvider()
    {
        return $this->groupSequenceProvider;
    }

    /**
     * Class nodes are never cascaded.
     *
     * {@inheritdoc}
     */
    public function getCascadingStrategy()
    {
        return CascadingStrategy::NONE;
    }

    /**
     * Adds a property metadata.
     *
     * @param PropertyMetadataInterface $metadata
     */
    private function addPropertyMetadata(PropertyMetadataInterface $metadata)
    {
        $property = $metadata->getPropertyName();

        $this->members[$property][] = $metadata;
    }
}


text:
/*!
* Description: CSS Styles.
*/
/**
* These include the SASS files and output them to a CSS file. All the styles
* should make a small css file that can be downloaded once and cached to
* improve the end user experience. If the outputted file is found to be too
* large, it can be broken up into smaller files.
*/
/*Colors used in the site
example:
$blue: #075081;
*/
/*!
This CSS resource incorporates links to font software which is
the valuable copyrighted property of Monotype Imaging and/or
its suppliers. You may not attempt to copy, install, redistribute, convert,
modify or reverse engineer this font software. Please contact Monotype Imaging
with any questions regarding Web Fonts:  http://webfonts.fonts.com
*/
/**
 * External fonts are defined here. Put them in the /css/fonts directory.
 * Google and other web hosted fonts are defined below
 */
/*
$fontRounded: "HelveticaW01-RoundedBd", $fontDefault;
@font-face{
    font-family:"HelveticaW01-RoundedBd";
    font-weight:bold;
    font-style:normal;
    font-variant:normal;
    src:url("/css/Fonts/79e78e0d-1e3d-4298-8913-6f12cf008e7d.eot?iefix") format("eot");
}
@font-face{
    font-family:"HelveticaW01-RoundedBd";
    font-weight:bold;
    font-style:normal;
    font-variant:normal;
    src:url("/css/Fonts/79e78e0d-1e3d-4298-8913-6f12cf008e7d.eot?iefix");
    src:
        url("/css/Fonts/c280ced9-704c-46b2-a66a-aff7ee1627bf.woff") format("woff"),
        url("/css/Fonts/548e8c1d-b37a-43af-b197-a35e2f0c3d2f.ttf") format("truetype"),
        url("/css/Fonts/5e9b82e3-aa53-4064-b984-f49aa751081d.svg#5e9b82e3-aa53-4064-b984-f49aa751081d") format("svg");
}
*/
/**
 * Google hosted fonts. Include the include script in your page header file and
 * then reference the font name here
 */
@font-face {
  font-family: "Proxima N W01 Reg";
  src: url("../Fonts/7e90123f-e4a7-4689-b41f-6bcfe331c00a.eot?#iefix");
  src: url("../Fonts/7e90123f-e4a7-4689-b41f-6bcfe331c00a.eot?#iefix") format("eot"), url("../Fonts/e56ecb6d-da41-4bd9-982d-2d295bec9ab0.woff") format("woff"), url("../Fonts/2aff4f81-3e97-4a83-9e6c-45e33c024796.ttf") format("truetype"), url("../Fonts/ab9cd062-380f-4b53-b1a7-c0bec7402235.svg#ab9cd062-380f-4b53-b1a7-c0bec7402235") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Smbd";
  src: url("../Fonts/87e4b4fc-cdf1-450a-8bed-dd818cba908d.eot?#iefix");
  src: url("../Fonts/87e4b4fc-cdf1-450a-8bed-dd818cba908d.eot?#iefix") format("eot"), url("../Fonts/70ae52ec-d89b-4c6a-9402-854ebe423c54.woff") format("woff"), url("../Fonts/6a35571c-ea14-4dac-9ae1-0e7af0abeec8.ttf") format("truetype"), url("../Fonts/ac2bdafc-d4a8-49d0-8a10-4e2f16bf7e3c.svg#ac2bdafc-d4a8-49d0-8a10-4e2f16bf7e3c") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Bold";
  src: url("../Fonts/fbc6b03a-b3a1-427c-a884-053deca3a53c.eot?#iefix");
  src: url("../Fonts/fbc6b03a-b3a1-427c-a884-053deca3a53c.eot?#iefix") format("eot"), url("../Fonts/d999c07b-a049-4eb5-b8a6-4f36ae25e67e.woff") format("woff"), url("../Fonts/4d4a75f5-d32a-4a09-8665-133afd39cc37.ttf") format("truetype"), url("../Fonts/8152bc4e-d700-4c78-b6be-326893e6f53f.svg#8152bc4e-d700-4c78-b6be-326893e6f53f") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Xbold";
  src: url("../Fonts/9fbce143-f5db-4c0b-9159-b1e666079f67.eot?#iefix");
  src: url("../Fonts/9fbce143-f5db-4c0b-9159-b1e666079f67.eot?#iefix") format("eot"), url("../Fonts/19dd5cf2-ac2d-48d5-901a-c432fd291ee2.woff") format("woff"), url("../Fonts/22cfbfa4-f607-4751-92eb-6fa194353e57.ttf") format("truetype"), url("../Fonts/3d6b6348-e05f-4123-b19a-3bfd02c7f361.svg#3d6b6348-e05f-4123-b19a-3bfd02c7f361") format("svg");
}
@font-face {
  font-family: "Proxima N W15 Cd Light";
  src: url("../Fonts/71d27047-aee7-4513-aa39-93acec4189af.eot?#iefix");
  src: url("../Fonts/71d27047-aee7-4513-aa39-93acec4189af.eot?#iefix") format("eot"), url("../Fonts/69d0a741-16e2-4ba2-9f9d-4fbe3d972acf.woff") format("woff"), url("../Fonts/c650156e-a72f-4031-8687-7e3519940f30.ttf") format("truetype"), url("../Fonts/d1116fb4-2dec-4fad-b64c-4ed24e4d3db0.svg#d1116fb4-2dec-4fad-b64c-4ed24e4d3db0") format("svg");
}
@font-face {
  font-family: "Proxima N W15 Cd Smbd";
  src: url("../Fonts/d98fcd0d-5b66-4059-8543-8b20d2df6c4e.eot?#iefix");
  src: url("../Fonts/d98fcd0d-5b66-4059-8543-8b20d2df6c4e.eot?#iefix") format("eot"), url("../Fonts/25fea31c-0cde-4457-b875-139b2f814d65.woff") format("woff"), url("../Fonts/8304ee6d-ecc7-4c17-bc8d-86f956dd63ed.ttf") format("truetype"), url("../Fonts/b08d6b72-1661-499a-be7b-a62094eab547.svg#b08d6b72-1661-499a-be7b-a62094eab547") format("svg");
}
/*
 * HTML5 Boilerplate
 *
 * What follows is the result of much research on cross-browser styling.
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 * Kroc Camen, and the H5BP dev community and team.
 */
/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */
/* line 14, ../../plugins/_boilerplate.scss */
html,
button,
input,
select,
textarea {
  color: #222;
}

/* line 22, ../../plugins/_boilerplate.scss */
body {
  font-size: 1em;
  line-height: 1.4;
}

/*
 * Remove text-shadow in selection highlight: h5bp.com/i
 * These selection rule sets have to be separate.
 * Customize the background color to match your design.
 */
/* line 33, ../../plugins/_boilerplate.scss */
::-moz-selection {
  background: #b3d4fc;
  text-shadow: none;
}

/* line 38, ../../plugins/_boilerplate.scss */
::selection {
  background: #b3d4fc;
  text-shadow: none;
}

/*
 * A better looking default horizontal rule
 */
/* line 47, ../../plugins/_boilerplate.scss */
hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0;
}

/*
 * Remove the gap between images and the bottom of their containers: h5bp.com/i/440
 */
/* line 60, ../../plugins/_boilerplate.scss */
img {
  vertical-align: middle;
}

/*
 * Remove default fieldset styles.
 */
/* line 68, ../../plugins/_boilerplate.scss */
fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}

/*
 * Allow only vertical resizing of textareas.
 */
/* line 78, ../../plugins/_boilerplate.scss */
textarea {
  resize: vertical;
}

/* ==========================================================================
   Chrome Frame prompt
   ========================================================================== */
/* line 86, ../../plugins/_boilerplate.scss */
.chromeframe {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0;
}

/* ==========================================================================
   Helper classes
   ========================================================================== */
/*
 * Image replacement
 */
/* line 101, ../../plugins/_boilerplate.scss */
.ir {
  background-color: transparent;
  border: 0;
  overflow: hidden;
  /* IE 6/7 fallback */
  *text-indent: -9999px;
}

/* line 109, ../../plugins/_boilerplate.scss */
.ir:before {
  content: "";
  display: block;
  width: 0;
  height: 150%;
}

/*
 * Hide from both screenreaders and browsers: h5bp.com/u
 */
/* line 120, ../../plugins/_boilerplate.scss */
.hidden {
  display: none !important;
  visibility: hidden;
}

/*
 * Hide only visually, but have it available for screenreaders: h5bp.com/v
 */
/* line 129, ../../plugins/_boilerplate.scss */
.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
}

/*
 * Extends the .visuallyhidden class to allow the element to be focusable
 * when navigated to via the keyboard: h5bp.com/p
 */
/* line 145, ../../plugins/_boilerplate.scss */
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto;
}

/*
 * Hide visually and from screenreaders, but maintain layout
 */
/* line 159, ../../plugins/_boilerplate.scss */
.invisible {
  visibility: hidden;
}

/*
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */
/* line 175, ../../plugins/_boilerplate.scss */
.clearfix:before,
.clearfix:after {
  content: " ";
  /* 1 */
  display: table;
  /* 2 */
}

/* line 181, ../../plugins/_boilerplate.scss */
.clearfix:after {
  clear: both;
}

/*
 * For IE 6/7 only
 * Include this rule to trigger hasLayout and contain floats.
 */
/* line 190, ../../plugins/_boilerplate.scss */
.clearfix {
  *zoom: 1;
}

/* ==========================================================================
   EXAMPLE Media Queries for Responsive Design.
   These examples override the primary ('mobile first') styles.
   Modify as content requires.
   ========================================================================== */
@media only screen and (min-width: 35em) {
  /* Style adjustments for viewports that meet the condition */
}
@media print, (-o-min-device-pixel-ratio: 5 / 4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
  /* Style adjustments for high resolution devices */
}
/* ==========================================================================
   Print styles.
   Inlined to avoid required HTTP connection: h5bp.com/r
   ========================================================================== */
@media print {
  /* line 217, ../../plugins/_boilerplate.scss */
  * {
    background: transparent !important;
    color: #000 !important;
    /* Black prints faster: h5bp.com/s */
    box-shadow: none !important;
    text-shadow: none !important;
  }

  /* line 224, ../../plugins/_boilerplate.scss */
  a,
  a:visited {
    text-decoration: underline;
  }

  /* line 229, ../../plugins/_boilerplate.scss */
  a[href]:after {
    content: " (" attr(href) ")";
  }

  /* line 233, ../../plugins/_boilerplate.scss */
  abbr[title]:after {
    content: " (" attr(title) ")";
  }

  /*
   * Don't show links for images, or javascript/internal links
   */
  /* line 241, ../../plugins/_boilerplate.scss */
  .ir a:after,
  a[href^="javascript:"]:after,
  a[href^="#"]:after {
    content: "";
  }

  /* line 247, ../../plugins/_boilerplate.scss */
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }

  /* line 253, ../../plugins/_boilerplate.scss */
  thead {
    display: table-header-group;
    /* h5bp.com/t */
  }

  /* line 257, ../../plugins/_boilerplate.scss */
  tr,
  img {
    page-break-inside: avoid;
  }

  /* line 262, ../../plugins/_boilerplate.scss */
  img {
    max-width: 100% !important;
  }

  @page {
    margin: 0.5cm;
  }
  /* line 270, ../../plugins/_boilerplate.scss */
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }

  /* line 277, ../../plugins/_boilerplate.scss */
  h2,
  h3 {
    page-break-after: avoid;
  }
}
/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
 */
/* line 11, ../../plugins/_normalize.scss */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
  display: block;
}

/**
 * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 */
/* line 30, ../../plugins/_normalize.scss */
audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
/* line 43, ../../plugins/_normalize.scss */
audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
 * Known issue: no IE 6 support.
 */
/* line 53, ../../plugins/_normalize.scss */
[hidden] {
  display: none;
}

/* ==========================================================================
   Base
   ========================================================================== */
/**
 * 1. Prevent system color scheme's background color being used in Firefox, IE,
 *    and Opera.
 * 2. Prevent system color scheme's text color being used in Firefox, IE, and
 *    Opera.
 * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
 *    `em` units.
 * 4. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */
/* line 72, ../../plugins/_normalize.scss */
html {
  background: #fff;
  /* 1 */
  color: #000;
  /* 2 */
  font-size: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 4 */
  -ms-text-size-adjust: 100%;
  /* 4 */
}

/**
 * Address `font-family` inconsistency between `textarea` and other form
 * elements.
 */
/* line 85, ../../plugins/_normalize.scss */
html,
button,
input,
select,
textarea {
  font-family: sans-serif;
}

/**
 * Address margins handled incorrectly in IE 6/7.
 */
/* line 97, ../../plugins/_normalize.scss */
body {
  margin: 0;
}

/* ==========================================================================
   Links
   ========================================================================== */
/**
 * Address `outline` inconsistency between Chrome and other browsers.
 */
/* line 109, ../../plugins/_normalize.scss */
a:focus {
  outline: thin dotted;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */
/* line 117, ../../plugins/_normalize.scss */
a:active,
a:hover {
  outline: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */
/**
 * Address font sizes and margins set differently in IE 6/7.
 * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
 * and Chrome.
 */
/* line 132, ../../plugins/_normalize.scss */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* line 137, ../../plugins/_normalize.scss */
h2 {
  font-size: 1.5em;
  margin: 0.83em 0;
}

/* line 142, ../../plugins/_normalize.scss */
h3 {
  font-size: 1.17em;
  margin: 1em 0;
}

/* line 147, ../../plugins/_normalize.scss */
h4 {
  font-size: 1em;
  margin: 1.33em 0;
}

/* line 152, ../../plugins/_normalize.scss */
h5 {
  font-size: 0.83em;
  margin: 1.67em 0;
}

/* line 157, ../../plugins/_normalize.scss */
h6 {
  font-size: 0.67em;
  margin: 2.33em 0;
}

/**
 * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
 */
/* line 166, ../../plugins/_normalize.scss */
abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
 */
/* line 174, ../../plugins/_normalize.scss */
b,
strong {
  font-weight: bold;
}

/* line 179, ../../plugins/_normalize.scss */
blockquote {
  margin: 1em 40px;
}

/**
 * Address styling not present in Safari 5 and Chrome.
 */
/* line 187, ../../plugins/_normalize.scss */
dfn {
  font-style: italic;
}

/**
 * Address differences between Firefox and other browsers.
 * Known issue: no IE 6/7 normalization.
 */
/* line 196, ../../plugins/_normalize.scss */
hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

/**
 * Address styling not present in IE 6/7/8/9.
 */
/* line 206, ../../plugins/_normalize.scss */
mark {
  background: #ff0;
  color: #000;
}

/**
 * Address margins set differently in IE 6/7.
 */
/* line 215, ../../plugins/_normalize.scss */
p,
pre {
  margin: 1em 0;
}

/**
 * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
 */
/* line 224, ../../plugins/_normalize.scss */
code,
kbd,
pre,
samp {
  font-family: monospace, serif;
  _font-family: 'courier new', monospace;
  font-size: 1em;
}

/**
 * Improve readability of pre-formatted text in all browsers.
 */
/* line 237, ../../plugins/_normalize.scss */
pre {
  white-space: pre;
  white-space: pre-wrap;
  word-wrap: break-word;
}

/**
 * Address CSS quotes not supported in IE 6/7.
 */
/* line 247, ../../plugins/_normalize.scss */
q {
  quotes: none;
}

/**
 * Address `quotes` property not supported in Safari 4.
 */
/* line 255, ../../plugins/_normalize.scss */
q:before,
q:after {
  content: '';
  content: none;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */
/* line 265, ../../plugins/_normalize.scss */
small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */
/* line 273, ../../plugins/_normalize.scss */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

/* line 281, ../../plugins/_normalize.scss */
sup {
  top: -0.5em;
}

/* line 285, ../../plugins/_normalize.scss */
sub {
  bottom: -0.25em;
}

/* ==========================================================================
   Lists
   ========================================================================== */
/**
 * Address margins set differently in IE 6/7.
 */
/* line 297, ../../plugins/_normalize.scss */
dl,
menu,
ol,
ul {
  margin: 1em 0;
}

/* line 304, ../../plugins/_normalize.scss */
dd {
  margin: 0 0 0 40px;
}

/**
 * Address paddings set differently in IE 6/7.
 */
/* line 312, ../../plugins/_normalize.scss */
menu,
ol,
ul {
  padding: 0 0 0 40px;
}

/**
 * Correct list images handled incorrectly in IE 7.
 */
/* line 322, ../../plugins/_normalize.scss */
nav ul,
nav ol {
  list-style: none;
  list-style-image: none;
}

/* ==========================================================================
   Embedded content
   ========================================================================== */
/**
 * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
 * 2. Improve image quality when scaled in IE 7.
 */
/* line 337, ../../plugins/_normalize.scss */
img {
  border: 0;
  /* 1 */
  -ms-interpolation-mode: bicubic;
  /* 2 */
}

/**
 * Correct overflow displayed oddly in IE 9.
 */
/* line 346, ../../plugins/_normalize.scss */
svg:not(:root) {
  overflow: hidden;
}

/* ==========================================================================
   Figures
   ========================================================================== */
/**
 * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
 */
/* line 358, ../../plugins/_normalize.scss */
figure {
  margin: 0;
}

/* ==========================================================================
   Forms
   ========================================================================== */
/**
 * Correct margin displayed oddly in IE 6/7.
 */
/* line 370, ../../plugins/_normalize.scss */
form {
  margin: 0;
}

/**
 * Define consistent border, margin, and padding.
 */
/* line 378, ../../plugins/_normalize.scss */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct color not being inherited in IE 6/7/8/9.
 * 2. Correct text not wrapping in Firefox 3.
 * 3. Correct alignment displayed oddly in IE 6/7.
 */
/* line 390, ../../plugins/_normalize.scss */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  white-space: normal;
  /* 2 */
  *margin-left: -7px;
  /* 3 */
}

/**
 * 1. Correct font size not being inherited in all browsers.
 * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
 *    and Chrome.
 * 3. Improve appearance and consistency in all browsers.
 */
/* line 404, ../../plugins/_normalize.scss */
button,
input,
select,
textarea {
  font-size: 100%;
  /* 1 */
  margin: 0;
  /* 2 */
  vertical-align: baseline;
  /* 3 */
  *vertical-align: middle;
  /* 3 */
}

/**
 * Address Firefox 3+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
/* line 419, ../../plugins/_normalize.scss */
button,
input {
  line-height: normal;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 */
/* line 431, ../../plugins/_normalize.scss */
button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
 *    Known issue: inner spacing remains in IE 6.
 */
/* line 446, ../../plugins/_normalize.scss */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */
  *overflow: visible;
  /* 4 */
}

/**
 * Re-set default cursor for disabled elements.
 */
/* line 459, ../../plugins/_normalize.scss */
button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * 1. Address box sizing set to content-box in IE 8/9.
 * 2. Remove excess padding in IE 8/9.
 * 3. Remove excess padding in IE 7.
 *    Known issue: excess padding remains in IE 6.
 */
/* line 471, ../../plugins/_normalize.scss */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
  *height: 13px;
  /* 3 */
  *width: 13px;
  /* 3 */
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */
/* line 485, ../../plugins/_normalize.scss */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  /* 2 */
  box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */
/* line 497, ../../plugins/_normalize.scss */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Remove inner padding and border in Firefox 3+.
 */
/* line 506, ../../plugins/_normalize.scss */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * 1. Remove default vertical scrollbar in IE 6/7/8/9.
 * 2. Improve readability and alignment in all browsers.
 */
/* line 517, ../../plugins/_normalize.scss */
textarea {
  overflow: auto;
  /* 1 */
  vertical-align: top;
  /* 2 */
}

/* ==========================================================================
   Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
/* line 530, ../../plugins/_normalize.scss */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

/*
 * Common CSS
 *
 */
/* !warning */
/* line 7, ../../plugins/_warning.scss */
.warning span.externalTooltip,
a.warningLink span,
.warning-fr span.externalTooltip,
a.warningLink-fr span,
.warning-sp span.externalTooltip,
a.warningLink-sp span {
  display: none;
  padding: 5px;
  font: normal 10px/12px Arial, Helvetica, sans-serif;
  text-decoration: none;
  background: #FFFFFF;
  border: 1px solid #CCCCCC;
  width: 150px;
  color: #444;
  text-align: left;
}

/* line 24, ../../plugins/_warning.scss */
.warning,
.warning-fr,
.warning-sp {
  position: relative;
  z-Index: 100;
}
/* line 30, ../../plugins/_warning.scss */
.warning a, .warning a:hover,
.warning-fr a,
.warning-fr a:hover,
.warning-sp a,
.warning-sp a:hover {
  text-decoration: none;
}

/* line 35, ../../plugins/_warning.scss */
.warning span.externalTooltip,
.warning-sp span.externalTooltip {
  position: absolute;
  margin-left: 80px;
  margin-top: -80px;
  top: 0px;
  left: 0px;
  z-Index: 100;
}

/* line 44, ../../plugins/_warning.scss */
.warning-fr span.externalTooltip {
  position: absolute;
  margin-left: 80px;
  margin-top: -92px;
  top: 0px;
  left: 0px;
  z-Index: 100;
}

/* line 53, ../../plugins/_warning.scss */
.warning:hover span.externalTooltip,
.warning.whover span.externalTooltip,
.warning-fr:hover span.externalTooltip,
.warning-fr.whover span.externalTooltip,
.warning-sp:hover span.externalTooltip,
.warning-sp.whover span.externalTooltip {
  display: block;
}

/* line 62, ../../plugins/_warning.scss */
a.warningLink span,
a.warningLink-sp span {
  margin-left: -80px;
  margin-top: -80px;
}

/* line 67, ../../plugins/_warning.scss */
a#fbBtn.warningLink span, a#fbBtn.warningLink-sp span,
a#youtubeBtn.warningLink span, a#youtubeBtn.warningLink-sp span {
  margin-left: -180px;
  margin-top: -20px;
}

/* line 73, ../../plugins/_warning.scss */
a.warningLink-fr span {
  margin-left: -80px;
  margin-top: -92px;
}

/* line 79, ../../plugins/_warning.scss */
a.warningLink:hover,
a.warningLink-fr:hover,
a.warningLink-sp:hover {
  background: none;
  text-decoration: none;
}

/* line 86, ../../plugins/_warning.scss */
a.warningLink:hover span,
a.warningLink-fr:hover span,
a.warningLink-sp:hover span {
  display: inline;
  position: absolute;
  z-Index: 100;
}

/*!
* Line break
*/
/**
* These are the site core stylings. Things like global a, h1, p stylings
* should and default page structure go in here. Anything specific to a single
* page or override should go in the pages sections.
*/
/* line 1, ../../core/_html.scss */
html {
  font: 12px/100% Helvetica, Verdana, Arial, sans-serif;
}

/* line 2, ../../core/_forms.scss */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* line 9, ../../core/_forms.scss */
input:focus::-webkit-input-placeholder {
  color: #fff;
}

/* line 12, ../../core/_forms.scss */
input:focus:-moz-placeholder {
  color: #fff;
}

/* line 18, ../../core/_forms.scss */
input[type="text"],
input[type="url"],
input[type="search"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="number"] {
  background: white;
  border: 1px solid #BBB;
  border-radius: 5px;
  background-clip: padding-box;
  -webkit-box-shadow: 1px 1px 7px #CCC inset;
  box-shadow: 1px 1px 7px #CCC inset;
  color: #333;
  font: 12px/100% Arial, sans-serif;
  height: 22px;
  outline: none;
  padding: 3px 5px 0 7px;
  width: 180px;
}
/* line 30, ../../core/_forms.scss */
.lt-ie8 input[type="text"],
.lt-ie8 input[type="url"],
.lt-ie8 input[type="search"],
.lt-ie8 input[type="email"],
.lt-ie8 input[type="tel"],
.lt-ie8 input[type="password"],
.lt-ie8 input[type="number"] {
  border: 1px inset #bbb;
  color: #333;
  height: 18px;
  padding-top: 7px;
}
/* line 37, ../../core/_forms.scss */
.ie8 input[type="text"],
.ie8 input[type="url"],
.ie8 input[type="search"],
.ie8 input[type="email"],
.ie8 input[type="tel"],
.ie8 input[type="password"],
.ie8 input[type="number"] {
  height: 17px;
  padding-top: 8px;
}

/** form specific styles **/
/* line 55, ../../core/_forms.scss */
.errorMsg {
  color: red;
  font-size: 1.4em;
  margin: 0 0 0 13px;
}

/* line 56, ../../core/_forms.scss */
.errors {
  width: 572px;
  margin: 20px 0 20px 13px;
  padding: 5px 10px 10px 10px;
  background: #FFE7E2 url(/img/forms/icon_warning.gif) no-repeat 98% 80%;
  border: 1px solid #FBC2C4;
}

/* line 63, ../../core/_forms.scss */
.errors h3 {
  color: #FB0B02;
  margin: 0 0 10px 0;
}

/* line 65, ../../core/_forms.scss */
.errors ul li {
  margin: 0 50px 0 0;
  font: normal 1.2em Arial, Helvetica, sans-serif;
  color: #FB0B02;
}

/* line 71, ../../core/_forms.scss */
form input[type=text].required, form input[type=password].required {
  background: url(/img/icon_input_required.gif) no-repeat 99% center;
  background-color: #FFE7E2;
}

/* line 72, ../../core/_forms.scss */
form input[type=text].invalid, form input[type=password].invalid {
  background: url(/img/icon_input_invalid.gif) no-repeat 99% center;
  background-color: #FFE7E2;
}

/* line 73, ../../core/_forms.scss */
form input[type=text].invalidNoToken, form input[type=text].requiredNoToken {
  background: #FFE7E2;
}

/* line 76, ../../core/_forms.scss */
form select.required, form select.invalid {
  border: 1px solid #FBC2C4;
  border-top: 2px solid #FBC2C4;
  background: #FFE7E2;
}

/*http://blog.typekit.com/2011/11/09/type-study-sizing-the-legible-letter/*/
/* line 2, ../../core/_structure.scss */
html {
  font: 100%/100% Helvetica, Verdana, Arial, sans-serif;
  /*100% is roughly equivalent to 16px.*/
}

/* line 1, ../../core/_navigation.scss */
nav.primary {
  background-color: white;
  display: inline-block;
  position: absolute;
  left: 50px;
  top: 50px;
}
/* line 8, ../../core/_navigation.scss */
nav.primary ul li {
  float: left;
  padding: 0px 5px;
}

/*!
This CSS resource incorporates links to font software which is
the valuable copyrighted property of Monotype Imaging and/or
its suppliers. You may not attempt to copy, install, redistribute, convert,
modify or reverse engineer this font software. Please contact Monotype Imaging
with any questions regarding Web Fonts:  http://webfonts.fonts.com
*/
/**
 * External fonts are defined here. Put them in the /css/fonts directory.
 * Google and other web hosted fonts are defined below
 */
/*
$fontRounded: "HelveticaW01-RoundedBd", $fontDefault;
@font-face{
    font-family:"HelveticaW01-RoundedBd";
    font-weight:bold;
    font-style:normal;
    font-variant:normal;
    src:url("/css/Fonts/79e78e0d-1e3d-4298-8913-6f12cf008e7d.eot?iefix") format("eot");
}
@font-face{
    font-family:"HelveticaW01-RoundedBd";
    font-weight:bold;
    font-style:normal;
    font-variant:normal;
    src:url("/css/Fonts/79e78e0d-1e3d-4298-8913-6f12cf008e7d.eot?iefix");
    src:
        url("/css/Fonts/c280ced9-704c-46b2-a66a-aff7ee1627bf.woff") format("woff"),
        url("/css/Fonts/548e8c1d-b37a-43af-b197-a35e2f0c3d2f.ttf") format("truetype"),
        url("/css/Fonts/5e9b82e3-aa53-4064-b984-f49aa751081d.svg#5e9b82e3-aa53-4064-b984-f49aa751081d") format("svg");
}
*/
/**
 * Google hosted fonts. Include the include script in your page header file and
 * then reference the font name here
 */
@font-face {
  font-family: "Proxima N W01 Reg";
  src: url("../Fonts/7e90123f-e4a7-4689-b41f-6bcfe331c00a.eot?#iefix");
  src: url("../Fonts/7e90123f-e4a7-4689-b41f-6bcfe331c00a.eot?#iefix") format("eot"), url("../Fonts/e56ecb6d-da41-4bd9-982d-2d295bec9ab0.woff") format("woff"), url("../Fonts/2aff4f81-3e97-4a83-9e6c-45e33c024796.ttf") format("truetype"), url("../Fonts/ab9cd062-380f-4b53-b1a7-c0bec7402235.svg#ab9cd062-380f-4b53-b1a7-c0bec7402235") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Smbd";
  src: url("../Fonts/87e4b4fc-cdf1-450a-8bed-dd818cba908d.eot?#iefix");
  src: url("../Fonts/87e4b4fc-cdf1-450a-8bed-dd818cba908d.eot?#iefix") format("eot"), url("../Fonts/70ae52ec-d89b-4c6a-9402-854ebe423c54.woff") format("woff"), url("../Fonts/6a35571c-ea14-4dac-9ae1-0e7af0abeec8.ttf") format("truetype"), url("../Fonts/ac2bdafc-d4a8-49d0-8a10-4e2f16bf7e3c.svg#ac2bdafc-d4a8-49d0-8a10-4e2f16bf7e3c") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Bold";
  src: url("../Fonts/fbc6b03a-b3a1-427c-a884-053deca3a53c.eot?#iefix");
  src: url("../Fonts/fbc6b03a-b3a1-427c-a884-053deca3a53c.eot?#iefix") format("eot"), url("../Fonts/d999c07b-a049-4eb5-b8a6-4f36ae25e67e.woff") format("woff"), url("../Fonts/4d4a75f5-d32a-4a09-8665-133afd39cc37.ttf") format("truetype"), url("../Fonts/8152bc4e-d700-4c78-b6be-326893e6f53f.svg#8152bc4e-d700-4c78-b6be-326893e6f53f") format("svg");
}
@font-face {
  font-family: "Proxima N W01 Xbold";
  src: url("../Fonts/9fbce143-f5db-4c0b-9159-b1e666079f67.eot?#iefix");
  src: url("../Fonts/9fbce143-f5db-4c0b-9159-b1e666079f67.eot?#iefix") format("eot"), url("../Fonts/19dd5cf2-ac2d-48d5-901a-c432fd291ee2.woff") format("woff"), url("../Fonts/22cfbfa4-f607-4751-92eb-6fa194353e57.ttf") format("truetype"), url("../Fonts/3d6b6348-e05f-4123-b19a-3bfd02c7f361.svg#3d6b6348-e05f-4123-b19a-3bfd02c7f361") format("svg");
}
@font-face {
  font-family: "Proxima N W15 Cd Light";
  src: url("../Fonts/71d27047-aee7-4513-aa39-93acec4189af.eot?#iefix");
  src: url("../Fonts/71d27047-aee7-4513-aa39-93acec4189af.eot?#iefix") format("eot"), url("../Fonts/69d0a741-16e2-4ba2-9f9d-4fbe3d972acf.woff") format("woff"), url("../Fonts/c650156e-a72f-4031-8687-7e3519940f30.ttf") format("truetype"), url("../Fonts/d1116fb4-2dec-4fad-b64c-4ed24e4d3db0.svg#d1116fb4-2dec-4fad-b64c-4ed24e4d3db0") format("svg");
}
@font-face {
  font-family: "Proxima N W15 Cd Smbd";
  src: url("../Fonts/d98fcd0d-5b66-4059-8543-8b20d2df6c4e.eot?#iefix");
  src: url("../Fonts/d98fcd0d-5b66-4059-8543-8b20d2df6c4e.eot?#iefix") format("eot"), url("../Fonts/25fea31c-0cde-4457-b875-139b2f814d65.woff") format("woff"), url("../Fonts/8304ee6d-ecc7-4c17-bc8d-86f956dd63ed.ttf") format("truetype"), url("../Fonts/b08d6b72-1661-499a-be7b-a62094eab547.svg#b08d6b72-1661-499a-be7b-a62094eab547") format("svg");
}
/*!
* Line break
*/
/**
* These are the styles that are page specific. In an ideal world; these would
* not exist as all pages would be similiar.
*
* notes below so files can be either linked to or included globally later if possible
 */
/**
 * This support file is used to style the WYSIWYG editor in the CMS
 */
/* line 5, ../../pages/_contact.scss */
#bodyContact {
  background-color: #e1477e;
  height: 100%;
  position: absolute;
  display: block;
  width: 100%;
  float: left;
  left: 0;
  top: 0;
  background-position: bottom;
  background-repeat: repeat-x;
}
/* line 16, ../../pages/_contact.scss */
#bodyContact .mainImage {
  height: 100%;
  float: left;
}
/* line 20, ../../pages/_contact.scss */
#bodyContact .mainImage img {
  height: 100%;
  position: absolute;
  right: -151px;
  top: 0;
  border: none;
}
/* line 27, ../../pages/_contact.scss */
#bodyContact .columnLeft .Title1 {
  color: white;
  display: block;
  font-size: 8em;
  position: relative;
  padding: 19% 0% 0% 6%;
  font-family: Montserrat;
}
/* line 35, ../../pages/_contact.scss */
#bodyContact .columnLeft .Title2 {
  color: white;
  display: block;
  font-size: 9em;
  position: relative;
  padding: 8% 0% 5% 6%;
  font-family: Montserrat;
  font-weight: 700;
}
/* line 44, ../../pages/_contact.scss */
#bodyContact .columnLeft .SubTitle {
  display: block;
  padding: 0px 0px 0% 7%;
  font-size: 23px;
  color: white;
}
/* line 50, ../../pages/_contact.scss */
#bodyContact .columnLeft .featureVideo {
  padding: 10px;
  width: 463px;
  height: 253px;
  display: block;
  background-color: gray;
  position: relative;
  left: 72px;
  top: 19px;
}

/**
 * This support file is used to style the WYSIWYG editor in the CMS
 */
/* line 5, ../../pages/_home.scss */
#bodyHome {
  background-image: url("/assets/Uploads/background-pink-gradient.png");
  background-color: #e1477e;
  height: 100%;
  position: absolute;
  display: block;
  width: 100%;
  float: left;
  left: 0;
  top: 0;
  background-position: bottom;
  background-repeat: repeat-x;
}
/* line 17, ../../pages/_home.scss */
#bodyHome .mainImage {
  height: 100%;
  float: right;
}
/* line 21, ../../pages/_home.scss */
#bodyHome .mainImage img {
  height: 100%;
  position: absolute;
  right: -151px;
  top: 0;
  border: none;
}
/* line 28, ../../pages/_home.scss */
#bodyHome .columnLeft .Title1 {
  font-family: "Proxima N W15 Cd Light", Helvetica, Verdana, Arial, sans-serif;
  color: white;
  display: inline-block;
  font-size: 7em;
  position: absolute;
  width: 25%;
  top: 136px;
  padding: 0px;
  left: 124px;
}
/* line 39, ../../pages/_home.scss */
#bodyHome .columnLeft .Title2 {
  color: #f7d501;
  display: block;
  font-size: 7em;
  position: absolute;
  padding: 0px;
  font-family: "Proxima N W01 Bold", Helvetica, Verdana, Arial, sans-serif;
  left: 124px;
  top: 226px;
}
/* line 49, ../../pages/_home.scss */
#bodyHome .columnLeft .SubTitle {
  display: block;
  font-size: 23px;
  color: white;
  position: absolute;
  top: 53%;
  left: 4%;
}
/* line 57, ../../pages/_home.scss */
#bodyHome .columnLeft .featureVideo {
  padding: 10px;
  width: 394px;
  height: 229px;
  display: block;
  background-color: gray;
  position: absolute;
  left: 11%;
  top: 60%;
}

/**
 * This support file is used to style the WYSIWYG editor in the CMS
 */
/* line 5, ../../pages/_about.scss */
#mainNav {
  position: absolute;
  left: 10%;
  top: 10%;
  z-index: 999;
  padding-right: 65px;
  background: #fdfcff;
  width: 100px;
  height: 47px;
}
/* line 14, ../../pages/_about.scss */
#mainNav ul {
  background-image: url("/assets/img/Navigation/paper.png");
  background-position-x: right;
  display: block;
  height: 47px;
  padding: 0px 0px 0px 30px;
  margin: 0px;
  position: absolute;
  width: 787px;
  background-repeat: no-repeat;
}
/* line 25, ../../pages/_about.scss */
#mainNav li {
  float: left;
  position: relative;
  padding-left: 10px;
  font-weight: bolder;
  margin-top: 0px;
  font-size: 2em;
}
/* line 32, ../../pages/_about.scss */
#mainNav li a {
  color: #e1477e;
}
/* line 37, ../../pages/_about.scss */
#mainNav #facebookNav {
  padding-left: 10px;
}
/* line 40, ../../pages/_about.scss */
#mainNav #navCookie {
  width: 130px;
  height: 136px;
  z-index: 1000;
  position: absolute;
  display: block;
  left: 0px;
  top: -30px;
}
/* line 48, ../../pages/_about.scss */
#mainNav #navCookie img {
  width: 100%;
  height: auto;
}

/* line 54, ../../pages/_about.scss */
#bodyAbout {
  background-image: url("/assets/Uploads/aboutUsGradient.png");
  height: 100%;
  position: absolute;
  display: block;
  width: 100%;
  float: left;
  left: 0;
  top: 0;
  background-position: bottom;
  background-repeat: repeat-x;
}
/* line 66, ../../pages/_about.scss */
#bodyAbout .mainImage {
  width: 100%;
  float: left;
}
/* line 71, ../../pages/_about.scss */
#bodyAbout .mainImage img {
  height: 100%;
  position: absolute;
  top: 0;
  border: none;
}
/* line 77, ../../pages/_about.scss */
#bodyAbout .columnLeft .Title1 {
  color: white;
  display: block;
  font-size: 8em;
  position: relative;
  padding: 19% 0% 0% 6%;
  font-family: Montserrat;
}
/* line 85, ../../pages/_about.scss */
#bodyAbout .columnLeft .Title2 {
  color: white;
  display: block;
  font-size: 9em;
  position: relative;
  padding: 8% 0% 5% 6%;
  font-family: Montserrat;
  font-weight: 700;
}
/* line 94, ../../pages/_about.scss */
#bodyAbout .columnLeft .SubTitle {
  display: block;
  padding: 0px 0px 0% 7%;
  font-size: 23px;
  color: white;
}
/* line 100, ../../pages/_about.scss */
#bodyAbout .columnLeft .featureVideo {
  padding: 10px;
  width: 463px;
  height: 253px;
  display: block;
  background-color: gray;
  position: relative;
  left: 72px;
  top: 19px;
}

/**
 * This support file is used to style the WYSIWYG editor in the CMS
 */
/* line 5, ../../pages/_video.scss */
#bodyVideo {
  background-image: url("/assets/Uploads/background-pink-gradient.png");
  background-color: #e1477e;
  height: 100%;
  position: absolute;
  display: block;
  width: 100%;
  float: left;
  left: 0;
  top: 0;
  background-position: bottom;
  background-repeat: repeat-x;
}
/* line 18, ../../pages/_video.scss */
#bodyVideo .mainImage {
  height: 100%;
  float: right;
}
/* line 22, ../../pages/_video.scss */
#bodyVideo .mainImage img {
  height: 100%;
  position: absolute;
  right: -151px;
  top: 0;
  border: none;
}
/* line 29, ../../pages/_video.scss */
#bodyVideo .columnLeft .Title1 {
  color: white;
  display: block;
  font-size: 8em;
  position: relative;
  padding: 19% 0% 0% 6%;
  font-family: Montserrat;
}
/* line 37, ../../pages/_video.scss */
#bodyVideo .columnLeft .Title2 {
  color: white;
  display: block;
  font-size: 9em;
  position: relative;
  padding: 8% 0% 5% 6%;
  font-family: Montserrat;
  font-weight: 700;
}
/* line 46, ../../pages/_video.scss */
#bodyVideo .columnLeft .SubTitle {
  display: block;
  padding: 0px 0px 0% 7%;
  font-size: 23px;
  color: white;
}
/* line 52, ../../pages/_video.scss */
#bodyVideo .columnLeft .featureVideo {
  padding: 10px;
  width: 463px;
  height: 253px;
  display: block;
  background-color: gray;
  position: relative;
  left: 72px;
  top: 19px;
}

/**
 * This support file is used to style the WYSIWYG editor in the CMS
 */
/* line 5, ../../pages/_gallery.scss */
#bodyGallery {
  background-color: #e1477e;
  height: 100%;
  position: absolute;
  display: block;
  width: 100%;
  float: left;
  left: 0;
  top: 0;
  background-position: bottom;
  background-repeat: repeat-x;
}
/* line 16, ../../pages/_gallery.scss */
#bodyGallery .mainImage {
  height: 100%;
  float: left;
}
/* line 20, ../../pages/_gallery.scss */
#bodyGallery .mainImage img {
  height: 100%;
  position: absolute;
  right: -151px;
  top: 0;
  border: none;
}
/* line 27, ../../pages/_gallery.scss */
#bodyGallery .columnLeft .Title1 {
  color: white;
  display: block;
  font-size: 8em;
  position: relative;
  padding: 19% 0% 0% 6%;
  font-family: Montserrat;
}
/* line 35, ../../pages/_gallery.scss */
#bodyGallery .columnLeft .Title2 {
  color: white;
  display: block;
  font-size: 9em;
  position: relative;
  padding: 8% 0% 5% 6%;
  font-family: Montserrat;
  font-weight: 700;
}
/* line 44, ../../pages/_gallery.scss */
#bodyGallery .columnLeft .SubTitle {
  display: block;
  padding: 0px 0px 0% 7%;
  font-size: 23px;
  color: white;
}
/* line 50, ../../pages/_gallery.scss */
#bodyGallery .columnLeft .featureVideo {
  padding: 10px;
  width: 463px;
  height: 253px;
  display: block;
  background-color: gray;
  position: relative;
  left: 72px;
  top: 19px;
}

/* Include this last so it overrides settings form pages */
/*!
* Line break
*/

/*# sourceMappingURL=screen.css.map */

redpajama_set_name: RedPajamaGithub


text:
package protocol

import (
	"bytes"
)

var NIL_STRING []byte = nil

type MultibulkCommand struct {
	Buffer  []byte
	Command []byte
	// Usually denotes the key
	FirstArg []byte
	ArgCount int
}

func ParseMultibulkCommand(b []byte) (*MultibulkCommand, error) {
	c := &MultibulkCommand{}
	c.Buffer = make([]byte, len(b))
	copy(c.Buffer, b)

	if c.Buffer[0] != '*' {
		return nil, ERROR_COMMAND_PARSE
	}

	newlinePos := bytes.Index(c.Buffer, REDIS_NEWLINE)
	if newlinePos < 0 {
		return nil, ERROR_COMMAND_PARSE
	}

	count, err := ParseInt(c.Buffer[1:newlinePos])
	if err != nil {
		return nil, err
	}

	if count > 0 {
		c.ArgCount = count - 1
	}

	cBuf := c.Buffer[newlinePos+2:]
	for i := 0; i < 2 && i < count; i++ {
		if cBuf[0] != '$' {
			return nil, ERROR_COMMAND_PARSE
		}

		newlinePos := bytes.Index(cBuf, REDIS_NEWLINE)
		if newlinePos < 0 {
			return nil, ERROR_COMMAND_PARSE
		}

		count, err := ParseInt(cBuf[1:newlinePos])
		if err != nil {
			return nil, err
		} else if count < 0 {
			cBuf = cBuf[newlinePos+2:]
			continue
		}

		if i == 0 {
			c.Command = cBuf[newlinePos+2 : newlinePos+2+count]
		} else {
			c.FirstArg = cBuf[newlinePos+2 : newlinePos+2+count]
		}

		cBuf = cBuf[newlinePos+2+count+2:]
	}

	for i := 0; i < len(c.Command); i++ {
		if char := c.Command[i]; char >= 'A' && char <= 'Z' {
			c.Command[i] = c.Command[i] + 0x20
		}
	}

	return c, nil
}

// Satisfy Command Interface
func (this *MultibulkCommand) GetCommand() []byte {
	return this.Command
}

func (this *MultibulkCommand) GetBuffer() []byte {
	return this.Buffer
}

func (this *MultibulkCommand) GetFirstArg() []byte {
	return this.FirstArg
}

func (this *MultibulkCommand) GetArgCount() int {
	return this.ArgCount
}


text:
layout: page
title: Seattle Police Officer 7558 Aaron A. Dalan
permalink: /information/agencies/city_of_seattle/seattle_police_department/copbook/7558/
---

**Age as of Feb. 24, 2016:** 36


text:
(function($, global, undef){

	var model = {
		addBlogPost: function(data) {
			$.telligent.evolution.mobile.showLoading();
			var addBlogPostPromise = $.telligent.evolution.post({
				url: $.telligent.evolution.site.getBaseUrl() + 'api.ashx/v2/blogs/{BlogId}/posts.json',
				data: data
			}).fail(function(){
				$.telligent.evolution.mobile.hideLoading();
			});
			return addBlogPostPromise;
		},
		editBlogPost: function(data) {
			$.telligent.evolution.mobile.showLoading();
			var editBlogPostPromise = $.telligent.evolution.put({
				url: $.telligent.evolution.site.getBaseUrl() + 'api.ashx/v2/blogs/{BlogId}/posts/{BlogPostId}.json',
				data: data
			}).fail(function(){
				$.telligent.evolution.mobile.hideLoading();
			});
			return editBlogPostPromise;
		}
	}

	var api = {
		register: function(options) {
			var postLink = $('' + (!options.blogPostId ? options.postLabel : options.editLabel) + '');

			postLink.on('tap', function(){

				var data = {
					Body: $.trim(options.getBodyContent()),
					Title: $.trim($(options.titleInput).val()),
					BlogId: options.blogId,
					BlogPostId: options.blogPostId
				}

				if(data.Body.length > 0 && data.Title.length > 0) {
					$.telligent.evolution.mobile.showLoading((!options.blogPostId ? model.addBlogPost(data) : model.editBlogPost(data)))
						.then(function(response){
							$.telligent.evolution.mobile.load(response.BlogPost.Url, { refresh: true });
						});
				}
			});

			$.telligent.evolution.mobile.setHeaderButton(postLink);
		}
	}

	$.telligent = $.telligent || {};
	$.telligent.evolution = $.telligent.evolution || {};
	$.telligent.evolution.widgets = $.telligent.evolution.widgets || {};
	$.telligent.evolution.widgets.createEditBlogPost = api;

})(jQuery, window);


text:
@interface PTEDeleteOutOfSyncQuestionPagesOperation : NSOperation

@end


text:
// -----------------------------------------------------------------------------
// Local Search Non-negative Matrix Factorization
// By Twan van Laarhoven
// License: BSD style, see file LICENSE
// -----------------------------------------------------------------------------

#ifndef HEADER_NMF_OBJECTIVE_FUNCTION
#define HEADER_NMF_OBJECTIVE_FUNCTION

#include "nmf_clustering.hpp"
#include <vector>

namespace nmf_cluster {

// -----------------------------------------------------------------------------
// Objective functions
// -----------------------------------------------------------------------------

enum LikelihoodFun {
	LH_FLAT,
	LH_GAUSSIAN,
	LH_POISSON,
};
enum WeightPriorFun {
	PRIOR_FLAT,
	PRIOR_HALF_NORMAL,
	PRIOR_GAMMA,
	PRIOR_EXPONENTIAL,
};
enum SizePriorFun { // prior on cluster size
	SIZE_FLAT, // no prior
	SIZE_CRP,
};
enum SupportPriorFun { // prior on clusters-per-node
	SUPPORT_FLAT,
	SUPPORT_ONE, // exactly one cluster per node
	SUPPORT_POISSON
};

struct NMFObjectiveFun {
	LikelihoodFun      likelihood;
	WeightPriorFun     weight_prior;
	SizePriorFun       size_prior;
	SupportPriorFun    support_prior;
	double             likelihood_beta; // inverse scale parameter of likelihood
	double             weight_beta;     // inverse scale parameter of membership prior
	double             support_lambda;
	bool               exclude_diagonal; // exclude A(i,i) from likelihood calculation
	bool               fixed_normalization; // pretend that the number of clusters is fixed, include normalization constant for all membership coefficients

	NMFObjectiveFun()
		: likelihood      (LH_POISSON)
		, weight_prior    (PRIOR_HALF_NORMAL)
		, size_prior      (SIZE_FLAT)
		, support_prior   (SUPPORT_FLAT)
		, likelihood_beta (1.0)
		, weight_beta     (0.0)
		, support_lambda  (0.0)
		, exclude_diagonal(true)
		, fixed_normalization(false)
	{}
};

// -----------------------------------------------------------------------------
// Utility
// -----------------------------------------------------------------------------

double log_factorial(int n) {
	double lf = 0.;
	for (int i = 2 ; i < n ; ++i) {
		lf += log(i);
	}
	return lf;
}

// -----------------------------------------------------------------------------
// Calculation
// -----------------------------------------------------------------------------

double weight_prior_term(NMFObjectiveFun const& obj, double weight) {
	if (obj.weight_prior == PRIOR_FLAT) {
		return 0.; // nothing
	} else if (obj.weight_prior == PRIOR_HALF_NORMAL) {
		// L = ∑{ik} -log( sqrt(2*beta/pi) * exp(-0.5*beta*U(i,k)^2) )
		return 0.5 * obj.weight_beta * weight * weight;
	} else {
		throw std::invalid_argument("Unknown weight prior");
	}
}

double weight_prior_partition_term(NMFObjectiveFun const& obj) {
	if (obj.weight_prior == PRIOR_FLAT) {
		return 0.; // nothing
	} else if (obj.weight_prior == PRIOR_HALF_NORMAL) {
		// L = ∑{ik} -log( sqrt(2*beta/pi) * exp(-0.5*beta*U(i,k)^2) )
		if (obj.weight_beta == 0.) {
			return 0.; // treat as a flat prior
		} else {
			return log(sqrt(2.0 / M_PI * obj.weight_beta));
		}
	} else {
		throw std::invalid_argument("Unknown weight prior");
	}
}

double size_prior_term(NMFObjectiveFun const& obj, int size) {
	if (obj.size_prior == SIZE_FLAT) {
		return 0.; // nothing
	} else if (obj.size_prior == SIZE_CRP) {
		return log_factorial(size - 1);
	} else {
		throw std::invalid_argument("Unknown size prior");
	}
}

double support_prior_term(NMFObjectiveFun const& obj, int nnz) {
	if (obj.support_prior == SUPPORT_FLAT) {
		return 0.; // nothing
	} else if (obj.support_prior == SUPPORT_ONE) {
		if (nnz > 1) {
			return std::numeric_limits<double>::infinity();
		} else {
			return 0.;
		}
	} else if (obj.support_prior == SUPPORT_POISSON) {
		return -nnz * log(obj.support_lambda) + log_factorial(nnz) + obj.support_lambda;
	} else {
		throw std::invalid_argument("Unknown support prior");
	}
}

// loss is negative log likelihood
double calculate_loss(NMFObjectiveFun const& obj, SparseMatrix const& graph, NMFClustering const& clustering) {
	double loss = 0.0;
	// Loss for non-edges
	if (obj.likelihood == LH_GAUSSIAN) {
		// Gaussian loss:
		//   L = ∑{ij} 0.5*(∑{k}U(i,k)U(j,k) - A(i,j))^2
		//     = 0.5*∑{ij}(∑{k}U(i,k)U(j,k))^2  -  ∑{ij} A(i,j)*(∑{k}U(i,k)U(j,k))  +  0.5*∑{ij} A(i,j)^2
		// note: only include the strict lower diagonal part
		for (node_t i = 0 ; i < clustering.num_nodes() ; ++i) {
			for (DenseColumnIterator edge(graph,i); edge.row() < i; ++edge) {
				double vh = dot(clustering[i], clustering[edge.row()]);
				double v  = edge.data();
				loss += 0.5*(v - vh)*(v - vh);
			}
		}
	} else if (obj.likelihood == LH_POISSON) {
		// Poisson:
		//    L = ∑{ij} -log( (∑{k} U{i,k}U{j,k})^A{i,j}/A{i,j}! * exp(-∑{k} U{i,k}U{j,k}) )
		//      = ∑{ij} -log(∑{k} U{i,k}U{j,k})*A{i,j} + log(A{i,j}!) + (∑{ij}∑{k} U{i,k}U{j,k})
		//      = ∑{ij} -log(∑{k} U{i,k}U{j,k})*A{i,j} + ∑{k}(∑{i}U{i,k})^2 + const.
		// first term is only for edges, second term is constant, third term can be decomposed

		// we only want to count below or above diagonal, i.e. (∑{ij,i<j}∑{k} U{i,k}U{j,k})
		// just count half, and to exclude the diagonal we need ∑{ik} U{i,k}^2, do that below
		for (clus_t k = 0; k < clustering.max_num_clus() ; ++k) {
			loss += 0.5 * clustering.clus_weight(k) * clustering.clus_weight(k);
		}
		for (node_t i = 0 ; i < clustering.num_nodes(); ++i) {
			loss -= 0.5 * sumsq(clustering[i]);
			for (ColumnIterator edge(graph,i); !edge.end(); ++edge) {
				if (edge.row() >= i) break; // only below diagonal
				double v  = edge.data();
				if (v == 0.) continue;
				double vh = dot(clustering[i], clustering[edge.row()]);
				const double epsilon = 1e-15;
				loss -= v * log(vh + epsilon);
			}
		}
	} else {
		throw std::invalid_argument("Unknown likelihood");
	}

	// Regularization term / prior on membership coefficients
	for (node_t i = 0 ; i < clustering.num_nodes() ; ++i) {
		for (SparseVector::const_iterator it = clustering[i].begin() ; it != clustering[i].end() ; ++it) {
			loss += weight_prior_term(obj, it->weight);
		}
	}
	loss += weight_prior_partition_term(obj) * (obj.fixed_normalization ? clustering.total_size() : clustering.nnz());

	// Cluster sizes
	for (clus_t k = 0 ; k < clustering.max_num_clus() ; ++k) {
		// the prior on size
		loss += size_prior_term(obj, clustering.clus_size(k));
	}

	// Clusters per node
	for (node_t i = 0 ; i < clustering.num_nodes() ; ++i) {
		loss += support_prior_term(obj, clustering[i].nnz());
	}

	return loss;
}

// Some part of the loss for a specific row
double calculate_loss_row(NMFObjectiveFun const& obj, SparseMatrix const& graph, NMFClustering const& clustering, node_t i) {
	double loss = 0.0;
	// Loss for non-edges
	if (obj.likelihood == LH_GAUSSIAN) {
		// Gaussian loss:
		//   L = ∑{i<j} 0.5*(∑{k}U(i,k)U(j,k) - A(i,j))^2
		//     = 0.5*∑{i<j}(∑{k}U(i,k)U(j,k))^2  -  ∑{i<j} A(i,j)*(∑{k}U(i,k)U(j,k))  +  0.5*∑{i<j} A(i,j)^2
		// Calculate first term:
		for (DenseColumnIterator edge(graph,i); edge.row() < i; ++edge) {
			double vh = dot(clustering[i], clustering[edge.row()]);
			double v  = edge.data();
			loss += 0.5*(v - vh)*(v - vh);
		}
	} else if (obj.likelihood == LH_POISSON) {
		// Poisson:
		//     ∑{ij} ∑{k}U(i,k)U(j,k) - A(i,j)
		//   = ∑{k}(∑{i}U(i,k))(∑{j}U(j,k))
		for (clus_t k = 0; k < clustering.max_num_clus() ; ++k) {
			loss += 0.5 * clustering.clus_weight(k) * clustering.clus_weight(k);
		}
		loss -= 0.5 * sumsq(clustering[i]);
		for (ColumnIterator edge(graph,i); !edge.end(); ++edge) {
			if (edge.row() == i) continue; // only off-diagonal
			double v  = edge.data();
			if (v == 0.) continue;
			double vh = dot(clustering[i], clustering[edge.row()]);
			const double epsilon = 1e-15;
			loss -= v * log(vh + epsilon);
		}
	} else {
		throw std::invalid_argument("Unknown likelihood");
	}

	// Regularization term / prior on membership coefficients
	for (SparseVector::const_iterator it = clustering[i].begin() ; it != clustering[i].end() ; ++it) {
		loss += weight_prior_term(obj, it->weight);
	}
	if (!obj.fixed_normalization) {
		loss += weight_prior_partition_term(obj) * clustering[i].nnz();
	}

	// Cluster sizes
	for (clus_t k = 0 ; k < clustering.max_num_clus() ; ++k) {
		// the prior on size
		loss += size_prior_term(obj, clustering.clus_size(k));
	}

	// Clusters per node
	loss += support_prior_term(obj, clustering[i].nnz());

	return loss;
}

/*
// How the loss would change if row i were cleared
double calculate_loss_clear_row(NMFObjectiveFun const& obj, SparseMatrix const& graph, NMFClustering const& clustering, node_t i) {
	// Loss for edges
	for (ColumnIterator edge(graph,i); !edge.end(); ++edge) {
		if (i == edge.row()) continue; // exclude diagonal, but do count below diagonal
		// predicted value, v̂ = (U*U')(i,j) = U(i,:)*U(j,:)
		// loss is
		double vh = dot(clustering[i], clustering[edge.row()]);
		double v  = edge.data();
		if (obj.likelihood == LH_GAUSSIAN) {
			loss -= 0.5*v*v - v*vh; // we already counted vh^2 above
			loss += 0.5*v*v;
		} else if (obj.likelihood == LH_POISSON) {
			loss -= v * (log(v) - log(vh));
		}
	}

	// Regularization term / prior on membership coefficients
	for (SparseVector::const_iterator it = clustering[i].begin() ; it != clustering[i].end() ; ++it) {
		loss -= weight_prior_term(obj, it->weight);
	}
	if (!obj.fixed_normalization) {
		loss -= weight_prior_partition_term(obj) * clustering[i].nnz();
	}

	// Cluster sizes
	for (SparseVector::const_iterator it = clustering[i].begin() ; it != clustering[i].end() ; ++it) {
		loss -= size_prior_term(obj, clustering.clus_size(it->clus));
		loss += size_prior_term(obj, clustering.clus_size(it->clus)-1);
	}

	// Clusters per node
	loss -= support_prior_term(obj, clustering[i].nnz());
	loss += support_prior_term(obj, 0);
}

// How the loss would change if node i were cleared to cluster clus with weight w
*/

// -----------------------------------------------------------------------------
}
#endif


text:
package com.github.approval;

import com.github.approval.converters.Converter;
import com.github.approval.converters.Converters;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.logging.Logger;

/**
 * The main entry point class for each approval process. This is the main service class that is doing the hard work - it calls other classes for custom logic based on the object that is approved.
 * Created by github on 1/29/14.
 *
 * @param <T> the type of the object that will be approved by this {@link Approval}
 */
public class Approval<T> {
    private static final Logger LOG = Logger.getLogger(Approval.class.getName());
    private static final String FOR_APPROVAL_EXTENSION = ".forapproval";
    private final Reporter reporter;
    private final com.github.approval.utils.FileSystemUtils fileSystemReadWriter;
    private final Converter<T> converter;
    private PathMapper<T> pathMapper;

    /**
     * Create a new object that will be able to approve "things" for you.
     *
     * @param reporter   a reporter that will be notified as needed for approval events
     * @param converter  a converter that will be responsible for converting the type for approval to raw form
     * @param pathMapper the path mapper that will be used
     */
    Approval(Reporter reporter, Converter<T> converter, @Nullable PathMapper<T> pathMapper) {
        this(reporter, converter, pathMapper, new com.github.approval.utils.DefaultFileSystemUtils());
    }

    /**
     * This ctor is for testing only.
     */
    Approval(Reporter reporter, Converter<T> converter, @Nullable PathMapper<T> pathMapper, com.github.approval.utils.FileSystemUtils fileSystemReadWriter) {
        this.fileSystemReadWriter = fileSystemReadWriter;
        this.converter = converter;
        this.reporter = reporter;
        this.pathMapper = pathMapper;
    }

    /**
     * Create a new approval builder that will be able to approve objects from the specified class type.
     *
     * @param clazz the class object for the things you will be approving
     * @param <T>   the type of the objects you will be approving
     * @return an approval builder that will be able to construct an {@link Approval} for your objects
     */
    @Nonnull
    public static <T> ApprovalBuilder<T> of(Class<T> clazz) {
        return new ApprovalBuilder<T>(clazz);
    }

    /**
     * Get the path for approval from the original file path.
     *
     * @param filePath the original path to value
     * @return the path for approval
     */
    @Nonnull
    public static Path getApprovalPath(Path filePath) {
        Pre.notNull(filePath, "filePath");

        String s = filePath.toString();
        int extensionIndex = s.lastIndexOf('.');

        if (extensionIndex == -1) {
            return Paths.get(s + FOR_APPROVAL_EXTENSION);
        }

        int lastPartOfPath = s.lastIndexOf('/');
        if (lastPartOfPath != -1 && lastPartOfPath > extensionIndex) {
            //there was no extension and the directory contains dots.
            return Paths.get(s + FOR_APPROVAL_EXTENSION);
        }

        String firstPart = s.substring(0, extensionIndex);
        String extension = s.substring(extensionIndex);

        return Paths.get(firstPart + FOR_APPROVAL_EXTENSION + extension);

    }

    @SuppressWarnings("unchecked")
    private static <T> Converter<T> getConverterForPrimitive(Class<T> clazz) {
        if (clazz.equals(Byte.class) || clazz.equals(byte.class)) {
            return (Converter<T>) Converters.BYTE;
        } else if (clazz.equals(Integer.class) || clazz.equals(int.class)) {
            return (Converter<T>) Converters.INTEGER;
        } else if (clazz.equals(String.class)) {
            return (Converter<T>) Converters.STRING;
        } else if (clazz.equals(Short.class) || clazz.equals(short.class)) {
            return (Converter<T>) Converters.SHORT;
        } else if (clazz.equals(Long.class) || clazz.equals(long.class)) {
            return (Converter<T>) Converters.LONG;
        } else if (clazz.equals(Boolean.class) || clazz.equals(boolean.class)) {
            return (Converter<T>) Converters.BOOLEAN;
        } else if (clazz.equals(Float.class) || clazz.equals(float.class)) {
            return (Converter<T>) Converters.FLOAT;
        } else if (clazz.equals(Double.class) || clazz.equals(double.class)) {
            return (Converter<T>) Converters.DOUBLE;
        } else if (clazz.equals(Character.class) || clazz.equals(char.class)) {
            return (Converter<T>) Converters.CHAR;
        } else if (clazz.equals(byte[].class)) {
            return (Converter<T>) Converters.BYTE_ARRAY;
        } else if (clazz.equals(int[].class)) {
            return (Converter<T>) Converters.INTEGER_ARRAY;
        } else if (clazz.equals(short[].class)) {
            return (Converter<T>) Converters.SHORT_ARRAY;
        } else if (clazz.equals(long[].class)) {
            return (Converter<T>) Converters.LONG_ARRAY;
        } else if (clazz.equals(float[].class)) {
            return (Converter<T>) Converters.FLOAT_ARRAY;
        } else if (clazz.equals(double[].class)) {
            return (Converter<T>) Converters.DOUBLE_ARRAY;
        } else if (clazz.equals(boolean[].class)) {
            return (Converter<T>) Converters.BOOLEAN_ARRAY;
        } else if (clazz.equals(char[].class)) {
            return (Converter<T>) Converters.CHAR_ARRAY;
        } else if (clazz.equals(String[].class)) {
            return (Converter<T>) Converters.STRING_ARRAY;
        }
        throw new IllegalArgumentException(clazz + " is not a primitive type class!");
    }

    /* Expose this to the tests */
    @Nonnull
    Converter<T> getConverter() {
        return converter;
    }

    /* Expose this to the tests */
    @Nonnull
    Reporter getReporter() {
        return reporter;
    }

    /**
     * Verify the value that was passed in.
     *
     * @param value    the value object to be approved
     * @param filePath the path where the value will be kept for further approval
     */
    public void verify(@Nullable T value, Path filePath) {
        Pre.notNull(filePath, "filePath");

        File file = mapFilePath(value, filePath);

        File parentPathDirectory = file.getParentFile();
        if (parentPathDirectory != null && !parentPathDirectory.exists()) {
            try {
                fileSystemReadWriter.createDirectories(parentPathDirectory);
            } catch (IOException e) {
                throw new IllegalStateException(e.getMessage(), e);
            }
        }
        Path approvalPath = getApprovalPath(file.toPath());
        byte[] rawValue = converter.getRawForm(value);
        if (!file.exists()) {
            LOG.info(file + " didn't exist. You will be asked for approval");
            handleFirstTimeApproval(file, approvalPath, rawValue);
            return;
        }

        // Change the modification time. This will allow users to delete orphaned files
        // https://github.com/nikolavp/approval/issues/18
        boolean wasAbleSetModified = file.setLastModified(System.currentTimeMillis());
        if (!wasAbleSetModified) {
            LOG.warning("We weren't able to change the modification date for " + file.getAbsolutePath());
        }

        try {
            byte[] fileContent = fileSystemReadWriter.readFully(file.toPath());
            if (!Arrays.equals(fileContent, rawValue)) {
                try {
                    LOG.info("Approval in " + file + " is not the same as the last value. You will be asked for approval of the new value.");
                    fileSystemReadWriter.write(approvalPath, rawValue);
                } catch (IOException e) {
                    throw new AssertionError("Couldn't write the new approval file " + file, e);
                }
                reporter.notTheSame(fileContent, file, rawValue, approvalPath.toFile());
            }
        } catch (IOException e) {
            throw new AssertionError("Couldn't read the previous content in file " + file, e);
        }

        //value approved
    }

    private void handleFirstTimeApproval(File file, Path approvalPath, byte[] rawValue) {
        try {
            fileSystemReadWriter.write(approvalPath, rawValue);

            approvalPath.toFile().deleteOnExit();
        } catch (IOException e) {
            throw new AssertionError("Couldn't write path for approval " + approvalPath, e);
        }
        final Path path = file.toPath();
        try {
            fileSystemReadWriter.touch(path);
        } catch (IOException ex) {
            throw new AssertionError("Couldn't create path " + path);
        }
        reporter.approveNew(rawValue, approvalPath.toFile(), file);
    }

    private File mapFilePath(@Nullable T value, Path filePath) {
        File file;
        if (pathMapper != null) {
            file = pathMapper.getPath(value, filePath).toFile();
        } else {
            file = filePath.toFile();
        }
        return file;
    }

    PathMapper<T> getPathMapper() {
        return pathMapper;
    }

    /**
     * A builder class for approvals. This is used to conveniently build new approvals for a specific type with custom reporters, converters, etc.
     *
     * @param <T> the type that will be approved by the the resulting approval object
     */
    public static final class ApprovalBuilder<T> {

        private final Class<T> clazz;
        private Converter<T> converter;
        private Reporter reporter;
        private PathMapper<T> pathMapper;

        private ApprovalBuilder(Class<T> clazz) {
            this.clazz = clazz;
        }

        /**
         * Set the converter that will be used when building new approvals with this builder.
         *
         * @param converterToBeUsed the converter that will be used from the approval that will be built
         * @return the same builder for chaining
         * @see Converter
         */
        @Nonnull
        public ApprovalBuilder<T> withConveter(Converter<T> converterToBeUsed) {
            Pre.notNull(converterToBeUsed, "converter");

            this.converter = converterToBeUsed;
            return this;
        }

        /**
         * Set a path mapper that will be used when building the path for approval results.
         *
         * @param pathMapperToBeUsed the path mapper
         * @return the same builder for chaining
         */
        @Nonnull
        public ApprovalBuilder<T> withPathMapper(PathMapper<T> pathMapperToBeUsed) {
            Pre.notNull(pathMapperToBeUsed, "pathMapper");

            this.pathMapper = pathMapperToBeUsed;
            return this;
        }

        /**
         * Creates a new approval with configuration/options(reporters, converters, etc) that were set for this builder.
         *
         * @return a new approval for the specified type with custom configuration if any
         */
        @Nonnull
        public Approval<T> build() {
            if (converter == null) {
                try {
                    converter = getConverterForPrimitive(clazz);
                } catch (IllegalArgumentException ex) {
                    throw new IllegalStateException(String.format("You didn't provide a converter for %s and it is not a primitive type!", clazz));
                }
            }
            if (reporter == null) {
                throw new IllegalStateException("You didn't provide a reporter!");
            }
            return new Approval<T>(reporter, converter, pathMapper);
        }

        /**
         * Set the reporter that will be used when building new approvals with this builder.
         *
         * @param reporterToBeUsed the reporter that will be used from the approval that will be built
         * @return the same builder for chaninig
         * @see Reporter
         */
        public ApprovalBuilder<T> withReporter(Reporter reporterToBeUsed) {
            Pre.notNull(reporterToBeUsed, "reporter");

            this.reporter = reporterToBeUsed;
            return this;
        }

    }
}


text:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.sqlvirtualmachine.models;

import com.azure.core.util.ExpandableStringEnum;
import com.fasterxml.jackson.annotation.JsonCreator;
import java.util.Collection;

/** Cluster type. */
public final class ClusterConfiguration extends ExpandableStringEnum<ClusterConfiguration> {
    /** Static value Domainful for ClusterConfiguration. */
    public static final ClusterConfiguration DOMAINFUL = fromString("Domainful");

    /**
     * Creates or finds a ClusterConfiguration from its string representation.
     *
     * @param name a name to look for.
     * @return the corresponding ClusterConfiguration.
     */
    @JsonCreator
    public static ClusterConfiguration fromString(String name) {
        return fromString(name, ClusterConfiguration.class);
    }

    /**
     * Gets known ClusterConfiguration values.
     *
     * @return known ClusterConfiguration values.
     */
    public static Collection<ClusterConfiguration> values() {
        return values(ClusterConfiguration.class);
    }
}


text: I have a dream, that some day I could write objc with lightning speed, so I create this plugin


text:
package retrofit2;

import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import javax.annotation.Nullable;

/**
 * Adapts a {@link Call} with response type {@code R} into the type of {@code T}. Instances are
 * created by {@linkplain Factory a factory} which is
 * {@linkplain Retrofit.Builder#addCallAdapterFactory(Factory) installed} into the {@link Retrofit}
 * instance.
 */
public interface CallAdapter<R, T> {
  /**
   * Returns the value type that this adapter uses when converting the HTTP response body to a Java
   * object. For example, the response type for {@code Call<Repo>} is {@code Repo}. This type
   * is used to prepare the {@code call} passed to {@code #adapt}.
   *

   * Note: This is typically not the same type as the {@code returnType} provided to this call
   * adapter's factory.
   */
  Type responseType();

  /**
   * Returns an instance of {@code T} which delegates to {@code call}.
   *

   * For example, given an instance for a hypothetical utility, {@code Async}, this instance would
   * return a new {@code Async<R>} which invoked {@code call} when run.
   *

   * @Override
   * public <R> Async<R> adapt(final Call<R> call) {
   *   return Async.create(new Callable<Response<R>>() {
   *     @Override
   *     public Response<R> call() throws Exception {
   *       return call.execute();
   *     }
   *   });
   * }
   *

   */
  T adapt(Call<R> call);

  /**
   * Creates {@link CallAdapter} instances based on the return type of {@linkplain
   * Retrofit#create(Class) the service interface} methods.
   */
  abstract class Factory {
    /**
     * Returns a call adapter for interface methods that return {@code returnType}, or null if it
     * cannot be handled by this factory.
     */
    public abstract @Nullable CallAdapter<?, ?> get(Type returnType, Annotation[] annotations,
        Retrofit retrofit);

    /**
     * Extract the upper bound of the generic parameter at {@code index} from {@code type}. For
     * example, index 1 of {@code Map<String, ? extends Runnable>} returns {@code Runnable}.
     */
    protected static Type getParameterUpperBound(int index, ParameterizedType type) {
      return Utils.getParameterUpperBound(index, type);
    }

    /**
     * Extract the raw class type from {@code type}. For example, the type representing
     * {@code List<? extends Runnable>} returns {@code List.class}.
     */
    protected static Class<?> getRawType(Type type) {
      return Utils.getRawType(type);
    }
  }
}


text:
namespace pp {

inline std::ios::fmtflags numeric_base_int(const std::string &str)
{
    if ((str.size() >= 2) &&
        (str[0] == '0') &&
        (str[1] == 'x' || str[1] == 'X'))
    {
        return std::ios::hex;
    }
    if ((str.size() >= 1) && (str[0] == '0'))
    {
        return std::ios::oct;
    }
    return std::ios::dec;
}

// The following functions parse the given string to extract a numerical
// value of the given type. These functions assume that the string is
// of the correct form. They can only fail if the parsed value is too big,
// in which case false is returned.

template<typename IntType>
bool numeric_lex_int(const std::string &str, IntType *value)
{
    std::istringstream stream(str);
    // This should not be necessary, but MSVS has a buggy implementation.
    // It returns incorrect results if the base is not specified.
    stream.setf(numeric_base_int(str), std::ios::basefield);

    stream >> (*value);
    return !stream.fail();
}

template<typename FloatType>
bool numeric_lex_float(const std::string &str, FloatType *value)
{
    std::istringstream stream(str);
    // Force "C" locale so that decimal character is always '.', and
    // not dependent on the current locale.
    stream.imbue(std::locale::classic());

    stream >> (*value);
    return !stream.fail();
}

} // namespace pp.
#endif // COMPILER_PREPROCESSOR_NUMERIC_LEX_H_


text:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta name="copyright" content="(C) Copyright 2005" />
<meta name="DC.rights.owner" content="(C) Copyright 2005" />
<meta content="public" name="security" />
<meta content="index,follow" name="Robots" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta content="reference" name="DC.Type" />
<meta name="DC.Title" content="java.sql.SQLWarning class" />
<meta content="java.sql.SQLWarning class" name="DC.subject" />
<meta content="java.sql.SQLWarning class" name="keywords" />
<meta scheme="URI" name="DC.Relation" content="crefjdbc12657.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc32052.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc34565.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc27734.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc15905.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc40794.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc20485.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc29874.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc23502.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc38274.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc16643.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbcjavasqlsavepoint.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc20377.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbcjsr169.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc4_0summary.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc4_1summary.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc4_2summary.html" />
<meta scheme="URI" name="DC.Relation" content="rrefjdbc1020262.html" />
<meta content="XHTML" name="DC.Format" />
<meta content="rrefjdbc30469" name="DC.Identifier" />
<meta content="en-us" name="DC.Language" />
<link href="commonltr.css" type="text/css" rel="stylesheet" />
<title>java.sql.SQLWarning class</title>

java.sql.SQLWarning class

Derby can generate
a warning in certain circumstances. A warning is generated if, for example,
you try to connect to a database with the create attribute set to true if
the database already exists. Aggregates like sum() also raise a warning if
NULL values are encountered during the evaluation.

All other informational messages are written to the Derby system's derby.log file.

Parent topic: JDBC reference

Related reference

java.sql.Driver interface

java.sql.DriverManager.getConnection method

java.sql.Connection interface

java.sql.DatabaseMetaData interface

java.sql.Statement interface

java.sql.CallableStatement interface

java.sql.PreparedStatement interface

java.sql.ResultSet interface

java.sql.ResultSetMetaData interface

java.sql.SQLException class

java.sql.Savepoint interface

Mapping of java.sql.Types to SQL types

JDBC Package for Connected Device Configuration/Foundation Profile (JSR 169)

Features supported on all JDBC 4 releases

Features supported on JDBC 4.1 and above

JDBC 4.2-only features

JDBC escape syntax


text:
package controller

import (
	"github.com/gin-gonic/gin"
	"github.com/lewgun/argyroneta/cmd/websrvd/pkg/controller/api"
)

//SetupRouters setup all controllers
func SetupRouters(r *gin.Engine) {
	r.POST("/api/entry/top", api.EntryTop)
}


text: {{announcement.subject}}


text:
package godellauncher

import (
	"fmt"
	"io"
	"os"
	"strings"

	"github.com/palantir/godel/v2/framework/godel"
	"github.com/spf13/cobra"
)

// CobraCLITask creates a new Task that runs the provided *cobra.Command. The runner for the task does the following:
//
//   - Creates a "dummy" root cobra.Command with "godel" as the command name
//   - Adds the provided command as a subcommand of the dummy root
//   - Executes the root command with the following "os.Args":
//     [executable] [task] [task args...]
//
// The second argument is an optional pointer. If the pointer is non-nil, then the value of the provided pointer will be
// set to the GlobalConfig provided when the task is run.
func CobraCLITask(cmd *cobra.Command, globalConfigPtr *GlobalConfig) Task {
	rootCmd := CobraCmdToRootCmd(cmd)
	return Task{
		Name:        cmd.Use,
		Description: cmd.Short,
		RunImpl: func(t *Task, global GlobalConfig, stdout io.Writer) error {
			if globalConfigPtr != nil {
				*globalConfigPtr = global
			}
			rootCmd.SetOutput(stdout)
			args := []string{global.Executable}
			args = append(args, global.Task)
			args = append(args, global.TaskArgs...)
			os.Args = args
			return rootCmd.Execute()
		},
	}
}

// CobraCmdToRootCmd takes the provided *cobra.Command and returns a new *cobra.Command that acts as its "root" command.
// The root command has "godel" as its command name and is configured to silence the built-in Cobra error printing.
// However, it has custom logic to match the standard Cobra error output for unrecognized flags.
func CobraCmdToRootCmd(cmd *cobra.Command) *cobra.Command {
	rootCmd := &cobra.Command{
		Use: godel.AppName,
	}
	rootCmd.AddCommand(cmd)

	// Set custom error behavior for flag errors. Usage should only be printed if the error is due to invalid flags. In
	// order to do this, set SilenceErrors and SilenceUsage to true and set flag error function that prints error and
	// usage and then returns an error with empty content (so that the top-level handler does not print it).
	rootCmd.SilenceErrors = true
	rootCmd.SilenceUsage = true
	rootCmd.SetFlagErrorFunc(func(c *cobra.Command, err error) error {
		return fmt.Errorf("%s\n%s", err.Error(), strings.TrimSuffix(c.UsageString(), "\n"))
	})
	return rootCmd
}

func UnknownCommandError(cmd *cobra.Command, args []string) error {
	errTmpl := `unknown command "%s" for "%s"
Run '%v --help' for usage.`
	return fmt.Errorf(errTmpl, args[0], cmd.CommandPath(), cmd.CommandPath())
}


text:
package com.vaguehope.onosendai.provider.twitter;

import java.util.Collection;

import twitter4j.Paging;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;

import com.vaguehope.onosendai.C;
import com.vaguehope.onosendai.config.Account;
import com.vaguehope.onosendai.model.Meta;
import com.vaguehope.onosendai.model.TweetList;
import com.vaguehope.onosendai.util.StringHelper;

class ListFeed implements FeedGetter {

	private final String ownerScreenName;
	private final String slug;

	/**
	 * "mylist" or "user/theirlist"
	 */
	public ListFeed (final String ownerScreenNameAndSlug) {
		if (StringHelper.isEmpty(ownerScreenNameAndSlug)) throw new IllegalArgumentException("ownerScreenNameAndSlug must not be empty.");
		final int x = ownerScreenNameAndSlug.indexOf('/');
		if (x > 0) {
			this.ownerScreenName = ownerScreenNameAndSlug.substring(0, x);
			this.slug = ownerScreenNameAndSlug.substring(x + 1);
		}
		else if (x < 0) {
			this.ownerScreenName = null;
			this.slug = ownerScreenNameAndSlug;
		}
		else {
			throw new IllegalArgumentException("ownerScreenNameAndSlug can not start with /: " + ownerScreenNameAndSlug);
		}
	}

	public String getOwnerScreenName () {
		return this.ownerScreenName;
	}

	public String getSlug () {
		return this.slug;
	}

	@Override
	public ResponseList<Status> getTweets (final Twitter t, final Paging paging) throws TwitterException {
		if (StringHelper.isEmpty(this.ownerScreenName)) {
			return t.getUserListStatuses(t.getId(), this.slug, paging);
		}
		return t.getUserListStatuses(this.ownerScreenName, this.slug, paging);
	}

	@Override
	public int recommendedFetchCount () {
		return C.TWITTER_FETCH_COUNT_LIST;
	}

	@Override
	public TweetList getTweets (final Account account, final Twitter t, final long sinceId, final boolean hdMedia, final boolean manual, final Collection<Meta> extraMetas) throws TwitterException {
		return TwitterUtils.fetchTwitterFeed(account, t, this, sinceId, hdMedia, extraMetas);
	}

	@Override
	public String toString () {
		return "list{" + this.slug + "}";
	}

}


text:
FROM activestate/activepython:2.7

WORKDIR /app
RUN pip install wheel
ADD . /app
RUN python setup.py sdist
RUN pip install --use-wheel dist/*

ENTRYPOINT ["python", "-m", "filearchive"]