!Fh6v       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   None 13457;=V8 http-api-dataLenient parameters.  combinators always return  . http-api-dataParse value from HTTP API data.WARNING: Do not derive this using DeriveAnyClass3 as the generated instance will loop indefinitely. http-api-dataParse URL path piece. http-api-dataParse HTTP header value. http-api-dataParse query param value. http-api-dataConvert value to HTTP API data.WARNING: Do not derive this using DeriveAnyClass3 as the generated instance will loop indefinitely. http-api-dataConvert to URL path piece.  http-api-datacConvert to a URL path piece, making sure to encode any special chars. The default definition uses  ;, but this may be overriden with a more efficient version.  http-api-dataConvert to HTTP header value.  http-api-dataConvert to query param value.  http-api-data0Convert multiple values to a list of URL pieces.toUrlPieces [1, 2, 3] :: [Text] ["1","2","3"]  http-api-dataParse multiple URL pieces.6parseUrlPieces ["true", "false"] :: Either Text [Bool]Right [True,False]=parseUrlPieces ["123", "hello", "world"] :: Either Text [Int]CLeft "could not parse: `hello' (input does not start with a digit)" http-api-data<Convert multiple values to a list of query parameter values.LtoQueryParams [fromGregorian 2015 10 03, fromGregorian 2015 12 01] :: [Text]["2015-10-03","2015-12-01"] http-api-data Parse multiple query parameters.5parseQueryParams ["1", "2", "3"] :: Either Text [Int] Right [1,2,3]<parseQueryParams ["64", "128", "256"] :: Either Text [Word8]9Left "out of bounds: `256' (should be between 0 and 255)" http-api-dataParse URL path piece in a .$parseUrlPieceMaybe "12" :: Maybe IntJust 12 http-api-dataParse HTTP header value in a .&parseHeaderMaybe "hello" :: Maybe Text Just "hello" http-api-dataParse query param value in a .)parseQueryParamMaybe "true" :: Maybe Bool Just True http-api-dataDefault parsing error. http-api-dataConvert  parser into  # parser with default error message. http-api-data Lower case.Convert to URL piece using - instance. The result is always lower cased.showTextData True"true"CThis can be used as a default implementation for enumeration types:-data MyData = Foo | Bar | Baz deriving (Show)=instance ToHttpApiData MyData where toUrlPiece = showTextDatatoUrlPiece Foo"foo" http-api-dataLike , but returns . http-api-dataCase insensitive.NParse given text case insensitive and then parse the rest of the input using .<parseUrlPieceWithPrefix "Just " "just 10" :: Either Text IntRight 10:parseUrlPieceWithPrefix "Left " "left" :: Either Text BoolLeft "could not parse: `left'"This can be used to implement  for single field constructors:"data Foo = Foo Int deriving (Show)]instance FromHttpApiData Foo where parseUrlPiece s = Foo <$> parseUrlPieceWithPrefix "Foo " s(parseUrlPiece "foo 1" :: Either Text Foo Right (Foo 1) http-api-data>Parse given bytestring then parse the rest of the input using . data BasicAuthToken = BasicAuthToken Text deriving (Show) instance FromHttpApiData BasicAuthToken where parseHeader h = BasicAuthToken <$> parseHeaderWithPrefix "Basic " h parseQueryParam p = BasicAuthToken <$> parseQueryParam p NparseHeader "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" :: Either Text BasicAuthToken5Right (BasicAuthToken "QWxhZGRpbjpvcGVuIHNlc2FtZQ==") http-api-dataCase insensitive.NParse given text case insensitive and then parse the rest of the input using .6parseQueryParamWithPrefix "z" "z10" :: Either Text IntRight 10 http-api-dataCase insensitive.)Parse values case insensitively based on  instance./parseBoundedTextData "true" :: Either Text Bool Right True0parseBoundedTextData "FALSE" :: Either Text Bool Right FalseCThis can be used as a default implementation for enumeration types:<data MyData = Foo | Bar | Baz deriving (Show, Bounded, Enum)Jinstance FromHttpApiData MyData where parseUrlPiece = parseBoundedTextData)parseUrlPiece "foo" :: Either Text MyData Right Foo http-api-dataHLookup values based on a precalculated mapping of their representations. http-api-data7Parse values based on a precalculated mapping of their  representation.8parseBoundedEnumOf toUrlPiece "true" :: Either Text Bool Right TrueFor case sensitive parser see . http-api-dataCase insensitive.KParse values case insensitively based on a precalculated mapping of their  representations.:parseBoundedEnumOfI toUrlPiece "FALSE" :: Either Text Bool Right FalseFor case sensitive parser see . http-api-dataCase insensitive.)Parse values case insensitively based on  instance. Uses  to get possible values. http-api-dataCase insensitive.)Parse values case insensitively based on  instance. Uses   to get possible values.  http-api-dataParse values based on  instance. Uses   to get possible values.! http-api-dataParse URL piece using  instance.+Use for types which do not involve letters:,readTextData "1991-06-02" :: Either Text DayRight 1991-06-021This parser is case sensitive and will not match  in presence of letters:4readTextData (showTextData True) :: Either Text BoolLeft "could not parse: `true'"See ." http-api-dataRun  as HTTP API data parser.# http-api-dataRun 6 to parse bounded integral value with bounds checking./parseBounded decimal "256" :: Either Text Word89Left "out of bounds: `256' (should be between 0 and 255)"$ http-api-data*Convert to a URL-encoded path piece using . Notes: this function does not check if the result contains unescaped characters! This function can be used to override  B as a more efficient implementation when the resulting URL piece never has to be escaped.( http-api-dataXlet Right c = parseUrlPiece "SESSID=r2t5uvjq435r4q7ib3vtdjq120" :: Either Text SetCookie toUrlPiece c'"\"SESSID=r2t5uvjq435r4q7ib3vtdjq120\"") http-api-data,toUrlPiece (Left "err" :: Either String Int) "left err")toUrlPiece (Right 3 :: Either String Int) "right 3"* http-api-datatoUrlPiece (Just "Hello") "just Hello"6 http-api-data5toUrlPiece $ UTCTime (fromGregorian 2015 10 03) 864.5"2015-10-03T00:14:24.5Z"7 http-api-dataZtoUrlPiece $ ZonedTime (LocalTime (fromGregorian 2015 10 03) (TimeOfDay 14 55 51.001)) utc"2015-10-03T14:55:51.001+0000"8 http-api-dataJtoUrlPiece $ LocalTime (fromGregorian 2015 10 03) (TimeOfDay 14 55 21.687)"2015-10-03T14:55:21.687"9 http-api-data!toUrlPiece $ TimeOfDay 14 55 23.1 "14:55:23.1": http-api-data%toUrlPiece (fromGregorian 2015 10 03) "2015-10-03"L http-api-data!toUrlPiece (Version [1, 2, 3] [])"1.2.3"N http-api-data toUrlPiece ()"_"O http-api-dataJparseUrlPiece "SESSID=r2t5uvjq435r4q7ib3vtdjq120" :: Either Text SetCookieRight (SetCookie {setCookieName = "SESSID", setCookieValue = "r2t5uvjq435r4q7ib3vtdjq120", setCookiePath = Nothing, setCookieExpires = Nothing, setCookieMaxAge = Nothing, setCookieDomain = Nothing, setCookieHttpOnly = False, setCookieSecure = False, setCookieSameSite = Nothing})Q http-api-data<parseUrlPiece "Right 123" :: Either Text (Either String Int)Right (Right 123)R http-api-data3parseUrlPiece "Just 123" :: Either Text (Maybe Int)Right (Just 123)[ http-api-data;parseUrlPiece "2015-10-03T00:14:24Z" :: Either Text UTCTimeRight 2015-10-03 00:14:24 UTC\ http-api-dataAparseUrlPiece "2015-10-03T14:55:01+0000" :: Either Text ZonedTimeRight 2015-10-03 14:55:01 +0000?parseQueryParam "2016-12-31T01:00:00Z" :: Either Text ZonedTimeRight 2016-12-31 01:00:00 +0000] http-api-data<parseUrlPiece "2015-10-03T14:55:01" :: Either Text LocalTimeRight 2015-10-03 14:55:01^ http-api-data5parseUrlPiece "14:55:01.333" :: Either Text TimeOfDayRight 14:55:01.333_ http-api-data*toGregorian <$> parseUrlPiece "2016-12-01"Right (2016,12,1)s http-api-data Parsing a ' value is always an error, considering % as a data type with no constructors.t http-api-data%showVersion <$> parseUrlPiece "1.2.3" Right "1.2.3"v http-api-data#parseUrlPiece "_" :: Either Text ()Right ()'   !"#$%&'   !"#$%&None+,-67;<=>?FKSTV2" http-api-data-based deriving options for  and ."A common use case for non-default + is to strip a prefix off of field labels: Vdata Project = Project { projectName :: String , projectSize :: Int } deriving (, ) myOptions ::  myOptions =  {  =  toLower .  ( "project") } instance  Project where  =  myOptions instance  Project where  =  myOptions RurlEncodeAsFormStable Project { projectName = "http-api-data", projectSize = 172 }"name=http-api-data&size=172"DurlDecodeAsForm "name=http-api-data&size=172" :: Either Text ProjectBRight (Project {projectName = "http-api-data", projectSize = 172}) http-api-dataXFunction applied to field labels. Handy for removing common record prefixes for example. http-api-dataParse  into a value.An example type and instance: Ddata Person = Person { name :: String , age :: Int } instance  Person where  f = Person   "name" f   "age" f Instead of manually writing < instances you can use a default generic implementation of .To do that, simply add  deriving ( clause to your datatype and declare a ; instance for your datatype without giving definition for .?For instance, the previous example can be simplified into this: Fdata Person = Person { name :: String , age :: Int } deriving ( ) instance  Person The default implementation of  is -. It only works for records and it will use  for each field's value. http-api-dataParse  into a value. http-api-dataConvert a value into .An example type and instance: f{-# LANGUAGE OverloadedLists #-} data Person = Person { name :: String , age :: Int } instance  Person where  person = [ ("name",   (name person)) , ("age",   (age person)) ] Instead of manually writing < instances you can use a default generic implementation of .To do that, simply add  deriving ( clause to your datatype and declare a ; instance for your datatype without giving definition for .?For instance, the previous example can be simplified into this: Fdata Person = Person { name :: String , age :: Int } deriving ( ) instance  Person The default implementation of  is . http-api-dataConvert a value into . http-api-data,The contents of a form, not yet URL-encoded. can be URL-encoded with  and URL-decoded with . http-api-data6Typeclass for types that can be parsed from keys of a . This is the reverse of . http-api-dataParse a key of a . http-api-data2Typeclass for types that can be used as keys in a -like container (like ). http-api-dataRender a key for a . http-api-dataA stable version of . http-api-data1Convert a list of entries groupped by key into a .=fromEntriesByKey [("name",["Nick"]),("color",["red","blue"])];fromList [("color","red"),("color","blue"),("name","Nick")] http-api-dataA -based implementation of /. This is used as a default implementation in .RNote that this only works for records (i.e. product data types with named fields): Fdata Person = Person { name :: String , age :: Int } deriving () =In this implementation each field's value gets encoded using  ". Two field types are exceptions:for values of type  a an entry is added to the  only when it is  x and the encoded value is   x;  values are omitted from the ;for values of type [a] (except [ ]g) an entry is added for every item in the list; if the list is empty no entries are added to the ;Here's an example: ldata Post = Post { title :: String , subtitle :: Maybe String , comments :: [String] } deriving (,  ) instance  Post burlEncodeAsFormStable Post { title = "Test", subtitle = Nothing, comments = ["Nice post!", "+1"] }2"comments=Nice%20post%21&comments=%2B1&title=Test" http-api-dataParse a ( into a list of entries groupped by key.w_NOTE:_ this conversion is unstable and may result in different key order (but not values). For a stable encoding see . http-api-dataParse a ( into a list of entries groupped by key.mtoEntriesByKeyStable [("name", "Nick"), ("color", "red"), ("color", "white")] :: Either Text [(Text, [Text])]3Right [("color",["red","white"]),("name",["Nick"])],For an unstable (but faster) conversion see . http-api-dataA -based implementation of /. This is used as a default implementation in .RNote that this only works for records (i.e. product data types with named fields): Fdata Person = Person { name :: String , age :: Int } deriving () =In this implementation each field's value gets decoded using ". Two field types are exceptions:for values of type  a& an entry is parsed if present in the  and the is decoded with #; if no entry is present result is ;for values of type [a] (except [ ]<) all entries are parsed to produce a list of parsed values;Here's an example: ldata Post = Post { title :: String , subtitle :: Maybe String , comments :: [String] } deriving (,  ) instance  Post VurlDecodeAsForm "comments=Nice%20post%21&comments=%2B1&title=Test" :: Either Text PostQRight (Post {title = "Test", subtitle = Nothing, comments = ["Nice post!","+1"]}) http-api-data Encode a  to an !application/x-www-form-urlencoded !.u_NOTE:_ this encoding is unstable and may result in different key order (but not values). For a stable encoding see . http-api-data Encode a  to an !application/x-www-form-urlencoded !.*For an unstable (but faster) encoding see .Key-value pairs get encoded to  key=value and separated by &:>urlEncodeFormStable [("name", "Julian"), ("lastname", "Arni")]"lastname=Arni&name=Julian"+Keys with empty values get encoded to just key (without the = sign):%urlEncodeFormStable [("is_test", "")] "is_test"Empty keys are allowed too:$urlEncodeFormStable [("", "foobar")] "=foobar"YHowever, if both key and value are empty, the key-value pair is ignored. (This prevents  .  from being a true isomorphism).urlEncodeFormStable [("", "")]""Everything is escaped with escapeURIString  isUnreserved:0urlEncodeFormStable [("fullname", "Andres Lh")]"fullname=Andres%20L%C3%B6h" http-api-data'Encode a list of key-value pairs to an !application/x-www-form-urlencoded !. See also . http-api-data Decode an !application/x-www-form-urlencoded ! to a .%Key-value pairs get decoded normally:(urlDecodeForm "name=Greg&lastname=Weber"7Right (fromList [("lastname","Weber"),("name","Greg")]);Keys with no values get decoded to pairs with empty values.urlDecodeForm "is_test"!Right (fromList [("is_test","")])Empty keys are allowed:urlDecodeForm "=foobar" Right (fromList [("","foobar")]),The empty string gets decoded into an empty :urlDecodeForm ""Right (fromList [])Everything is un-escaped with unEscapeString:*urlDecodeForm "fullname=Andres%20L%C3%B6h"/Right (fromList [("fullname","Andres L\246h")])-Improperly formed strings result in an error:(urlDecodeForm "this=has=too=many=equals"1Left "not a valid pair: this=has=too=many=equals" http-api-data Decode an !application/x-www-form-urlencoded ! to a list of key-value pairs. See also . http-api-data/This is a convenience function for decoding a !application/x-www-form-urlencoded !1 directly to a datatype that has an instance of .This is effectively  " .:urlDecodeAsForm "name=Dennis&age=22" :: Either Text Person*Right (Person {name = "Dennis", age = 22}) http-api-dataMThis is a convenience function for encoding a datatype that has instance of  directly to a !application/x-www-form-urlencoded !.This is effectively  . .u_NOTE:_ this encoding is unstable and may result in different key order (but not values). For a stable encoding see . http-api-dataMThis is a convenience function for encoding a datatype that has instance of  directly to a !application/x-www-form-urlencoded !.This is effectively  . .8urlEncodeAsFormStable Person {name = "Dennis", age = 22}"age=22&name=Dennis" http-api-data2Find all values corresponding to a given key in a .lookupAll "name" [][]#lookupAll "name" [("name", "Oleg")]["Oleg"]6lookupAll "name" [("name", "Oleg"), ("name", "David")]["Oleg","David"] http-api-dataJLookup an optional value for a key. Fail if there is more than one value.lookupMaybe "name" [] Right Nothing%lookupMaybe "name" [("name", "Oleg")]Right (Just "Oleg")8lookupMaybe "name" [("name", "Oleg"), ("name", "David")]Left "Duplicate key \"name\"" http-api-dataOLookup a unique value for a key. Fail if there is zero or more than one value.lookupUnique "name" []"Left "Could not find key \"name\""&lookupUnique "name" [("name", "Oleg")] Right "Oleg"9lookupUnique "name" [("name", "Oleg"), ("name", "David")]Left "Duplicate key \"name\"" http-api-data'Lookup all values for a given key in a  and parse them with .(parseAll "age" [] :: Either Text [Word8]Right []FparseAll "age" [("age", "8"), ("age", "seven")] :: Either Text [Word8]CLeft "could not parse: `seven' (input does not start with a digit)"DparseAll "age" [("age", "8"), ("age", "777")] :: Either Text [Word8]9Left "out of bounds: `777' (should be between 0 and 255)"DparseAll "age" [("age", "12"), ("age", "25")] :: Either Text [Word8] Right [12,25] http-api-data;Lookup an optional value for a given key and parse it with 4. Fail if there is more than one value for the key.0parseMaybe "age" [] :: Either Text (Maybe Word8) Right NothingLparseMaybe "age" [("age", "12"), ("age", "25")] :: Either Text (Maybe Word8)Left "Duplicate key \"age\""@parseMaybe "age" [("age", "seven")] :: Either Text (Maybe Word8)CLeft "could not parse: `seven' (input does not start with a digit)">parseMaybe "age" [("age", "777")] :: Either Text (Maybe Word8)9Left "out of bounds: `777' (should be between 0 and 255)"<parseMaybe "age" [("age", "7")] :: Either Text (Maybe Word8)Right (Just 7) http-api-data8Lookup a unique value for a given key and parse it with <. Fail if there is zero or more than one value for the key.)parseUnique "age" [] :: Either Text Word8!Left "Could not find key \"age\""EparseUnique "age" [("age", "12"), ("age", "25")] :: Either Text Word8Left "Duplicate key \"age\""9parseUnique "age" [("age", "seven")] :: Either Text Word8CLeft "could not parse: `seven' (input does not start with a digit)"7parseUnique "age" [("age", "777")] :: Either Text Word89Left "out of bounds: `777' (should be between 0 and 255)"5parseUnique "age" [("age", "7")] :: Either Text Word8Right 7 http-api-dataDefault encoding .  {  = id }  http-api-data_NOTE:_ b is unstable and may result in different key order (but not values). For a stable conversion use . http-api-data[_NOTE:_ this conversion is unstable and may result in different key order (but not values).++None44##None5  !   !#      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            ! "# $ %& '( )* +,-. /0 1 2345678 9:;)http-api-data-0.3.9-AQNJEXum3A9NXlFjiyFbjWeb.Internal.HttpApiDataWeb.Internal.FormUrlEncodedWeb.FormUrlEncodedWeb.HttpApiData LenientDatagetLenientDataFromHttpApiData parseUrlPiece parseHeaderparseQueryParam ToHttpApiData toUrlPiecetoEncodedUrlPiecetoHeader toQueryParam toUrlPiecesparseUrlPieces toQueryParamsparseQueryParamsparseUrlPieceMaybeparseHeaderMaybeparseQueryParamMaybedefaultParseErrorparseMaybeTextData showTextDatashowtparseUrlPieceWithPrefixparseHeaderWithPrefixparseQueryParamWithPrefixparseBoundedTextDatalookupBoundedEnumOfparseBoundedEnumOfparseBoundedEnumOfIparseBoundedUrlPieceparseBoundedQueryParamparseBoundedHeader readTextData runReader parseBoundedunsafeToEncodedUrlPiecetimeToUrlPiecerunAtto$fToHttpApiDataUUID$fToHttpApiDataSetCookie$fToHttpApiDataEither$fToHttpApiDataMaybe$fToHttpApiDataLast$fToHttpApiDataFirst$fToHttpApiDataProduct$fToHttpApiDataSum$fToHttpApiDataDual$fToHttpApiDataAny$fToHttpApiDataAll$fToHttpApiDataText$fToHttpApiDataText0$fToHttpApiData[]$fToHttpApiDataNominalDiffTime$fToHttpApiDataUTCTime$fToHttpApiDataZonedTime$fToHttpApiDataLocalTime$fToHttpApiDataTimeOfDay$fToHttpApiDataDay$fToHttpApiDataWord64$fToHttpApiDataWord32$fToHttpApiDataWord16$fToHttpApiDataWord8$fToHttpApiDataWord$fToHttpApiDataInteger$fToHttpApiDataInt64$fToHttpApiDataInt32$fToHttpApiDataInt16$fToHttpApiDataInt8$fToHttpApiDataInt$fToHttpApiDataFloat$fToHttpApiDataDouble$fToHttpApiDataOrdering$fToHttpApiDataBool$fToHttpApiDataNatural$fToHttpApiDataVoid$fToHttpApiDataVersion$fToHttpApiDataChar$fToHttpApiData()$fFromHttpApiDataSetCookie$fFromHttpApiDataUUID$fFromHttpApiDataEither$fFromHttpApiDataMaybe$fFromHttpApiDataLast$fFromHttpApiDataFirst$fFromHttpApiDataProduct$fFromHttpApiDataSum$fFromHttpApiDataDual$fFromHttpApiDataAny$fFromHttpApiDataAll $fFromHttpApiDataNominalDiffTime$fFromHttpApiDataUTCTime$fFromHttpApiDataZonedTime$fFromHttpApiDataLocalTime$fFromHttpApiDataTimeOfDay$fFromHttpApiDataDay$fFromHttpApiDataText$fFromHttpApiDataText0$fFromHttpApiData[]$fFromHttpApiDataWord64$fFromHttpApiDataWord32$fFromHttpApiDataWord16$fFromHttpApiDataWord8$fFromHttpApiDataWord$fFromHttpApiDataInteger$fFromHttpApiDataInt64$fFromHttpApiDataInt32$fFromHttpApiDataInt16$fFromHttpApiDataInt8$fFromHttpApiDataInt$fFromHttpApiDataFloat$fFromHttpApiDataDouble$fFromHttpApiDataOrdering$fFromHttpApiDataBool$fFromHttpApiDataNatural$fFromHttpApiDataVoid$fFromHttpApiDataVersion$fFromHttpApiDataChar$fFromHttpApiData()$fFromHttpApiDataLenientData$fEqLenientData$fOrdLenientData$fShowLenientData$fReadLenientData$fDataLenientData$fFunctorLenientData$fFoldableLenientData$fTraversableLenientData FormOptionsfieldLabelModifier GFromForm gFromFormFromFormfromFormGToFormgToForm NotSupportedProxy3ToFormtoFormFormunForm FromFormKey parseFormKey ToFormKey toFormKey toListStablefromEntriesByKey genericToFormtoEntriesByKeytoEntriesByKeyStablegenericFromForm urlEncodeFormurlEncodeFormStableurlEncodeParams urlDecodeFormurlDecodeParamsurlDecodeAsFormurlEncodeAsFormurlEncodeAsFormStable lookupAll lookupMaybe lookupUniqueparseAll parseMaybe parseUniquedefaultFormOptionssortOn$fToFormKeyNatural$fToFormKeyVoid$fToFormKeyProduct$fToFormKeySum$fToFormKeyDual$fToFormKeyAny$fToFormKeyAll$fToFormKeyText$fToFormKeyText0 $fToFormKey[]$fToFormKeyNominalDiffTime$fToFormKeyUTCTime$fToFormKeyZonedTime$fToFormKeyLocalTime$fToFormKeyDay$fToFormKeyWord64$fToFormKeyWord32$fToFormKeyWord16$fToFormKeyWord8$fToFormKeyWord$fToFormKeyInteger$fToFormKeyInt64$fToFormKeyInt32$fToFormKeyInt16$fToFormKeyInt8$fToFormKeyInt$fToFormKeyFloat$fToFormKeyDouble$fToFormKeyOrdering$fToFormKeyBool$fToFormKeyChar $fToFormKey()$fFromFormKeyNatural$fFromFormKeyVoid$fFromFormKeyProduct$fFromFormKeySum$fFromFormKeyDual$fFromFormKeyAny$fFromFormKeyAll$fFromFormKeyText$fFromFormKeyText0$fFromFormKey[]$fFromFormKeyNominalDiffTime$fFromFormKeyUTCTime$fFromFormKeyZonedTime$fFromFormKeyLocalTime$fFromFormKeyDay$fFromFormKeyWord64$fFromFormKeyWord32$fFromFormKeyWord16$fFromFormKeyWord8$fFromFormKeyWord$fFromFormKeyInteger$fFromFormKeyInt64$fFromFormKeyInt32$fFromFormKeyInt16$fFromFormKeyInt8$fFromFormKeyInt$fFromFormKeyFloat$fFromFormKeyDouble$fFromFormKeyOrdering$fFromFormKeyBool$fFromFormKeyChar$fFromFormKey() $fIsListForm $fShowForm$fGFromFormktM1$fGFromFormktM10$fGFromFormktM11$fGFromFormktM12$fGFromFormktM13$fGFromFormktM14$fGFromFormkt:*:$fGFromFormkt:+:$fFromFormIntMap$fFromFormHashMap $fFromFormMap $fFromForm[]$fFromFormForm $fGToFormktM1$fGToFormktM10$fGToFormktM11$fGToFormktM12$fGToFormktM13$fGToFormktM14$fGToFormkt:*:$fGToFormkt:+:$fToFormIntMap$fToFormHashMap $fToFormMap $fToForm[] $fToFormForm$fEqForm $fReadForm $fGenericForm$fSemigroupForm $fMonoidFormbase Data.EitherRight(http-types-0.12.1-CVeYXehbrw3Br6YeJckOG5Network.HTTP.Types.URIencodePathSegmentsRelativeGHC.BaseMaybeEither text-1.2.3.0Data.Text.InternalTextGHC.ShowShowshowGHC.ReadReadData.Text.ReadReader Data.VoidVoid GHC.GenericsGenericmapGHC.Listdrop Data.Foldablelength Data.Functor<$><*>containers-0.5.11.0Data.Map.InternalMapGHC.ExtstoListJustNothingghc-prim GHC.TypesCharbytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteString Control.Monad<=<