G      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None"#.6K]h, Specialized version of 0 data type. This type alias is used in practice.DMonad for bidirectional Toml conversion. Contains pair of functions: How to read value of type a$ from immutable environment context r?How to store value of type a in stateful context w?In practice instead of r we will use some  Reader Toml and instead of w we will use  State Tomlb. This approach with the bunch of utility functions allows to have single description for from/to Toml conversion.?In practice this type will always be used in the following way: type  r w a =  r w a a Type parameter cE if fictional. Here some trick is used. This trick is implemented in  (http://hackage.haskell.org/package/codeccodec" and described in more details in  Khttps://blog.poisson.chat/posts/2016-10-12-bidirectional-serialization.htmlrelated blog post.Extract value of type a from monadic context r.Store value of type c inside monadic context w and returning value of type a+. Type of this function actually should be  a -> w ()- but with such type it's impossible to have  and other instances.This is an instance of  Profunctor for . But since there's no  Profunctor type class in base or package with no dependencies (and we don't want to bring extra dependencies) this instance is implemented as a single top-level function.Useful when you want to parse newtype/s. For example, if you had data type like this: Adata Example = Example { foo :: Bool , bar :: Text } ?toml bidirectional converter for this type will look like this: 2exampleT :: BiToml Example exampleT = Example  $ bool "foo" .= foo  * str "bar" .= bar 1Now if you change your time in the following way: mnewtype Email = Email { unEmail :: Text } data Example = Example { foo :: Bool , bar :: Email } -you need to patch your toml parser like this: 2exampleT :: BiToml Example exampleT = Example  $ bool "foo" .= foo  *) dimap unEmail Email (str "bar") .= bar #Operator to connect two operations: How to get field from object? How to write this field to toml?&In code this should be used like this: Qdata Foo = Foo { fooBar :: Int, fooBaz :: String } foo :: BiToml Foo foo = Foo  $ int "bar" .= fooBar  * str "baz" .= fooBaz Mapper for consumerMapper for producerSource  object5None "#%.6K]dh? Keys are equal  Keys don't have any common part. /The first key is the prefix for the second one./The second key is the prefix for the first one.Key have same prefix.+Data structure to represent table tree for toml.greatest common prefixvalue by key = prefixsuffixes of prefix%Map of layer names and corresponding s.Type synonym for .Key of value in  key = val9 pair. Represents as non-empty list of key components --  s. Key like site."google.com" is represented like /Key (Piece "site" :| [Piece "\"google.com\""]) 'Represents the key piece of some layer.# Creates a  of one key-value element.$ Creates a  of one key-value element.%)Inserts key-value element into the given .&)Inserts key-value element into the given .'#Looks up the value at a key in the .(#Looks up the value at a key in the .) Constructs  PrettyMap" structure from the given list of  and value pairs.*"Split a dot-separated string into . Empty string turns into a  with single element - empty `. This instance is not safe for now. Use carefully. If you try to use as a key string like this site."google.com"? you will have list of three components instead of desired two.  !"#$%&'()!#%'$&() !"   !None"#&'-.06CFKQSTV]h\y.Data type that holds expected vs. actual type.:Offset date-time: =odt1 = 1979-05-27T07:32:00Z odt2 = 1979-05-27T00:32:00-07:00 ;!Local date-time (without offset): =ldt1 = 1979-05-27T07:32:00 ldt2 = 1979-05-27T00:32:00.999999 <Local date (only day): ld1 = 1979-05-27 =Local time (time of the day): &lt1 = 07:32:00 lt2 = 00:32:00.999999 >Existential wrapper for G.@Untyped value of U1. You shouldn't use this type in your code. Use G instead.G Value in  key = value pair.HBoolean value: bool1 = true bool2 = false IInteger value: int1 = +99 int2 = 42 int3 = 0 int4 = -17 int5 = 5_349_221 hex1 = 0xDEADBEEF oct2 = 0o755 # useful for Unix file permissions bin1 = 0b11010110 JFloating point number: sflt1 = -3.1415 # fractional flt2 = 1e6 # exponent flt3 = 6.626e-34 # both flt4 = 9_224_617.445_991_228_313 K String value: 4key = "value" bare_key = "value" bare-key = "value" L!Date-time. See documentation for 9 type.MArray of values. According to TOML specification all values in array should have the same type. This is guaranteed statically with this type. farr1 = [ 1, 2, 3 ] arr2 = [ "red", "yellow", "green" ] arr3 = [ [ 1, 2 ], [3, 4, 5] ] arr4 = [ "all", strings, """are the same""", ''type''D] arr5 = [ [ 1, 2 ], ["a", "b", "c"] ] arr6 = [ 1, 2.0 ] # INVALID N Needed for GADT parameterizationU%Represents TOML configuration value. YReifies type of G into N2. Unfortunately, there's no way to guarante that Y will return t for object with type Value 't.ZExtract  from G.[Extract  from G.\Extract  from G.]Extract  from G.^Extract 9 from G._!Extract list of elements of type a from array.` Ensures that @"s represents type-safe version of toml.(9<:;=>?@FCBADEGMIJHKLNOPQRSTUVWXYZ[\]^_`(UVWXNOPQRSTGHIJKLM>?@ABCDEF9:;<=Z[\]^_Y`9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXNone "#.6FKT]hkm Converts U type into .For example, this  TOML { tomlPairs = HashMap.fromList [(Key "title", String "TOML example")] , tomlTables = HashMap.fromList [( TableId (NonEmpty.fromList ["example", "owner"]) , TOML { tomlPairs = HashMap.fromList [(Key "name", String Kowainik)] , tomlTables = mempty , tomlTableArrays = mempty } )] , tomlTableArrays = mempty } will be translated to this 1title = "TOML Example" [example.owner] name = Kowainik n Converts U into  with the given indent.1Returns pretty formatted key-value pairs of the U./Returns pretty formatted tables section of the U.n Number of spaces for indentationAccumulator for table namesGiven U Pretty resultmnmnNone"#.6K]hm+o(Pretty parse exception for parsing toml.qParses  as U object.opqopqopNone"#&'-.6<FKQV]ht6This data type describes how to convert value of type a into and from G.x Specialied  type alias for Toml monad. Keeps U( object either as environment or state.yMutable context for Toml conversion. This is w type variable in  data type.zImmutable environment for Toml conversion. This is r type variable in  data type.{&Type of exception for converting from Toml to user custom data type. No such key No such table$Expected type; TODO: add actual typeException during parsing|;Convert textual representation of toml into user data type.})Convert object to textual representation.~?General function to create bidirectional converters for values.Helper dimapper to turn  parser into parser for , Natural, , etc.Almost same as J. Useful when you want to have fields like this inside your configuration: tdata GhcVer = Ghc7103 | Ghc802 | Ghc822 | Ghc842 showGhcVer :: GhcVer -> Text parseGhcVer :: Text -> Maybe GhcVer <When you specify couple of functions of the following types: ,show :: a -> Text parse :: Text -> Maybe a they should satisfy property parse . show == Just7 if you want to use your converter for pretty-printing.$ parser for array element. Use with  parser.$ parser for array element. Use with  parser.$ parser for array element. Use with  parser.$ parser for array element. Use with  parser.<Parser for array element which is an array itself. Use with  parser.Parser for boolean values.Parser for integer values.Parser for integer values.Parser for floating values.Parser for string values.aParser for array of values. Takes converter for single array element and returns list of values.Bidirectional converter for  Maybe smth values.<Parser for tables. Use it when when you have nested objects.~Name of expected typeHow to convert from > to aConvert a to AnyvaleKey of the value!Convert from safe to unsafe valueParser for more type safe valueSource  objecttuvwxyz{|}~xzy{|}~tuvwtuvw{None"#.6K]h!tuvwxyz{|}~None"#.6K]hn  !"#$%&'()9<:;=>?@FCBADEGMIJHKLNOPQRSTUVWXYZ[\]^_`mnopqtuvwxyz{|}~       !"#$$%&&'()*+,-./0123456789:;<=>?@ABCDDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrsstuvwwxyz{|}~MN$tomland-0.2.0-8kChwvhUQdbCR0cgneG3Lo Toml.Bi.MonadToml.PrefixTree Toml.Type Toml.Printer Toml.ParserToml.Bi.CombinatorsToml.BiTomlBi BijectionbiReadbiWritedimap.=$fMonadBijection$fApplicativeBijection$fFunctorBijectionKeysDiffEqualNoPrefix FstIsPref SndIsPrefDiffdiffprefdiffFstdiffSnd PrefixTreeLeafBranch bCommonPrefbVal bPrefixMap PrefixMapPrefixKeyunKeyPieceunPiece:||singleTsingleinsertTinsertlookupTlookupfromList $fIsStringKey $fHashableKey $fShowPiece $fEqPiece $fOrdPiece$fHashablePiece$fIsStringPiece $fShowKey$fEqKey$fOrdKey $fGenericKey$fShowPrefixTree$fEqPrefixTree$fShowKeysDiff $fEqKeysDiffDateTimeZonedLocalDayHoursAnyValueUValueUBoolUIntUFloatUStringUDateUArrayValueBoolIntFloatStringDateArray ValueTypeTBoolTIntTFloatTStringTDateTArrayTOML tomlPairs tomlTables valueType matchBool matchInteger matchDouble matchText matchDate matchArray typeCheck $fEqDateTime $fEqValue $fEqAnyValue$fShowAnyValue$fShowTypeMismatchError $fEqValueType$fShowValueType$fShowDateTime $fShowTOML$fEqTOML$fEqTypeMismatchError $fShowValue prettyToml prettyTomlIndParseExceptionparse$fShowParseException$fEqParseExceptionValuervalFromvalToBiTomlStEnvDecodeExceptiondecodeencodebijectionMakerdimapNummdimapboolVintegerVdoubleVstrVarrVboolintegerintdoublestrarrayOfmaybePtable$fEqDecodeException$fShowDecodeExceptionbaseGHC.BaseMonadTypeMismatchErrorghc-prim GHC.Types integer-gmpGHC.Integer.TypeIntegerDouble#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalText typeExpected typeActualprettyKeyValue prettyTables KeyNotFound TableNotFound TypeMismatch ParseErrorWord