Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPNoneOInclude 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 _.QRSTUVWXYZ[\]QRSTUVWXYZ[\]None9HM^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.^_`abc^_`abc^_`abcNone 2349HM&3Information 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.dProgram Descriptione Help headerf Help footergKoptions parser for configuration (TODO consider using a typeclass for this)hdefault configurationia validation function. The j result is interpreted as a k structure of warnings.A newtype wrapper around a validation function. The only purpose of this type is to avoid ImpredicativeTypes when storing the function in the  record.'A validation function. The type in the l is excpected to be a k# structure for collecting warnings. :Type of option parsers that yield a modification function. $This operator is an alternative for m with a higher precedence which makes it suitable for usage within Applicative style funtors without the need to add parenthesis. $This operator is a UTF-8 version of   which is an alternative for m with a higher precedence which makes it suitable for usage within Applicative style funtors 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> ../ "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"A JSON n# parser for a property of a given o- 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 " " eA variant of the  that uses the default p method from the qa instance to parse the value of the property. Its usage pattern mimics the usage pattern of the r! 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" o A variant of the aeson operator rF that 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" oProgram Description Help header Help footerKoptions parser for configuration (TODO consider using a typeclass for this) default configuration!Validation FunctionThe j result is interpreted as a k structure of warnings."& for simultaneous query and update of  and  &. This supports to change the type of  with ` and a.#Smart constructor for . and  are set to s. The function ! is set to const (return [])$Smart constructor for . and  are set to s.t_A flag that indicates that the application should output the effective configuration and exit.u:The configuration value that is given to the application.%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, -cKParse the given file path as a (partial) configuration in YAML format.--print-config, -p>Print the final parsed configuration to standard out and exit. --help, -hPrint a help message and exit.vxValidates a configuration value. Throws an user error if there is an error. If there are warnings they are printed to w.&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, -cKParse the given file path as a (partial) configuration in YAML 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 lincense of the application and exit.'Commandline parser for record x 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"9yz{|}defghi~ 4a lens into the target that is updated by the parserthe JSON property name the JSON n7 parser that is used to parse the value of the propertythe parsed JSON n o !"#$tu%v&'4default value that is used if base configuration is sIwhether to enable this parser or not (usually is a boolean option parser):update function (usually given as applicative 'MParser a')Tthe base value that is updated (usually the result of parsing the configuraton file)rpqon      !"#$%&'()*+,-./0123456789:;<=>?@  !"#$%&'&# $!"%&  '-yz{|}defghi~  !"#$tu%v&'    )Copyright 2014 AlephCloud Systems, Inc.MIT Lars Kuhtz <lars@alephcloud.com> experimentalNone39HMT(.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.A(=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 message0=configuration property name that is used in the error message1=configuration property name that is used in the error message2=configuration property name that is used in the error message#exact length of the validated value3=configuration property name that is used in the error message%maximum length of the validated value4=configuration property name that is used in the error message%minimum length of the validated value5=configuration property name that is used in the error message%minimum length of the validated value%maximum length of the validated value6=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 messageB=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()*+,-./0123456789:;()*+,-./0124356789;:A()*+,-./0123456789B:;None 2349M=>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.CThis 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.C3This is used as default when wrapped into Maybe and the parsed value is not  andthe given default is not s.)<DEFG=HIJKL>MNO?@ABCDEPFGHIJKLMNOPQRSTUCV<=>?@ABCDEFGHIJKLMNOP>?@ACB=DEFGIH<JKLMONP<DEFG=HIJKL>MNO?@ABCDEPFGHIJKLMNOPQRSTUCVW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrpstuvwpxyz{|z{}z~z~zppp  ppppppzzzzzzzzzzzzzzzzzzzzzz~z~z~z~z~z~z~z~z{z{z{z{z{z{}z{z{z{z{z{z{z{z{pppppppppppppppppppppppppx      !"#$%&%'%(%)%*%+%,%-%./0/1/23435363738393:3;3<3=3>3?3@3A3B3C3D3D3E3F3G3H3I3J3J3K3L3M3N3N3O3P3P3Q3R3STUVBWXYCZ[\]D^_`abcdefconfiguration-tools-0.2.7Configuration.Utils.SetupConfiguration.UtilsConfiguration.Utils.ValidationConfiguration.Utils.HttpConfiguration.Utils.InternalmainmkPkgInfoModulesLens'LensPkgInfoProgramInfoValidate ProgramInfoConfigValidationFunctionConfigValidationMParser%×<*<>*><$<>$><.>⊙.::%:: dropAndUncaml setProperty..:%.: boolReader boolOption fileOption eitherReadP piDescription piHelpHeader piHelpFooterpiOptionParserpiDefaultConfigurationpiValidateConfiguration%piOptionParserAndDefaultConfiguration programInfoprogramInfoValidaterunWithConfigurationrunWithPkgInfoConfiguration maybeOptionvalidateHttpOrHttpsUrlvalidateHttpUrlvalidateHttpsUrl validateUrivalidateAbsoluteUrivalidateAbsoluteUriFragment validateIPv4 validateIPv6 validatePortvalidateNonEmptyvalidateLengthvalidateMaxLengthvalidateMinLengthvalidateMinMaxLengthvalidateFilePath validateFilevalidateFileReadablevalidateFileWritablevalidateDirectoryvalidateExecutableHttpClientConfigurationHttpServiceConfigurationHttpServiceTLSConfiguration hstcCertFile hstcKeyFile"defaultHttpServiceTLSConfiguration#validateHttpServiceTLSConfigurationpHttpServiceTLSConfigurationhscHosthscPort hscUseTLSdefaultHttpServiceConfiguration validateHttpServiceConfigurationpHttpServiceConfigurationhccHosthccPort hccUseTLSdefaultHttpClientConfigurationvalidateHttpClientConfigurationpHttpClientConfigurationhttpService2clientConfigurationmkPkgInfoModulesPostConfpkgInfoModuleNamepkgInfoFileNametrimgetVCS flagNameStr pkgInfoModuleupdatePkgInfoModulelicenseFilesTexthgInfogitInfo noVcsInfopkgIdWithLicenseIso'lensoversetviewiso_piDescription _piHelpHeader _piHelpFooter_piOptionParser_piDefaultConfiguration_piValidateConfigurationbase Data.EitherRight Data.FoldableFoldable mtl-2.2.1Control.Monad.Writer.Class MonadWriterGHC.Base$ aeson-0.8.0.2Data.Aeson.Types.InternalValueObjectData.Aeson.Types.Class parseJSONFromJSONData.Aeson.Types.Instances.: Data.MaybeNothing printConfig mainConfigvalidateConfigGHC.IO.Handle.FDstderrMaybeAppConfiguration _printConfig _mainConfigrunConfigValidationpAppConfiguration mainOptionsexceptTpPkgInfo$fFromJSON(->)Control.Applicative<*>pure Alternative Applicative Data.Monoidmappendempty Data.AesoneitherDecodeStrict' eitherDecode'eitherDecodeStrict eitherDecode decodeStrict'decode' decodeStrictdecodeData.Aeson.Parser.Internaljson'jsonData.Aeson.Encode.ByteStringencode.!=.:?fromJSON.=withBoolwithScientific withNumber withArraywithText withObjectgenericParseJSON genericToJSONgToJSONGToJSON gParseJSON GFromJSONtoJSONToJSONobjectErrorSuccessResultArrayStringNumberBoolNullfromDotNetTime DotNetTime<**>optionalliftA3liftA2liftA<**>manysome<|>getConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$><><$optparse-applicative-0.11.0.1Options.Applicative.Extra renderFailure parserFailureexecParserPurecustomExecParserMaybeexecParserMaybegetParseResulthandleParseResultcustomExecParser execParser hsubparserhelperOptions.Applicative.Builderidmprefscolumns noBacktrackshowHelpOnError disambiguate multiSuffixinfo noIntersperse failureCode progDescDocprogDesc footerDocfooter headerDocheader briefDescfullDescoption nullOption strOption infoOption abortOptionswitchflag'flag strArgumentargument subparser completeraction completeWithcommandhiddenmetavar noArgError eitherReaderhelpDochelp showDefaultshowDefaultWithvaluelongshortdisabledstrautoInfoModPrefsMod$Options.Applicative.Builder.Internalinternal OptionFields FlagFields CommandFieldsArgumentFieldsModOptions.Applicative.Common treeMapParser mapParser evalParserrunParserFully runParserInfo runParserliftOpt optionNames showOption%Options.Applicative.Builder.Completer bashCompleter listCompleterlistIOCompleterOptions.Applicative.Types overFailure mkCompleter readerError readerAbortErrorMsgInfoMsg ShowHelpText UnknownError ParseErrorinfoIntersperseinfoFailureCode infoFooter infoHeader infoProgDesc infoFullDesc infoParser ParserInfo prefColumns prefBacktrackprefShowHelpOnErrorprefDisambiguateprefMultiSuffix ParserPrefsReadM CompleterexecCompletionCompletionResult execFailure ParserFailureFailureCompletionInvoked ParserResultsshowvalidateFileExecutable%$fFromJSONHttpServiceTLSConfiguration_hccHost_hccPort _hccUseTLS_hscHost_hscPort _hscInterface _hscUseTLS _hstcCertFile _hstcKeyFile hscInterface$fToJSONHttpClientConfiguration $fToJSONHttpServiceConfiguration$fFromJSON(->)0#$fToJSONHttpServiceTLSConfiguration$fFromJSON(->)1