!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde f g h i j k l m n o p q r s t u v w x y z { | } ~  None!"TOInclude this function when your setup doesn't contain any extra functionality.Modifies the given record of hooks by adding functionality that creates a package info module for each component of the cabal package.4This function is intended for usage in more complex Setup.hsU scripts. If your setup doesn't contain any other function you can just import the  function from this module.The modules are created in the autogen! build directory where also the Path_Q module is created by cabal's simple build setup. This is usually the directory ./dist/build/autogen.1For a library component the module is named just PkgInfo0. For all other components the module is named PkgInfo_COMPONENT_NAME where COMPONENT_NAME# is the name of the component with - characters replaced by _.AUseful operators for defining functions in an applicative context!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafe@T[$This operator is an alternative for x with a higher precedence. It is suitable for usage within applicative style code without the need to add parenthesis.$This operator is a UTF-8 version of  which is an alternative for x with a higher precedence. It is suitable for usage within applicative style code without the need to add parenthesis.1The hex value of the UTF-8 character is 0x00d7. In VIM type:  Ctrl-V u 00d7nYou may also define a key binding by adding something like the following line to your vim configuration file: iabbrev <buffer> >< 0Functional composition for applicative functors.LFunctional composition for applicative functors with its arguments flipped.XApplicative functional composition between a pure function and an applicative function.sApplicative functional composition between a pure function and an applicative function with its arguments flipped.0Functional composition for applicative functors.This is a rather popular operator. Due to conflicts (for instance with the lens package) it may have to be imported qualified. iFor people who like nicely aligned code and do not mind messing with editor key-maps: here a version of  that uses a unicode symbol1The hex value of the UTF-8 character " is 0x2299.A convenient VIM key-map is: iabbrev <buffer> ../ "    5544444 4 Configuration of Optional Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone 9:;@T[ Command line parser for record  valuesExample: edata Setting = Setting { _setA "7 !Int , _setB "7 !String } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Setting) defaultSetting "7 Setting defaultSetting = Setting { _setA = 0 , _setB = 1 } instance ToJSON Setting where toJSON setting = object [ "a" .= _setA setting , "b" .= _setB setting ] instance FromJSON (Setting ! Setting) where parseJSON = withObject "Setting" $ \o ! id <$< setA ..: "a" % o <*< setB ..: "b" % o instance FromJSON Setting where parseJSON v = parseJSON v <*> pure defaultSetting pSetting "7 MParser Setting pSetting = id <$< setA .:: option auto % short 'a' <> metavar "INT" <> help "set a" <*< setB .:: option auto % short 'b' <> metavar "INT" <> help "set b" -- | Use 'Setting' as 'Maybe' in a configuration: -- data Config = Config { _maybeSetting "7 !(Maybe Setting) } deriving (Show, Read, Eq, Ord, Typeable) $(makeLenses ''Config) defaultConfig "7 Config defaultConfig = Config { _maybeSetting = defaultSetting } instance ToJSON Config where toJSON config = object [ "setting" .= maybeSetting ] instance FromJSON (Config ! Config) where parseJSON = withObject "Config" $ \o ! id <$< maybeSetting %.: "setting" % o pConfig "7 MParser Config pConfig = id <$< maybeSetting %:: (maybeOption defaultSetting <$> pEnableSetting <*> pSetting) where pEnableSetting = boolOption % long "setting-enable" <> value False <> help "Enable configuration flags for setting" 4default value that is used if base configuration is Iwhether to enable this parser or not (usually is a boolean option parser):update function (usually given as applicative 'MParser a')Uthe base value that is updated (usually the result of parsing the configuration file)    5Internal utilities of the configuration-tools package&Copyright 2014-2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafe:@OT KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.KThis is the same type as the type from the lens library with the same name.ZIn case it is already import from the lens package this should be hidden from the import.    11)Copyright 2014 AlephCloud Systems, Inc.MIT Lars Kuhtz <lars@alephcloud.com> experimentalSafe:@OT[ 'A validation function. The type in the  is excpected to be a # structure for collecting warnings..Validates that a value is an HTTP or HTTPS URL%Validates that a value is an HTTP URL&Validates that a value is an HTTPS URL>Validates that a value is an URI without a fragment identifier GValidates that a value is an absolute URI without a fragment identifier!OValidates that a value is an absolute URI with an optional fragment identifier/WValidates if the given executable name can be found in the system and can be executed.0(Validate that the input is a config file$=configuration property name that is used in the error message=configuration property name that is used in the error message=configuration property name that is used in the error message=configuration property name that is used in the error message =configuration property name that is used in the error message!=configuration property name that is used in the error message"=configuration property name that is used in the error message#=configuration property name that is used in the error message$=configuration property name that is used in the error message%=configuration property name that is used in the error message&=configuration property name that is used in the error message#exact length of the validated value'=configuration property name that is used in the error message%maximum length of the validated value(=configuration property name that is used in the error message%minimum length of the validated value)=configuration property name that is used in the error message%minimum length of the validated value%maximum length of the validated value*=configuration property name that is used in the error message+=configuration property name that is used in the error message,=configuration property name that is used in the error message-=configuration property name that is used in the error message=configuration property name that is used in the error message.=configuration property name that is used in the error message/=configuration property name that is used in the error message01=configuration property name that is used in the error message2=configuration property name that is used in the error message3=configuration property name that is used in the error messageexpected value4=configuration property name that is used in the error message5=configuration property name that is used in the error message6=configuration property name that is used in the error message7=configuration property name that is used in the error message8=configuration property name that is used in the error message9=configuration property name that is used in the error message0a strict upper bound for the configuration value:=configuration property name that is used in the error message)a upper bound for the configuration value;=configuration property name that is used in the error message0a strict lower bound for the configuration value<=configuration property name that is used in the error message)a lower bound for the configuration value==configuration property name that is used in the error message+the valid range for the configuration value# !"#$%&'()*+,-./0123456789:;<=# !"#$%&(')*+,-/.0123456789:;<=$ !"#$%&'()*+,-./0123456789:;<=/Command Line Option Parsing with Default Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalSafe@OT[>:Type of option parsers that yield a modification function.?JAn operator for applying a setter to an option parser that yields a value.Example usage: "data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor  ! (String !  String) ! Auth !  Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) pAuth "7 MParser Auth pAuth = id <$< user .:: strOption long "user" " short 'u' " help "user name" <*< pwd .:: strOption long "pwd" " help "password for user"@[An operator for applying a setter to an option parser that yields a modification function.Example usage: data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor  ! (Auth !  Auth) ! HttpURL !  HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor  ! (String !  String) ! HttpURL !  HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor  ! (String !  String) ! HttpURL !  HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) pHttpURL "7 MParser HttpURL pHttpURL = id <$< auth %:: pAuth <*< domain .:: strOption long "domain" " short 'd' " help "HTTP domain"BThe B is an alternative to .Using q with command line parsers that overwrite settings from a configuration file is problematic: the absence of the B is interpreted as setting the respective configuration value to . So there is no way to specify on the command line that the value from the configuration file shall be used. Some command line UIs use two different options for those values, for instance --enable-feature and --disable-feature]. This option instead expects a Boolean value. Beside that it behaves like any other option.CAn alternative syntax for B for options with long names.Instead of taking a boolean argument the presence of the option acts as a switch to set the respective configuration setting to >. If the option is not present the setting is left unchanged./In addition for long option names a respective  unset flag' is provided. For instance for a flag  --verbose there will also be a flag  --no-verbose.<This can still be used with short option names only, but no  unset flag would be provided.DMAn option parser for flags that are enabled via the flag name prefixed with  --enable-' and disabled via the flag name prefix  --disable-. The prefixes are applied to all long option names. Short option names are parsed unchanged and and cause the flag to be enabled.HThis resembles the style of flags that is used for instances with Cabal. >?@ABCDEF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv>?@ABCDEF >?@ABCDEF >?@ABCDEF?5@5Configuration of Monoids!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone9;@IT[GxUpdate a value by appending on the right. Under normal circumstances you'll never use this type directly but only its w instance. See the I for an example.HwUpdate a value by appending on the left. Under normal circumstances you'll never use this type directly but only its w instance. See the I for an example.I(Update a value by appending on the left. #newtype RoutingTable = RoutingTable { _routingTableMap "7 HashMap T.Text T.Text } $(makeLenses ''RoutingTable) instance FromJSON (RoutingTable ! RoutingTable) where parseJSON = withObject "RoutingTable" $ \o ! id <$< routingTableMap . from leftMonoidalUpdate %.: "route_map" % oJThis is the same as from leftMonoidalUpdate) but doesn't depend on the lens Library.K(Update a value by appending on the left. newtype RoutingTable = RoutingTable { _routingTableMap "7 HashMap T.Text T.Text } $(makeLenses ''RoutingTable) pRoutingTable "7 MParser RoutingTable pRoutingTable = routingTableMap %:: pLeftMonoidalUpdate pRoute where pRoute = option (eitherReader readRoute) % long "route" <> help "add a route to the routing table; the APIROUTE part must not contain a colon character" <> metavar "APIROUTE:APIURL" readRoute s = case break (== ':') s of (a,':':b) ! fmapL T.unpack $ do validateNonEmpty "APIROUTE" a validateHttpOrHttpsUrl "APIURL" b return $ HM.singleton (T.pack a) (T.pack b) _ ! Left "missing colon between APIROUTE and APIURL" fmapL f = either (Left . f) RightL.Update a value by appending on the right. See I for an usage example.MThis is the same as from rightMonoidalUpdate) but doesn't depend on the lens Library.N.Update a value by appending on the right. See K for an usage example.GxyHz{IJKLMNOPGHIJKLMNHIJKGLMN GxyHz{IJKLMNOP#HTTPS certificate validation policy!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone0@T[S The Haskell tlsR library provides only limited means for providing user friendly error messages. In particular we'd like to provide the user with fingerprints of the reject certificate for self-signed certificates. Also we want to provide the user with some guidance what a particular failure may indicate with respect to security of the connection.Here we employ a hackY for better error handling: Based on the assumption that we initialize a new connection Manager and also a new certificate cache for each request, we write the certificate that is received from the server in the TLS handshake to an |z. If the handshakes fails later on because the certificate is rejected we can recover the rejected certificate from the |.What we really want are exceptions that can be consumed programatically. In particular exceptions should include rejected certificates.Wdisable certificate validationX2a whitelist for services with trusted certificates]@Make an HTTP request with a given certificate validation policy.:NOTE that the HTTP request is strictly loaded into memory.NOTE that this implementation opens a new TCP connection for each single request. HTTPS certificates validation results are not cached between different requests.}The usage of the certVar parameter is not thread-safe!VFIXME We could make this thread-safe by using a cache for "unvalidated" certificates.STUVWXYZ[\#prefix for the command line options]HTTP or HTTPS URL^~}_` STUVWXYZ[\]^ UVWXYZ[\]^ST STUVWXYZ[\]^~}_` 2Parsing of Configuration Files with Default Values!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone 0:@OT[eAn internalc type for the meta configuration that specifies how the configuration files are loaded and parsed.lA JSON # parser for a property of a given - that updates a setter with the parsed value. data Auth = Auth { _userId "7 !Int , _pwd "7 !String } userId "7 Functor  ! (Int !  Int) ! Auth !  Auth userId f s = (\u ! s { _userId = u }) <$> f (_userId s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< setProperty user "user" p o <*< setProperty pwd "pwd" parseJSON o where p = withText "user" $ \case "alice" ! pure (0 "7 Int) "bob" ! pure 1 e ! fail $ "unrecognized user " " emA variant of the l that uses the default  method from the wa instance to parse the value of the property. Its usage pattern mimics the usage pattern of the ! operator from the aeson library. data Auth = Auth { _user "7 !String , _pwd "7 !String } user "7 Functor  ! (String !  String) ! Auth !  Auth user f s = (\u ! s { _user = u }) <$> f (_user s) pwd "7 Functor  ! (String !  String) ! Auth !  Auth pwd f s = (\p ! s { _pwd = p }) <$> f (_pwd s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''Auth) instance FromJSON (Auth ! Auth) where parseJSON = withObject "Auth" $ \o ! id <$< user ..: "user" o <*< pwd ..: "pwd" onBA JSON parser for a function that modifies a property of a given 0 and updates a setter with the parsed function. data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor  ! (Auth !  Auth) ! HttpURL !  HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor  ! (String !  String) ! HttpURL !  HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor  ! (String !  String) ! HttpURL !  HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) instance FromJSON (HttpURL ! HttpURL) where parseJSON = withObject "HttpURL" $ \o ! id <$< auth %.: "auth" o <*< domain ..: "domain" oo A variant of n that used the wA instance for the update function. It mimics the aeson operator E. It creates a parser that modifies a setter with a parsed function. data HttpURL = HttpURL { _auth "7 !Auth , _domain "7 !String } auth "7 Functor  ! (Auth !  Auth) ! HttpURL !  HttpURL auth f s = (\u ! s { _auth = u }) <$> f (_auth s) domain "7 Functor  ! (String !  String) ! HttpURL !  HttpURL domain f s = (\u ! s { _domain = u }) <$> f (_domain s) path "7 Functor  ! (String !  String) ! HttpURL !  HttpURL path f s = (\u ! s { _path = u }) <$> f (_path s) -- or with lenses and TemplateHaskell just: -- $(makeLenses ''HttpURL) instance FromJSON (HttpURL ! HttpURL) where parseJSON = withObject "HttpURL" $ \o ! id <$< auth %.: "auth" o <*< domain ..: "domain" opThis operator requires that a value is explicitly provided in a configuration file, thus preventing the default value from being used. Otherwise this operator does the same as '(..:)'.efghijkl4a lens into the target that is updated by the parserthe JSON property name the JSON 7 parser that is used to parse the value of the propertythe parsed JSON  mnopqrst|wefghijklmnopqrstlmpnohijkkefgqrst efghijkklmnopqrstm6o6 .Internal Tools for Parsing Configuration Files!Copyright 2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone *05:@T[Defined in RFC 4627{|}~default configuration value list of configuration file paths file path file pathvalue of an HTTP  Content-Type headerURL {~|} {|}~ {|}~ "Utilities for Configuring Programs&Copyright 2014-2015 PivotCloud, Inc.MIT!Lars Kuhtz <lkuhtz@pivotmail.com> experimentalNone !"0:@OT3Information about the cabal package. The format is: C(info message, detailed info message, version string, license text)See the documentation of Configuration.Utils.Setupr for a way how to generate this information automatically from the package description during the build process.An internalw data type that is used during configuration parsing to represent the overall application configuration which includes the user\ configuration, which is actual configuration value that is given to the application andthe metaI configuration, which are all settings that determine how the actual user$ configuration is loaded and parsed. NOTE that metak configuration settings can only be provided via command line options but not through configuration files.Program Description Help header Help footer options parser for configurationdefault configurationa validation function. The  result is interpreted as a  structure of warnings.fa list of configuration files that are loaded in order before any command line argument is evaluated.[A newtype wrapper around a validation function. The only purpose of this type is to avoid ImpredicativeTypes# when storing the function in the  record.Program Description Help header Help footer Options parser for configurationDefault configurationValidation FunctionThe  result is interpreted as a  structure of warnings.\Configuration files that are loaded in order before any command line argument is evaluated.& for simultaneous query and update of  and &. This supports to change the type of  with  and .Smart constructor for . and  are set to . The function  is set to const (return [])Smart constructor for . and  are set to ._A flag that indicates that the application should output the effective configuration and exit.The eW collects all parameters that determine how configuration files are loaded and parsed.A list of configuration file locations. Configuration file locations are set either statically in the code or are provided dynamically on the command line via  --config-file options.The user configuration. During parsing this is represented as an update function that yields a configuration value when applied to a default value.This function parsers all command line options: e? options that determine how configuration files are loaded. ConfigFiles options are all  --config-file options.Other meta options, such as --print-config.Options for the actual user  configuration. The user configuration is represented as an update function that yields a configuration value when applied to an default value.Run an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cSParse the given file path as a (partial) configuration in YAML or JSON format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit.)As long as the package wasn't build with -f-remote-configsl the following two options are available. They affect how configuration files are loaded from remote URLs. "--config-https-insecure=true|falseMBypass certificate validation for all HTTPS connections to all services.3--config-https-allow-cert=HOSTNAME:PORT:FINGERPRINTIUnconditionally trust the certificate for connecting to the service.Run an IO action with a configuration that is obtained by updating the given default configuration the values defined via command line arguments.eIn addition to the options defined by the given options parser the following options are recognized: --config-file, -cSParse the given file path as a (partial) configuration in YAML or JSON format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit. --version, -v.Print the version of the application and exit. --info, -i8Print a short info message for the application and exit. --long-info;Print a detailed info message for the application and exit. --license:Print the text of the license of the application and exit.)As long as the package wasn't build with -f-remote-configsl the following two options are available. They affect how configuration files are loaded from remote URLs. "--config-https-insecure=true|falseMBypass certificate validation for all HTTPS connections to all services.3--config-https-allow-cert=HOSTNAME:PORT:FINGERPRINTIUnconditionally trust the certificate for connecting to the service.Internal main function!Parse the command line arguments.IAny warnings from the configuration function are discarded. The options --print-config and --help are just ignored.xValidates a configuration value. Throws an user error if there is an error. If there are warnings they are printed to .*program description-parser for updating the default configurationdefault configurationprogram info value; use # to construct a value of this typeRcomputation that is given the configuration that is parsed from the command line.program info value; use # to construct a value of this typeRcomputation that is given the configuration that is parsed from the command line.:Program Info value which may include a validation function^Maybe a package info parser. This parser is run only for its side effects. It is supposed to  interceptM the parsing process and execute any implied action (showing help messages).program info value; use # to construct a value of this typeRcomputation that is given the configuration that is parsed from the command line.%program name (used in error messages)program info value; use # to construct a value of this typecommand line argumentsBw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv >?@ABCDEFGHIJKLMNefghijklmnopqrst None !"9:;@T>We restrict services to use either HTTP or HTTPS but not both.bTLS can be turned off explicitely in the configuration file by setting the respective section to null. It can not be turned on or off via command line options. But once it is turned on the values for the certificate and key file can be changed by command line options.MIn order to make TLS optional this type should be used wrapped into a Maybe.This option parser does not allow to enable or disable usage of TLS. The option will have effect only when TLS usage is configured in the configuration file or the default configuration.eFIXME: print a warning and exit when one of these options is provided even though TLS is turned off.3This is used as default when wrapped into Maybe and the parsed value is not  andthe given default is not .)            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^__``abcdefghijklmn o o p q r s t u v w x y z { | } ~               \          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPOQORSTSUSVSWSXSYZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZgZhZiZjZkZlZmZnZoZoZpZqZrZsZtZuZvZwZxZxZyZzZzZ{Z|Z}Z~TU                                   !  " # $%0configuration-tools-0.3.0-ImqUTwebcDg3IrJuLq9v1CConfiguration.Utils.SetupConfiguration.Utils.OperatorsConfiguration.Utils.MaybeConfiguration.Utils.InternalConfiguration.Utils.ValidationConfiguration.Utils.CommandLineConfiguration.Utils.Monoid,Configuration.Utils.Internal.HttpsCertPolicyConfiguration.Utils.ConfigFile-Configuration.Utils.Internal.ConfigFileReaderConfiguration.UtilsConfiguration.Utils.HttpmainmkPkgInfoModules%×<*<>*><$<>$><.>⊙ maybeOption$fFromJSON(->)Iso'IsoLens'Lenslensoversetviewiso&<&>sshowexceptTerrorTfmapLConfigValidationvalidateHttpOrHttpsUrlvalidateHttpUrlvalidateHttpsUrl validateUrivalidateAbsoluteUrivalidateAbsoluteUriFragment validateIPv4 validateIPv6 validatePortvalidateNonEmptyvalidateLengthvalidateMaxLengthvalidateMinLengthvalidateMinMaxLengthvalidateFilePath validateFilevalidateFileReadablevalidateFileWritablevalidateDirectoryvalidateExecutablevalidateConfigFile validateFalse validateTrue validateBoolvalidateNonNegativevalidatePositivevalidateNonPositivevalidateNegativevalidateNonNull validateLessvalidateLessEqvalidateGreatervalidateGreaterEq validateRangeMParser.::%:: boolReader boolOption boolOption_enableDisableFlag fileOption eitherReadPRightMonoidalUpdateLeftMonoidalUpdateleftMonoidalUpdatefromLeftMonoidalUpdatepLeftMonoidalUpdaterightMonoidalUpdatefromRightMonoidalUpdatepRightMonoidalUpdate$fFromJSON(->)0$fMonoidLeftMonoidalUpdate$fMonoidRightMonoidalUpdateVerboseTlsExceptionHttpsCertPolicy_certPolicyInsecure_certPolicyHostFingerprintscertPolicyInsecurecertPolicyHostFingerprintsdefaultHttpsCertPolicypHttpsCertPolicysimpleHttpWithValidationPolicyhttpWithValidationPolicy$fExceptionVerboseTlsException$fShowVerboseTlsException$fShowHttpsCertPolicy$fEqHttpsCertPolicy$fEqVerboseTlsException$fOrdVerboseTlsExceptionConfigFilesConfig_cfcHttpsPolicy ConfigFileConfigFileRequiredConfigFileOptional getConfigFile setProperty..:updateProperty%.:!..:cfcHttpsPolicydefaultConfigFilesConfigpConfigFilesConfig dropAndUncaml$fShowConfigFile$fReadConfigFile$fEqConfigFile$fOrdConfigFile$fShowConfigFilesConfig$fEqConfigFilesConfigConfigFileFormatYamlJsonOtherparseConfigFilesreadConfigFile loadLocalisRemote yamlMimeType jsonMimeType contentType loadRemoterequestHeaders$fNFDataConfigFileFormat$fShowConfigFileFormat$fReadConfigFileFormat$fEqConfigFileFormat$fOrdConfigFileFormat$fEnumConfigFileFormat$fBoundedConfigFileFormat$fGenericConfigFileFormatPkgInfoProgramInfoValidate ProgramInfoConfigValidationFunctionrunConfigValidation piDescription piHelpHeader piHelpFooterpiOptionParserpiDefaultConfigurationpiValidateConfigurationpiConfigurationFiles%piOptionParserAndDefaultConfiguration programInfoprogramInfoValidaterunWithConfigurationrunWithPkgInfoConfigurationparseConfigurationHttpClientConfigurationHttpServiceConfigurationHttpServiceTLSConfiguration hstcCertFile hstcKeyFile"defaultHttpServiceTLSConfiguration#validateHttpServiceTLSConfigurationpHttpServiceTLSConfigurationhscHosthscPort hscUseTLSdefaultHttpServiceConfiguration validateHttpServiceConfigurationpHttpServiceConfigurationhccHosthccPort hccUseTLSdefaultHttpClientConfigurationvalidateHttpClientConfigurationpHttpClientConfigurationhttpService2clientConfiguration$fToJSONHttpClientConfiguration $fToJSONHttpServiceConfiguration#$fToJSONHttpServiceTLSConfiguration%$fFromJSONHttpServiceTLSConfiguration$fFromJSON(->)1!$fShowHttpServiceTLSConfiguration!$fReadHttpServiceTLSConfiguration$fEqHttpServiceTLSConfiguration $fOrdHttpServiceTLSConfiguration$fShowHttpServiceConfiguration$fReadHttpServiceConfiguration$fEqHttpServiceConfiguration$fOrdHttpServiceConfiguration$fShowHttpClientConfiguration$fReadHttpClientConfiguration$fEqHttpClientConfiguration$fOrdHttpClientConfigurationmkPkgInfoModulesPostConfpkgInfoModuleNamepkgInfoFileNametrimgetVCS getVcsOfDir unFlagName pkgInfoModuleupdatePkgInfoModulelicenseFilesTexthgInfogitInfo noVcsInfopkgIdWithLicensebaseGHC.Base$MaybeNothing mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Writer.Class MonadWriter Data.FoldableFoldablevalidateFileExecutable4optparse-applicative-0.14.0.0-L2yStfmbTkVERt5Xzu4EzaOptions.Applicative.Builderswitchghc-prim GHC.TypesFalseTrue<$ Applicativepure<*>*><*mappend Data.Functor<$> Alternativemanyempty<|>someControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConstliftA3liftA2liftA<**>Options.Applicative.Extra renderFailure parserFailureexecParserPuregetParseResulthandleParseResultcustomExecParser execParser hsubparserhelper defaultPrefsidmprefscolumns noBacktrackshowHelpOnEmptyshowHelpOnError disambiguate multiSuffixinfoforwardOptions noIntersperse failureCode progDescDocprogDesc footerDocfooter headerDocheader briefDescfullDescoption strOption infoOption abortOptionflag'flag strArgumentargument subparser completeraction completeWith commandGroupcommandstylehiddenmetavar noArgErrorhelpDochelp showDefaultshowDefaultWithvaluelongshortdisabled maybeReader eitherReaderstrautoInfoModPrefsMod%Options.Applicative.Builder.Completer bashCompleter listCompleterlistIOCompleter$Options.Applicative.Builder.Internalinternal OptionFields FlagFields CommandFieldsArgumentFieldsModOptions.Applicative.Types overFailure mkCompleter readerError readerAbort ParseErrorErrorMsgInfoMsg ShowHelpText UnknownError MissingErrorExpectsArgErrorUnexpectedError ParserInfo infoParser infoFullDesc infoProgDesc infoHeader infoFooterinfoFailureCode infoPolicy ParserPrefsprefMultiSuffixprefDisambiguateprefShowHelpOnErrorprefShowHelpOnEmpty prefBacktrack prefColumnsReadM CompleterCompletionResultexecCompletion ParserFailure execFailure ParserResultFailureCompletionInvokedOptions.Applicative.Help.Types ParserHelp helpErrorhelpSuggestions helpHeader helpUsagehelpBody helpFooter$aeson-1.2.1.0-Dx2pwtUlAerKquPxSacp4bData.Aeson.Types.FromJSONFromJSON_getRightMonoidalUpdate_getLeftMonoidalUpdate GHC.IORefIORef getSettingshandleTlsExceptionData.Aeson.Types.InternalValueObject parseJSON.: Data.AesoneitherDecodeStrict' eitherDecode'eitherDecodeStrict eitherDecode decodeStrict'decode' decodeStrictdecodeencodeData.Aeson.TypesfoldableData.Aeson.Types.ClassGToJSON GToEncodingData.Aeson.Types.ToJSON toEncoding2toJSON2 toEncoding1toJSON1genericLiftToEncodinggenericToEncodinggenericLiftToJSON genericToJSONToArgsNoToArgsTo1ArgsToJSONtoJSON toEncoding toJSONListtoEncodingListKeyValue.= ToJSONKey toJSONKey toJSONKeyListToJSONKeyFunction ToJSONKeyTextToJSONKeyValueToJSON1 liftToJSONliftToJSONListliftToEncodingliftToEncodingListToJSON2 liftToJSON2liftToJSONList2liftToEncoding2liftToEncodingList2Data.Aeson.Encoding.Internalpairs fromEncodingEncodingSeries.!=.:!.:?fromJSONwithBoolwithScientific withNumber withArraywithText withObject parseJSON2 parseJSON1genericLiftParseJSONgenericParseJSON GFromJSON gParseJSONFromArgs NoFromArgs From1Args parseJSONList FromJSONKey fromJSONKeyfromJSONKeyListFromJSONKeyFunctionFromJSONKeyCoerceFromJSONKeyTextFromJSONKeyTextParserFromJSONKeyValue FromJSON1 liftParseJSONliftParseJSONList FromJSON2liftParseJSON2liftParseJSONList2Data.Aeson.Parser.Internaljson'jsonData.Aeson.Types.GenericZeroOnedefaultOptionsobjectResultErrorSuccessArrayStringBoolNumberNull DotNetTimefromDotNetTimeConfigFileParserfileTypeAppConfiguration_piDescription _piHelpHeader _piHelpFooter_piOptionParser_piDefaultConfiguration_piValidateConfiguration Data.EitherRight_piConfigurationFiles printConfigconfigFilesConfig configFiles mainConfigpAppConfiguration runInternalvalidateConfigGHC.IO.Handle.FDstderr _printConfig_configFilesConfig _configFiles _mainConfigpPkgInfo mainOptions_hccHost_hccPort _hccUseTLS_hscHost_hscPort _hscInterface _hscUseTLS _hstcCertFile _hstcKeyFile hscInterface