*      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                           !(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownSafe1Skip whatever comments and whitespaces are found.Assumes the identifier and the left parenthesis have been parsed Parses p, ignoring comments before and after it, and consumes the final right parenthesis !(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableSafe%The configuration used for minifying.Leave letter casing as is.8Lowercase whatever possible to improve gzip compression./gA default config with most settings enabled. Used by the minify function, mainly for testing purposes.0  !"#$%&'()*+,-./0  !"#$%&'()*+,-./0 &'(#$% !"/.)*+,-   !"#$%&'()*+,-./!(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableSafe>VClass for types that can be converted to Text. Used for priting the minified results.A$Class for types that can be minified >?@ABCDEFG>?@ABC>?@ABC>?@ABCDEFG!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownSafeHIJKLMNOPQRST HLIJKMNOP MNOPHIJKLHIJKLMNOPQRST!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownSafe XYZ[\]^_`a XYZ[\]^_`a ^_`a]\ZYX[ XYZ[\]^_`a!(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableNoneIbThe <percentage> data type. Many CSS properties can take percentage values, often to define sizes in terms of parent objects. Percentages are formed by a <number> immediately followed by the percentage sign %. There is no space between the % and the number. Specification: < 2https://drafts.csswg.org/css-values-3/#percentages* CSS Value and Units Module Level 3 (4.3)< 8https://www.w3.org/TR/CSS2/syndata.html#percentage-units CSS2.1 (4.3.3)< ,https://www.w3.org/TR/CSS1/#percentage-units CSS1 (6.2)dThe <alphavalue> data type. Syntactically a <number>. It is the uniform opacity setting to be applied across an entire object. Any values outside the range 0.0 (fully transparent) to 1.0 (fully opaque) are clamped to this range. Specification: < .https://www.w3.org/TR/css3-color/#transparency CSS Color Module Level 3 (3.2)fThe <number> data type. Real numbers, possibly with a fractional component. When written literally, a number is either an integer, or zero or more decimal digits followed by a dot (.) followed by one or more decimal digits and optionally an exponent composed of "e" or E and an integer. It corresponds to the <number-token> production in the CSS Syntax Module [CSS3SYN]. As with integers, the first character of a number may be immediately preceded by - or + to indicate the number s sign. Specifications:  .https://drafts.csswg.org/css-values-3/#numbers*CSS Values and Units Module Level 3 (4.2) /https://www.w3.org/TR/CSS2/syndata.html#numbersCSS2.1 (4.3.1) !https://www.w3.org/TR/CSS1/#unitsCSS1 (6 Units)}Show a Rational in decimal notation, removing leading zeros, and not displaying fractional part if the number is an integer.bcdefghijklm nopqrs bcdefghijklm bcmfghijdeklbcdefghijklm nopqrs!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNone*The <color> CSS data type. Specifications:  .https://drafts.csswg.org/css-color/#colorunitsCSS Color Module Level 4 0https://drafts.csswg.org/css-color-3/#colorunitsCSS Color Module Level 3 7https://www.w3.org/TR/CSS2/syndata.html#value-def-colorCSS2.1 'https://www.w3.org/TR/CSS1/#color-unitsCSS1 CA map with hex values as keys, and their minimal colorname as value *Mapping between color names and hex values|Equality is slightly relaxed, since percentages and real numbers are mapped to the [0,255] integer range, and then compared,   ! " !    ! " !(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneThe <resolution> CSS data typeThe <frequency> CSS data typeThe <duration> CSS data typeThe <angle> CSS data typeThe <length> CSS data type#Given a constructor, a number, and a unit, returns the shortest equivalent representation. If there is more than one, returns the latest found to "normalize" values, hopefully improving gzip compression.Z$%&#'()*+,-./0123456--:$%&#'()*+,-./0123456!(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableNone9;7CSS  length-percentage data type, i.e.: [length | percentage] Though because of the name it would be more intuitive to define: type LengthPercentage = Either Distance Percentage, they are inverted here to make use of Either's Functor instance, because it makes no sense to minify a Percentage.789:789789:!(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableNone ;; !(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableNone <= >          <= >   !(c) 2017 Cristian Adrin OntiveroBSD3 experimental non-portableNone ?@ABCDEFGHI?@ABCDEF?@ABCDEFGHI !(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneJK !   JK !"(c) 2017 Cristian Adrin Ontivero BSD3  experimental  non-portable NoneLCSS  color-stop data typeMCSS  side-or-corner data type+NOPQRSTUVWXYZ[L\]^_M`abcdefghijklmnopqrstuvNOPQRSTUVWXYZ[L\]^M`abcNOPQRSTUVWXYZ[L\]^_M`abcdefghijklmnopqrstuv!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownSafe9;wThe <string> data type represents a string, formed by Unicode characters, delimited by either double (") or single (') quotes. Specification: < .https://drafts.csswg.org/css-values-3/#strings+ CSS Values and Units Module Level 3 (3.3)< /https://www.w3.org/TR/CSS2/syndata.html#strings CSS2.1 (4.3.7)wxyz{|}~wxy{}~wxyz{|}~!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownSafe9;'=''~=''|=''^=''$=''*='A simple selector is either a type selector, universal selector, attribute selector, class selector, ID selector, or pseudo-class. The first selector must be a type or universal selector. When none is specified, the universal selector is implied, i.e.: myId is the same as *1myId mempty is used to denote an empty namespacee.g.: *, ns|*, h1, em, bodyCertain selectors support namespace prefixes. Namespace prefixes are declared with the @namespace rule. A type selector containing a namespace prefix that has not been previously declared for namespaced selectors is an invalid selector.Called  -https://www.w3.org/TR/css3-selectors/#grammarsimple_sequence_selector in CSS2.1, but < ?https://drafts.csswg.org/selectors-4/#typedef-compound-selector2 compound-selector> in CSS Syntax Module Level 3.Combinators are: whitespace, "greater-than sign" (U+003E, >), "plus sign" (U+002B, +) and "tilde" (U+007E, ~). White space may appear between a combinator and the simple selectors around it. Only the characters "space" (U+0020), "tab" (U+0009), "line feed" (U+000A), "carriage return" (U+000D), and "form feed" (U+000C) can occur in whitespace. Other space-like characters, such as "em-space" (U+2003) and "ideographic space" (U+3000), are never part of whitespace.' ''~'='  !(c) 2016 Cristian Adrin OntiveroBSD3 experimental non-portableNone&BCSS <single-transition-timing-function> data type. Specifications:  Lhttps://drafts.csswg.org/css-transitions/#propdef-transition-timing-functionCSS Transitions Bhttps://drafts.csswg.org/css-animations/#animation-timing-functionCSS Animations Level 1 @https://developer.mozilla.org/en-US/docs/Web/CSS/timing-functionMozilla summary#$%&'()*+,-./0123 #$%&'()*+,-./ &'()*+,-./#$% #$%& '()*+,-./0123 "(c) 2017 Cristian Adrin Ontivero BSD3  experimental  non-portable NoneYConvert a matrix to all the other possible equivalent transformation functions (if any).Simplifies a <transform-function> without converting it to a 4x4 matrix, by doing some simple conversions between the different functions, or minifying the dimension arguments (<length> and <angle> values)OCombines consecutive <transform-functions> whenever possible, leaving translate functions that can't be converted to a matrix (because they use percentages or relative units) as they are, in the position they are in the list (since matrix multiplication isn't conmutative) Example: >>> import Control.Monad.Reader >>> let t10 = Translate (Right (Distance 10 PX)) Nothing >>> let tp = Translate (Left (Percentage 100)) Nothing >>> let s90 = Skew (Angle 90 Deg) Nothing >>> let s45 = Skew (Angle 45 Deg) Nothing >>> let sx5 = ScaleX 5 >>> let f x = runReader (combine x) defaultConfig >>> fmap toText $ f [t10, s45, sx5] ["matrix(5,0,1,1,10,0)"] >>> fmap toText $ f [s45,tp,sx5,sx5,sx5] ["skew(45deg)","translate(100%)","scale(125)"]QThere are a series of equivalences to keep in mind: translate(0), translate3d(0, 0, 0), translateX(0), translateY(0), translateZ(0), scale(1), scaleX(1), scaleY(1), scaleZ(1), rotate(0), rotate3d(1,1,1,0), rotateX(0), rotateY(0), rotateZ(0), perspective(infinity), matrix(1,0,0,1,0,0), matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), skewX(0), skewY(0), and the shortest of them all: skew(0) All of these translate to the 4x4 identity matrix.1789:;<=>?@ABCDEFGHIJKLMNOPQ789:;<=>?@ABCDEFGHIJKLMNO789:;<=>?@ABCDEFGHIJKLMNO789:;<=>?@ABCDEFGHIJKLMNOPQ !(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNone9;I\iRedefines equality to be case-insensitive, since CSS literal values such as "auto", "none", etc. are so.ETUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1TUVWXYZ[\]^_|`abcdefghijklmnopqrstuvwxyz{}~1_`abcdefghijklmnopqrstuvwxyz{|}~XY\]^TUVWZ[TUVWXYZ[\]^_ `abcdefghijklmnopqrstuvwxyz{|}~!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneL <integer> data type parser, but into a String instead of an Int, for other parsers to use (e.g.: see the parsers int, or rational)!Parser for <integer>: [+|-][0-9]+Real numbers parser. <number>:  'int'integer | [0-9]*.[0-9]+sParses until the end of the declaration, i.e. ';' or '}'. Used to deal with invalid input, or an IE specific hack.UAssumes "linear-gradient(", or one of its prefixed equivalents, has been parsed. : [ angle|to  side-or-corner ,]?  color-stop [,  color-stop]+'Assumes "rect(" has been already parsed,Assumes "translate(" has been already parsedDParser of scale() function. Assumes "scale(" has been already parsed<For cases when CSS hacks are used, e.g.: margin-top: 1px 9;p      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHk      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneIJKLMNOPIJKLMOIJKLMNOP!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneQMinifies a declaration, based on the property's specific traits (i.e. if it inherits or not, and what its initial value is), and the chosen configurations.+RSTUVWXYZ[\]^Q_`abcdefghijklmnopA margin declaration.Any of the margin longhands (e.g.: margin-top)&If successful, the combination of bothqr&RSTUVWXYZ[\]^Q_`abcdefghijklmnopqr!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNone2Data type for media queries. For the syntax, see  /https://www.w3.org/TR/css3-mediaqueries/#syntaxmedia query syntax. First possibility in the grammar!Second possibility in the grammar@stuvwxyz{|}~(st uvwxyz{|}~!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNone 9Parser for selector combinators, i.e. ">>" (descendant),  (child),  (adjacent sibling), '~'5 (general sibling), and ' ' (descendant) combinators.MParse a list of comma-separated selectors, ignoring whitespace and comments.$Parser for property names. Usually, p would be enough, but this parser adds support for IE hacks (e.g. *width), which deviate from the CSS grammar.cUsed to parse the "!important" at the end of declarations, ignoring spaces and comments after the !.\Parses a list of declarations, ignoring spaces, comments, and empty declarations (e.g. ; ;)1Parser for CSS at-rules (e.g. @keyframes, @media)Parses a CSS style rule, e.g. body { padding: 0; }XParser for a CSS rule, which can be either an at-rule (e.g. @charset), or a style rule.iParser for CSS rules (both style rules, and at-rules), which can be separated by whitespace or comments.Media Feature values. Per the  /https://www.w3.org/TR/css3-mediaqueries/#valuesoriginal spec (6.1), <resolution> only accepts dpi and dpcm units, dppx was added later. However, the w3c validator considers it valid, so we make no exceptions.Specs: /https://drafts.csswg.org/mediaqueries-3/#syntax  (https://www.w3.org/TR/css3-mediaqueries/ (https://www.w3.org/TR/CSS21/grammar.html/Implementation based on mozilla's pseudo BNF: Rhttps://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries))!(c) 2017 Cristian Adrin OntiveroBSD3 experimentalunknownNoneMinify Text, based on a 5. To just use a default set of configurations (i.e. /), use .dMinify Text CSS, using a default set of configurations (with most minification techniques enabled).2  !"#$%&'()*+,-./ !"#$%&'()*+,-./0123456789:;<=>?@ABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzz{{||}~                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e e f f g g h i j k l m n o p q r s t u v w x y z { | } ~                                          !"#$%&'()*+,-./0123456789:;<=>?@AB C D EFFGHIJKLMNO P QRSTUVWXYZ[\]^_`aRbcdefghijklmnopqrstuvwxyz{|}~                                          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#hasmin-0.3.2-7OGnndUKLB82W4XTfB3Pmg Hasmin.ConfigHasmin.Types.ClassHasmin.Types.RepeatStyle Hasmin.UtilsHasmin.Types.NumericHasmin.Types.ColorHasmin.Types.DimensionHasmin.Types.BgSizeHasmin.Types.PositionHasmin.Types.FilterFunctionHasmin.Types.TimingFunctionHasmin.Types.TransformFunctionHasmin.Types.ValueHasmin.Parser.ValueHasmin.Types.DeclarationHasmin.Types.StylesheetHasmin.Parser.InternalHasminHasmin.Parser.UtilsHasmin.Types.PercentageLengthHasmin.Types.ShadowHasmin.Types.GradientHasmin.Types.StringHasmin.Types.SelectorHasmin.PropertiesConfig colorSettingsdimensionSettingsgradientSettingsshouldUsePropertyTraitsshouldCleanRulesshouldMinifyTimingFunctionsshouldMinifyFilterFunctionsshouldRemoveQuotesfontweightSettingsshouldMinifyTransformOriginshouldMinifyMicrosyntaxshouldMinifyKeyframeSelectorsshouldMinifyTransformFunctionshouldConvertEscapedshouldConvertNullPercentagesshouldRemoveEmptyBlocksshouldRemoveDuplicateSelectorsshouldNormalizeQuotes letterCaseselectorSortingdeclarationSortingFontWeightSettingsFontWeightMinOffFontWeightMinOn SortingMethod NoSortingLexicographical LetterCaseOriginal LowercaseGradientSettingsGradientMinOff GradientMinOnDimensionSettings DimMinOffDimMinOn ColorSettings ColorMinOff ColorMinOnCommandsshouldBeautifyshouldCompressfile Instructions defaultConfig$fShowCommands$fShowColorSettings$fEqColorSettings$fShowDimensionSettings$fEqDimensionSettings$fShowGradientSettings$fEqGradientSettings$fShowLetterCase$fEqLetterCase$fShowSortingMethod$fEqSortingMethod$fShowFontWeightSettings$fEqFontWeightSettings $fShowConfigToTexttoText toBuilder Minifiable minifyWithminify$fToTextEither $fToTextText $fToTextInt $fToTextWord8 RSKeywordRsRepeatRsSpaceRsRound RsNoRepeat RepeatStyleRepeatXRepeatYRSPair$fToTextRSKeyword$fEqRepeatStyle$fMinifiableRepeatStyle$fToTextRepeatStyle $fEqRSKeyword$fShowRSKeyword$fShowRepeatStyle textualLengthrestrictmconcatIntersperse replaceAt fromRight' fromLeft'isRightisLeftepsiloneps Percentage AlphavalueNumber getRationaltoNumber fromNumber toAlphavalue mkAlphavalue toPercentage$fToTextPercentage$fFractionalAlphavalue$fBoundedAlphavalue$fToTextAlphavalue$fNumAlphavalue$fToTextNumber $fEqNumber $fShowNumber $fOrdNumber $fNumNumber$fFractionalNumber $fRealNumber$fRealFracNumber$fEqAlphavalue$fShowAlphavalue$fOrdAlphavalue$fRealAlphavalue$fRealFracAlphavalue$fEqPercentage$fShowPercentage$fOrdPercentage$fNumPercentage$fFractionalPercentage$fRealPercentage$fRealFracPercentageColorNamed minifyColormkHex3mkHex6mkHex4mkHex8mkNamedmkHSLmkHSLAmkRGBIntmkRGBPer mkRGBAInt mkRGBAPer keywordColors $fToTextColor$fMinifiableColor $fOrdColor $fEqColor $fShowColorResolutionUnitDpiDpcmDppx FrequencyUnitHzKhz DurationUnitSMs AngleUnitDegGradRadTurn DistanceUnitINCMMMQPCPTPXEMEXCHVHVWVMINVMAXREM Resolution FrequencyDurationAngleDistance isRelativetoInchestoPixels toRadians$fUnitResolutionUnit$fToTextResolutionUnit$fUnitFrequencyUnit$fToTextFrequencyUnit$fUnitDurationUnit$fToTextDurationUnit$fUnitAngleUnit$fToTextAngleUnit$fUnitDistanceUnit$fToTextDistanceUnit$fToTextResolution$fMinifiableResolution$fEqResolution$fToTextFrequency$fMinifiableFrequency $fEqFrequency$fToTextDuration$fMinifiableDuration $fEqDuration $fToTextAngle$fMinifiableAngle $fEqAngle$fToTextDistance$fMinifiableDistance $fEqDistance$fShowDistanceUnit$fEqDistanceUnit$fShowDistance$fShowAngleUnit $fEqAngleUnit $fShowAngle$fShowDurationUnit$fEqDurationUnit$fShowDuration$fShowFrequencyUnit$fEqFrequencyUnit$fShowFrequency$fShowResolutionUnit$fEqResolutionUnit$fShowResolutionBgSizeCoverContainAuto$fMinifiableBgSize$fToTextBgSize $fEqBgSize $fToTextAuto$fEqAuto $fShowAuto $fShowBgSizePositionorigin1offset1origin2offset2 PosKeyword PosCenterPosLeftPosRightPosTop PosBottomminifyPositionl0p50 $fEqPosition$fToTextPosition$fMinifiablePosition$fToTextPosKeyword$fEqPosKeyword$fShowPosKeyword$fShowPositionFilterFunctionBlur BrightnessContrast GrayscaleInvertOpacitySaturateSepia HueRotate DropShadowminifyPseudoShadow$fMinifiableFilterFunction$fToTextFilterFunction$fEqFilterFunction$fShowFilterFunctionStepsSecondParamStartEndTimingFunction CubicBezierStepsEaseEaseIn EaseInOutEaseOutLinearStepEnd StepStart$fMinifiableTimingFunction$fToTextTimingFunction$fToTextStepsSecondParam$fEqTimingFunction$fEqStepsSecondParam$fShowStepsSecondParam$fShowTimingFunctionTransformFunctionMatMat3d PerspectiveRotateRotate3dRotateXRotateYRotateZScaleScale3dScaleXScaleYScaleZSkewSkewXSkewY Translate Translate3d TranslateX TranslateY TranslateZmkMatmkMat3dcombine$fToTextTransformFunction$fMinifiableTransformFunction$fEqTransformFunction$fShowTransformFunction SeparatorSpaceSlashCommaValuesUrlTextVgetTextValueInheritInitialUnsetNumberV PercentageV DistanceVAngleV DurationV FrequencyV ResolutionVColorV GradientV GenericFunc TransformV TimingFuncVFilterVShadowV ShadowText PositionV RepeatStyleVBgSizeVBgLayer FinalBgLayerSingleTransitionSingleAnimationFontVStringVUrlVFormatLocalRectOthermkOther valuesToList lowercaseTextmkValuesoptimizeFontFamily$fToTextSeparator$fMinifiableValues$fToTextValues$fMinifiableValue $fToTextValue$fMinifiableUrl $fToTextUrl $fToTextTextV $fEqTextV $fShowTextV $fOrdTextV$fIsStringTextV$fEqUrl $fShowUrl$fShowSeparator $fEqSeparator $fShowValues $fEqValues $fEqValue $fShowValuevaluesnumber percentagedigits fontStylepositiontimingFunctionvalue textualvalue stringvaluevaluesInParens stringOrUrl repeatStyle shadowListcolorurlvaluesFallback stringtype$fEqFontProperty$fShowFontProperty Declaration propertyName valueList isImportant hasIEhackclean$fMinifiableDeclaration$fToTextDeclaration$fEqDeclaration$fShowDeclarationSupportsCondInParens ParensCond ParensDecSupportsConditionNotAndOrParensRule AtCharsetAtImport AtNamespaceAtMedia AtKeyframes AtSupportsAtBlockWithRulesAtBlockWithDec StyleRule KeyframeBlockKeyframeSelectorFromTo KFPercentage ExpressionInvalidExpression MediaQuery MediaQuery1 MediaQuery2isEmpty $fMinifiableSupportsCondInParens$fToTextSupportsCondInParens$fMinifiableSupportsCondition$fToTextSupportsCondition$fMinifiableRule $fToTextRule$fMinifiableKeyframeBlock$fToTextKeyframeBlock$fMinifiableKeyframeSelector$fToTextKeyframeSelector$fToTextExpression$fMinifiableExpression$fToTextMediaQuery$fMinifiableMediaQuery$fShowExpression$fEqExpression$fShowMediaQuery$fEqMediaQuery$fEqKeyframeSelector$fShowKeyframeSelector$fEqKeyframeBlock$fShowKeyframeBlock$fShowSupportsCondInParens$fShowSupportsCondition $fShowRule$fShowGeneralEnclosedselector declaration declarationsatRulesupportsCondition stylesheet minifyCSSWith minifyCSS skipCommentsfunctionParsercommentcommacolonlexemeopt nonquotedurlfontfamilynameidentnmstartnmcharescapeunicodeminifyRepeatStyleshowRattrimLeadingZerosminimalColorMapcolorMapHex3Hex4Hex6Hex8RGBIntRGBPerRGBAIntRGBAPerHSLHSLAtoBuilderWithCommasallHex strToLowertoHexShorthand word8ToHex toLongHex hexToWord8 toRGBAInt withAlphahslToRgb hslToRgb'hueToRgb minimalColorsminDimUnit convertTo minifyAngle toCentimeters toMilimeterstoQuarterMilimetertoPointstoPica rationalPi toDegrees toGradianstoTurns toSeconds toMilisecondstoHertz toKilohertztoDpitoDpcmtoDppxPercentageLengthisNonZeroPercentageisZero$fMinifiableEither minifyBgSize minifyPos4minAxisp100ShadowinsetsOffsetXsOffsetY blurRadius spreadRadiussColorminifyBlurAndSpread$fMinifiableShadow$fToTextShadowminifyNumberPercentagefilterFunctionEquality ColorStopSideShapeCircleEllipseSize ClosestCorner ClosestSideFarthestCorner FarthestSideSLPLGradientOldLinearGradientLinearGradientRadialGradientcsColor colorHint SideOrCornerLeftSide RightSideTopSide BottomSideminifyColorHintsnotGreaterThan analyzeList minifySegmenthandlePercentagesminShapeAndSizeminifyRadialPositionminifyAngleOrSidedefaultGradientAngledefaultGradientSideOrCorner angleSideEq $fEqGradient$fToTextGradient$fMinifiableGradient $fToTextShape $fToTextSize$fMinifiableColorStop$fToTextColorStop $fToTextSide StringType DoubleQuotes SingleQuotesconvertEscapedText mapStringunquoteStringType removeQuotes unquoteUrlunquoteFontFamilyunquotetoIdent toUnquotedURLtoUnquotedFontFamilyconvertEscaped$fMinifiableStringType$fToTextStringType:=::~=::|=::^=::$=::*=:SimpleSelectorType UniversalbaseGHC.Num* NamespaceCompoundSelector Combinator DescendantChildghc-prim GHC.Classes>AdjacentSibling+GeneralSiblingAtt AttributeAttValueAttIdAnPlusBEvenOddABABSignPlusMinus AttributeSelClassSelIdSel PseudoElem PseudoClassLangFunctionalPseudoClassFunctionalPseudoClass1FunctionalPseudoClass2FunctionalPseudoClass3 IdentifierElementSelectorspecialPseudoElements isPositive an2Builder minifyAnPlusBminifyANremoveAttributeQuotes $fToTextAtt$fMinifiableAnPlusB$fToTextAnPlusB $fToTextSign$fMinifiableSimpleSelector$fToTextSimpleSelector$fMinifiableNonEmpty$fToTextNonEmpty$fMinifiableSelector$fToTextSelector $fOrdSelector$fToTextCombinator toCubicBeziertoStepsminifyTimingFunctionpossibleRepresentationssimplifymaybeWithComma toMatrix3dmatrixToRotate3disRelativeDistancefromPixelsToNumfromRadiansToNumtangentarctangetMatmatrixToSkewFunctionsmatrixToTranslateFunctionsmatrixToScaleFunctionsmatrixToPerspective matrixToMat mkMatMatrixmkTranslate3dMatrixmkScale3dMatrix mkSkewMatrixmkPerspectiveMatrix mk4x4MatrixhandleRepeatStyle handleImage handleBoxeshandleAttachment handleColor handleBgSizehandlePositionbldhandleTimingFunction handleTimeremoveIfEqualToint'intrational invalidvaluelineargradientrect translatescale FontProperty FontStyle FontVariant FontWeight FontStretch Ambiguousrgbrgbahslhsla alphavaluehexvaluehexnumericalConstructorsMapnumericalvaluedimensionParserdistanceangledurationangleConstructorsListdistanceConstructorsListword8fontSize positionvaluepos1pos2pos4bgSize bgAttachmentbox background finalBgLayerbgLayerpositionAndBgSize matchKeywordsimage transitionsingleTransitionbackgroundSizeautopropertyValueParsersMap singleValuefont storePropertystoreProperty'fontFamilyValues fontfamilylocalunquotedFontFamilytextualParserscsswideKeywordcsswideKeywordsMapfunctionParsers genericFunc functionsMap dropShadow textShadow shadowText positionListparseCommaSeparatedshadowradialgradient sideOrCorner leftright topbottom colorStopList colorStoppercentageLengthnumberPercentagescale3dskew translate3dmatrixmatrix3drotate3d cubicbezierstepsformatnamedColorsParsersMap separatorcommaSeparatordoubleQuotesStringsingleQuotesString animationsingleAnimation parseIdents PropertyInfo overwrittenBy subpropertiesshorthandAndLonghandsMap propertiespropertiesTraitsreplaceTextWithValues minifyDecpropertyTraitspropertyOptimizationsoptimizeValuesnullPercentageToLengthreplaceWithZerofontWeightOptimizeroptimizeTransformOriginoptimizeTransformOrigin' isZeroValtransformOrigin1transformOrigin2transformOrigin3transformOriginKeywordsunsetinitialinheritdeclarationExceptionscombineTransformFunctionsbackgroundSizeReducefontSynthesisReducereduceDeclaration shortestEquivminValanalyzeValueDifference solveClashes solveClashes'hasVendorPrefixisVendorPrefixedValue attemptMergemerge mergeIntoTRBL reduceTRBL mapValuesGeneralEnclosed GEFunction VendorPrefix minifyKFS cleanRule sortSelectorssortDeclarationsremoveDuplicateSelectorsgatherLonghandsmarginLonghandspaddingLonghands compactTRBL compactMargincompactPadding compactercompactLonghandslexiconub' appendWith combinator selectorsproperty important styleRulerulerulesmediaQueryListcompoundSelectoridSelclassSel attributeSel identOrString typeSelector universalnamespacePrefixpseudoanplusbfpcMapiehackatImport atCharset atNamespace atKeyframe keyframeBlockatMedia atSupportssupportsCondInParensatSupportsDeclarationsupportsHelpersupportsConjunctionsupportsDisjunctionatBlock mediaQuery expression