EAA      !"#$%&'()*+,-./0123456789:;<=>?@Safe35Safe350$Defines unit handling mode on parse.+Requires that the input string has a unit.'If unit is missing, use a default one.DThe unit is optional, a missing one means the value is not scaled.Defines available parse modes.6Exact parser mode. This mode is fully case-sensitive.Parses only units bigger than , respectively D (for binary units). This allows the parser to be case-insensitive.Parses binary units only. In this mode, both the exact and shortened forms are accepted (e.g. both "k" and "ki" will be converted into 1). Furthermore, the parsing is case-insensitive.Defines the formatting modes. $Formats the value using any SI unit. KFormats the value using supraunitary SI units only (which means that e.g. 0.0015 will remain as such instead of being formatted as 1m). 3Formats the value using units greater or equal to . %Formats the value using binary units. -Formats the value as it is, without scaling.'Formats the value using the given unit.=Typeclass for handling values that can be converted to/from A.Converts the value from RatioalThe unit type.,List of all SI units.-List of binary units..MList of units which are supraunitary (their multiplier is greater than one).//List of SI units which are greater or equal to .0The base for SI units.1The base for binary units.2SReturns the unit scaling "multiplier" (which can be either supra- or sub-unitary):unitMultiplier Micro 1 % 1000000unitMultiplier Mebi 1048576 % 13Returns the unit full name.4Returns the unit ASCII symbol.5'Returns the unit symbol, which for the  unit is not ASCII.BCScales a given value to be represented in the desired unit's scale.C8Scales a given value to units from a given unit's scale.63The available units range for various format modes.DGWhether a given value should be scaled (in auto-scaling modes) or not.7Computes the recommended unit for displaying a given value. The simple algorithm uses the first unit for which we have a supraunitary representation. In case we don't find any such value (e.g. for a zero value), then E is returned. For >, we always select the given unit, irrespective of the value.84Computes the scaled value and unit for a given value9OSimple helper to generate the full string representation of an integral value.:3Generates a final string representation of a value.FError message for unknown unit.;'Parses a symbol in the exact mode. See  for details.G Helper for <+ which only deals with upper-case strings.<Parses a binary symbol. See  for details.H Helper for =* which only deals with upper-case strings.=yParses the given symbol as one of the "big" units (kilo/kibi and above). This allows the parsing to be case-insensitive.>vParses a unit from a string. The exact parsing mode determines the rules for parsing and the range of possible units.?Main parse routine.I8Validate a parsed unit using a given valid options list.J@Parses a string unit depending on the various options and modes.@Low-level parse routine. Takes two function arguments which fix the initial and final conversion, a parse mode and the string to be parsed.K Converts a string to upper-case.O  !"#$%&'()*+,-./012345BC6D78 The desired The value to formatScaled value and optional unit9>Function to convert the (optional) unit into a string, e.g. 4 or 5The desired format modeThe value to showResulting string:The desired format mode.The value to showResulting stringF;G<H=>?The desired parse modeString to be parsed5Either a Left error message, or a Right parsed valueIJ@ Unit optionsOptional list of valid unitsThe desired parse modeString to be parsedKLMNOPA  !"#$%&'()*+,-./0123456789:;<=>?@A !"#$%&'()*+,./-012345 78:>?6;<=@9(  !"#$%&'()*+,-./012345BC6D789:F;G<H=>?IJ@KLMNOPQ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIDJKLMNOPQRSTUVWprefi_DdY6SZgcPvi6hg5WW3b2VsData.Prefix.UnitsData.Prefix.Units.Compat ParseOptions UnitRequired UnitDefault UnitOptional ParseMode ParseExact ParseKMGT ParseBinary FormatMode FormatSiAllFormatSiSupraunitary FormatSiKMGT FormatBinaryFormatUnscaled FormatFixedRationalConvertibleconvFromRationalUnitYoctoZeptoAttoFemtoPicoNanoMicroMilliCentiDeciDekaHectoKiloKibiMegaMebiGigaGibiTeraTebiPetaPebiExaExbiZettaYottasiUnits binaryUnitssiSupraunitarysiKMGTsiBase binaryBaseunitMultiplierunitName unitSymbol fancySymbol unitRangerecommendedUnit formatValue showValueWith showValueparseExactSymbolparseBinarySymbolparseKMGTSymbol parseSymbol parseValue parseGenericbaseGHC.RealRational scaleToUnit scaleFromUnit shouldScaleGHC.BaseNothing unknownUnithelperParseBinaryhelperParseKMGT validUnit processUnitupperSym$fRationalConvertibleRatio$fRationalConvertibleDouble$fRationalConvertibleFloat$fRationalConvertibleInteger$fRationalConvertibleInt