y=RQ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                            ! !!!"!#!$!%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"%#Safe0: QRSTUVWXYZ[ QRSTUVWXYQRSTTUVWXYZ[SafeNoneSA wrapper around a String containing a known parsable URI. Not absolutely safe, because you could say read "URI' "bogus string"" :: URI'. But enough to save me from myself.Using the bogus Show instance of URI here. If it ever gets fixed this will stop working. Worth noting that show will obscure any password info embedded in the URI, so that's nice.\Parse the text returned when a directory is listed by a web server. This is currently only known to work with Apache. NOTE: there is a second copy of this function in Extra:Extra.Net. Please update both locations if you make changes. ] \ ^_`abcdefghijk  ] \ SafeSafe0A package's subsection is only evident in its control information, packages from different subsections all reside in the same index.A section of a repository such as main, contrib, non-free, restricted. The indexes for a section are located below the distribution directory.A distribution (aka release) name. This type is expected to refer to a subdirectory of the dists directory which is at the top level of a repository.#$Parse the value that appears in the Section= field of a .changes file. (Does this need to be unesacped?) !"#$ !"#$ !"#$  !"#$Safe29:;2This type is wrapped around values before we pretty print them so we can write our own Pretty instances for common types without polluting the name space of clients of this package with instances they don't want. 23456789:;2345678234567823456789:;Safe9;=uThis is a name given to a combination of parts of one or more releases that can be specified by a sources.list file.MXquoteWords - similar to words, but with special handling of double-quotes and brackets.pThe handling double quotes and [] is supposed to match: apt-0.6.44.2/apt-pkg/contrib/strutl.cc:ParseQuoteWord() The behaviour can be defined as:Break the string into space seperated words ignoring spaces that appear between "" or []. Strip trailing and leading white space around words. Strip out double quotes, but leave the square brackets intact.PzparseSourceLine -- parses a source line the argument must be a non-empty, valid source line with comments stripped see: O(=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd#=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_(JKLHIDEFGd>?@ABCcba`=MNOPQRSTUVWXYZ[\]^_=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone9;lDWe have to do this wackiness because ~ is less than the empty stringtConvert a string to a debian version number. May throw an exception if the string is unparsable -- but I am not sure if that can currently happen. Are there any invalid version strings? Perhaps ones with underscore, or something?vSplit a DebianVersion into its three components: epoch, version, revision. It is not safe to use the parsed version number for this because you will lose information, such as leading zeros.qrsmlntuopqvwxyz{|}~ qrstuvwxyz sqrtvwxyzuqrsmlntuopqvwxyz{|}~Noneqrqr None9;qrqr$None rstvwxyz srtwxyzv Noneqrqr None/T SafeS*The function we want to pass a FilePath to%The text that the file should containThe function's return value None9:;T  filepath+ is a simple wrapper function that parses filepath using pControl  sourceName handle -  sourceName! is only used for error reportingparseControlFromString  sourceName text -  sourceName! is only used for error reporting fieldName paragraph looks up a  in a . N.B.$ trailing and leading whitespace is not stripped.]Strip the trailing and leading space and tab characters from a string. Folded whitespace is notL unfolded. This should probably be moved to someplace more general purpose.Protect field value text so the parser doesn't split it into multiple fields or paragraphs. This must modify all field text to enforce two conditions: (1) All lines other than the initial one must begin with a space or a tab, and (2) the trailing white space must not contain newlines. This is called before pretty printing to prevent the parser from misinterpreting field text as multiple fields or paragraphs.NNOTE: we do not strip the leading or trailing whitespace in the name or valueLines beginning with #BThis can usually be used as the implementation of protectFieldText5Move selected fields to the beginning of a paragraph.5Run a command and parse its output as a control file.ilook up the md5sum file in a paragraph Tries several different variations: MD5Sum: Md5Sum: MD5sum:bThis may have bad performance issues (dsf: Whoever wrote this comment should have explained why.)!rstrstNone9;T8A parser for debian control file. This parser handles control files that end without a newline as well as ones that have several blank lines at the end. It is very liberal and does not attempt validate the fields in any way. All trailing, leading, and folded whitespace is preserved in the field values. See .uWe are liberal in that we allow *any* field to have folded white space, even though the specific restricts that to a few fields.vxWe go with the assumption that 'blank lines' mean lines that consist of entirely of zero or more whitespace characters. wuxyz{v wuxyz{vNoneNone:<=ST(|}~#|}~None9;TparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }None9;TparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }None9;TparseFromFile p filePath runs a string parser p on the input read from filePath using . Returns either a  ParseError () or a value of type a ().  main = do{ result <- parseFromFile numbers "digits.txt" ; case result of Left err -> print err Right xs -> print (sum xs) }  Safe0 None9;+A changelog is a series of ChangeLogEntries"The parser here never returns this5An entry in the list of files generated by the build. OA file generated by dpkg-buildpackage describing the result of a package build =The full pathname of the directory holding the .changes file. 3The package name parsed from the .changes file name5The version number parsed from the .changes file name+The Distribution field of the .changes file3The architecture parsed from the .changes file name!The contents of the .changes file3The value of the Changes field of the .changes file'The parsed value of the Files attributeCShow just the top line of a changelog entry (for debugging output.)GParse the entries of a debian changelog and verify they are all valid.:Parse a Debian Changelog and return a lazy list of entriesKParse a single changelog entry, returning the entry and the remaining text.nParse the changelog information that shows up in the .changes file, i.e. a changelog entry with no signature.4     $     $           None09:;44i parse a debian relation (i.e. the value of a Depends field). Return a parsec error or a value of type ABXThis needs to be indented for use in a control file: intercalate "n " . lines . showG:Check if a version number satisfies a version requirement.LWrap 2I around type synonyms that might overlap with the `Pretty [a]` instance.OeThe sort order is based on version number first, then on the kind of relation, sorting in the order , <= , ==, >= ,)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR*+,-./0123456789:;<=>?@ABCDEFG)A@?=>:;<78956RQ34BCDP012E*+,-./FOGNMLKJIH*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRNone9;SfIgnore the ! if it is present, we already know this list has at least one, and the rest are implicit. ghi*+,-./01234=>?@AGgh@?A=>012*+,-./Gg34h ghi%None$*+,-./0123456789:;<=>?@AGg$56:;<789A@?=>012*+,-./Gg34Nonej*+,-./01234=>?@AGg@?A=>012*+,-./Gg34jNonek*+,-./01234=>?@AGg@?A=>012*+,-./Gg34kNone!"09:;<=?TllErrors that control files might throw, with source file name and line number generated by template haskell.x=Class of things that contain a validated Debian control file.zOOpaque (constructor not exported) type to hold a validated Debian Control File|4Validate and return a control file in an opaque wrapper. May throw a ControlFileError. Currently we only verify that it has a Source field in the first paragraph and one or more subsequent paragraphs each with a Package field, and no syntax errors in the build dependencies (though they may be absent.)-Comment paragraphs are rare, but they happen.{Version of fieldValue that may throw a ControlFileError. We only use this internally on fields that we already validated.This could access fields we haven't validated, so it can return an error. Additionally, the field might be absent, in which case it returns Nothing.LApply a function to the text from a named field in a control file paragraph.+lmnopqrstuvwxyz{|}~lrqmnopuwtsvxyz{|}~#z{|}~lmnopqrsstsusvsvswxylmnopqrsstsusvsvswxyz{|}~None<lrqmnopuwtsvxy|}Bxylmnopqrsstsusvsvsw|}None0TNone:T6Some target whose build dependencies are all satisfied1The targets that are waiting for the ready target-The rest of the targets that need to be builtUGiven a source package name and a binary package name, return False if the binary package should be ignored hwen deciding whether to build the source package. This is used to prevent build dependency cycles from triggering unnecessary rebuilds. (This is a replacement for the RelaxInfo type, which we temporarily rename OldRelaxInfo.)\Specifies build dependencies that should be ignored during the build decision. If the pair is (BINARY, Nothing) it means the binary package BINARY should always be ignored when deciding whether to build. If the pair is (BINARY, Just SOURCE) it means that binary package BINARY should be ignored when deiciding whether to build package SOURCE.?This type describes the build dependencies of a source package.source package namedependency relations:binary dependency names (is this a function of relations?)>Set containing all binary package names mentioned in relationsSet containing binaryNamesReturn the dependency info for a source package with the given dependency relaxation. |According to debian policy, only the first paragraph in debian/control can be a source package Rhttp://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfilessource package namedependency relations:binary dependency names (is this a function of relations?)CRemove any dependencies that are designated "relaxed" by relaxInfo.Given an ordering function representing the dependencies on a list of packages, return a ReadyTarget triple: One ready package, the packages that depend on the ready package directly or indirectly, and all the other packages.%Find a cycle in a graph that involves!All the paths from root to a leafIRemove any packages which can't be built given that a package has failed.Given a list of packages, sort them according to their apparant build dependencies so that the first element doesn't depend on any of the other packages.^Build a graph with the list of packages as its nodes and the build dependencies as its edges.cThis is a nice start. It ignores circular build depends and takes a pretty simplistic approach to M build depends. However, I think this should work pretty nicely in practice.7Return the dependency info for a list of control files.FOne example of how to tie the below functions together. In this case fp is the path to a directory that contains a bunch of checked out source packages. The code will automatically look for debian/control. It returns a list with the packages in the order they should be built.&NoneT creates a map from a package name to all the versions of that package NOTE: Provides are not included in the map NOTE: the sort order is random -- this is perhaps a bug see also:  finds packages that Provide other packages and adds them to the PackageNameMap. They will be adde to the end of the list, so that real packages have 'higher priority' than virtual packages. NOTE: Does not check for duplication or multiple use[ returns all the packages that satisfy the specified relation TODO: Add architecture checkNoneS_withMethod - run |methodPath| bracketed with openMethod/closeMethod. |f| gets the open handle.dwhichMethodBinary - find the method executable associated with a URI throws an exception on failureCfetch a single item, show console output see also: getLastModifiedset of callbacks which do nothing. suitable for non-interactive usage. In the case authorization is required, no credentials will be supplied and the download should abort.X=B.  None0:T function-type for a function that downloads a file The timestamp is optional. If the local file is as new or newer than the remote copy, the download may be skipped.:A good choice might be a partially parameterized call to  Package indexes on the server are uncompressed or compressed with gzip or bzip2. We do not know what will exist on the server until we actually look. This type is used to mark the compression status of what was actually found."update - similar to apt-get update^download possibly compressed files NOTE: index uri must not include the .bz2 or .gz extensionexamine a DebSource line, and calculate for each section: - the URI to the uncompressed index file - the basename that apt-get would name the downloaded index FIXME: ExactPath dist will fail with error at runtime :(return a tuple for the section - the URI to the uncompressed index file - the basename that apt-get uses for the downloaded index FIXME: support for Release and Release.gpg'Parse a possibly compressed index file.'parse an index possibly compressed fileeA release file contains a list of indexes (Packages/Sources). Each Package or Source index may appear multiple times because it may be compressed several different ways. This function will return an assoc list where the key is the name of the uncompressed package index name and the value is the list of (file, compression) which decompress to the key.The release file contains the checksums for the uncompressed package indexes, even if the uncompressed package indexes are not stored on the server. This function returns the list of files that actually exist.=make a FileTuple for a file found on the local disk returns  if the file does not exist.Cfind the Contents-* files. These are not listed in the Release file     *function that will do actually downloading6download indexes to the directory (must already exist)binary architecture sources.list,(basename of index file, compression status)&function that will do the actual fetch:remote URI of package index, without .bz2 or .gz extension>name to save downloaded file as, without .bz2 or .gz extension6(downloaded file name + extension, compression status)which binary architectureline from sources.list:(remote uri, local name, deb source for just this section)do we want Packages or Sources+The binary architecture to use for Packages&base URI as it appears in sources.list7the release (e.g., unstable, testing, stable, sid, etc)*the section (main, contrib, non-free, etc)5(uri to index file, basename for the downloaded file)A release file               !NoneJcreate a map of (package name, extracted field) from a list of index files-NOTE: we could merge all the files into a single control and then run packageMap over that. We currently do it one control file at a time to avoid having all the control files loaded in memory at once. However, I am not sure that property is actually occuring anyway. So, this should be revisited. Fcreate a map of (package name, max version) from a single control file!3extract the version number from a control paragraph"ycompare two sources.list and find all the packages in the second that trump packages in the first see also: |trumpedMap|#"calculate all the trumped packages$create  trumped/, XML element and children from a trumped Map !"(function for downloading package indexes<cache directory to store index files in (must already exist)binary architecturesources.list asources.list b8a map of trumped package names to (version a, version b)# package map a package map b'trumped packages (version a, version b)$ !"#$ !"#$ !"#$"NoneT&Econflicting packages and relations that require non-existant packages4 TODO addProvides -- see DQL.Exec<JAS: deal with Provides/ (can a package provide more than one package?)HearliestInconsistency does what it sounds like the 'reverse as' is because the vars are order high to low, but we want to find the lowest numbered (aka, eariest) inconsistency ??Mbj - backjumping labeler<If the node already has a conflict set, then leave it alone.gOtherwise, the conflictset for the node is the combination of the conflict sets of its direct children.+%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO+%&'(*)+,-./2013456789:;<=>?@ABCDEFGHIJKLMNO+/012.3'()*+,-456789:;<=>?@ABCDEFGH&IJ%KLMNO"%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO&'(#)*+,-./0123456789:;<==>?@@AABCDEFGHIJKLMNOPQRSTUVWWXYZ[\]^_`abbcdefghijkklmnopqrstuvwxyz{|}~]]              ]^_ !"#$%&'()*+,-./0123456789::;<<=>?@ABCDEFGH]^_ IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                            !!!!!!""""""""" "!""""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"#B#B#C#D#E#E#F#F#)#G#HI,JKLJKMJKNJKNJKOJKPJKQJKRJKSJKTJKTJKUJKVJKWXYZ[\] ^ _ `abcdefghhijklmnoadcpqrstuvwxyz{|}~+***v      $debian-3.93.2-KbyMpjxwu5PACqz8Bnd2tm Debian.PrettyDebian.Version.Common Debian.UTF8 Debian.URI Debian.TimeDebian.ReleaseDebian.SourcesDebian.Version.ByteStringDebian.Version.StringDebian.Version.Text Debian.LocDebian.Extra.FilesDebian.Control.CommonDebian.Control.String Debian.DebDebian.Control.ByteStringDebian.Control.TextDebian.Control.TextLazyDebian.Control.Builder Debian.ArchDebian.ChangesDebian.Relation.CommonDebian.Relation.StringDebian.Relation.ByteStringDebian.Relation.TextDebian.Control.PolicyDebian.ControlDebian.Util.FakeChangesDebian.GenBuildDepsDebian.Apt.PackageDebian.Apt.MethodsDebian.Apt.Index Debian.ReportDebian.Apt.DependenciesDebian.Version.InternalDebian.VersionDebian.Relationpretty-1.1.3.3Text.PrettyPrint.HughesPJClass prettyShow DebianVersiondecodereadFileURI'readURI'fromURI'toURI' uriToString' fileFromURIfileFromURIStrict dirFromURI $fReadURI' $fShowURI'$fEqURI' $fOrdURI'rfc822DateFormat'epochTimeToUTCTimeformatTimeRFC822parseTimeRFC822getCurrentLocalRFC822Time SubSectionsectionsubSectionNameSection ReleaseNamerelNameparseReleaseName releaseName' sectionName sectionName'sectionNameOfSubSection parseSection parseSection'$fEqReleaseName$fOrdReleaseName$fReadReleaseName$fShowReleaseName$fDataReleaseName $fReadSection $fShowSection $fEqSection $fOrdSection$fReadSubSection$fShowSubSection$fEqSubSection$fOrdSubSectionPPunPP prettyTextppPrintppShowppText $fPrettyPP $fPrettyPP0 $fPrettyPP1 $fFunctorPP SliceName DebSource sourceType sourceOptions sourceUri sourceDistSourceOpOpSetOpAddOpDel SourceOption SourceTypeDebDebSrc quoteWords stripLine sourceLinesparseSourceLine parseOptionspOptionspOptionpOpparseSourceLine'parseSourcesListtestQuoteWordstestSourcesListtestSourcesList2validSourcesListStrvalidSourcesListvalidSourcesListExpected_invalidSourcesListStr1testSourcesListParsesourcesListTests$fPrettyDebSource$fPrettySourceOption$fPrettySourceType$fPrettySourceOp$fEqSourceType$fOrdSourceType$fShowSourceType $fEqSourceOp $fOrdSourceOp$fShowSourceOp$fEqSourceOption$fOrdSourceOption$fShowSourceOption $fEqDebSource$fOrdDebSource$fShowDebSourceParseDebianVersionparseDebianVersionprettyDebianVersionparseDebianVersion'parseDVevrepochversionrevisionbuildDebianVersion $fOrdNumeric $fEqNumeric$fOrdNonNumeric$fEqNonNumeric$fShowDebianVersion$fOrdDebianVersion$fEqDebianVersion$fParseDebianVersionByteString$fReadDebianVersion$fParseDebianVersion[]$fParseDebianVersionText__LOC__mapExnwithTemporaryFileControlFunctionsparseControlFromFileparseControlFromHandle parseControllookupPstripWSprotectFieldTextasStringField'FieldComment Paragraph' ParagraphControl'Control unControlprotectFieldText' mergeControls fieldValue removeField prependFields appendFields renameField modifyField raiseFieldsparseControlFromCmd md5sumField$fPrettyField'$fPrettyParagraph'$fPrettyControl' $fEqField' $fOrdField' $fReadField' $fShowField'$fEqParagraph'$fOrdParagraph'$fReadParagraph'$fShowParagraph' $fEqControl' $fOrdControl'$fReadControl'$fShowControl' ControlParserpControl$fControlFunctions[]fields$fMonadPlusParser $fMonadParser$fAlternativeParser$fApplicativeParser$fFunctorParser$fControlFunctionsByteString $fShowResult decodeControldecodeParagraph decodeField$fControlFunctionsText$fControlFunctionsBuilderArchSourceAllBinaryArchCPU ArchCPUAnyArchOS ArchOSAny prettyArch parseArch $fEqArchOS $fOrdArchOS $fReadArchOS $fShowArchOS $fDataArchOS $fEqArchCPU $fOrdArchCPU $fReadArchCPU $fShowArchCPU $fDataArchCPU$fEqArch $fOrdArch $fReadArch $fShowArch $fDataArch ChangeLogChangeLogEntryEntry WhiteSpace logPackage logVersionlogDists logUrgency logCommentslogWhologDateChangedFileSpecchangedFileMD5sumchangedFileSHA1sumchangedFileSHA256sumchangedFileSizechangedFileSectionchangedFilePrioritychangedFileName ChangesFileChanges changeDir changePackage changeVersion changeRelease changeArch changeInfo changeEntry changeFileschangesFileNameparseChangeLog parseEntries parseEntry parseChanges $fPrettyPP2 $fPrettyPP3$fEqChangedFileSpec$fReadChangedFileSpec$fShowChangedFileSpec$fEqChangeLogEntry$fReadChangeLogEntry$fShowChangeLogEntry$fEqChangesFile$fReadChangesFile$fShowChangesFile $fEqChangeLog$fReadChangeLog$fShowChangeLog VersionReqSLTLTEEEQGRESGRArchitectureReqArchOnly ArchExceptParseRelationsparseRelationsPkgNamepkgNameFromString BinPkgName unBinPkgName SrcPkgName unSrcPkgNameRelationRel OrRelation AndRelation RelationsprettyRelationsprettyOrRelationprettyRelationprettyArchitectureReqprettyVersionReqcheckVersionReq $fPrettyPP4 $fPrettyPP5$fOrdVersionReq $fOrdRelation$fPkgNameSrcPkgName$fPkgNameBinPkgName$fReadSrcPkgName$fShowSrcPkgName$fEqSrcPkgName$fOrdSrcPkgName$fDataSrcPkgName$fReadBinPkgName$fShowBinPkgName$fEqBinPkgName$fOrdBinPkgName$fDataBinPkgName$fEqArchitectureReq$fOrdArchitectureReq$fReadArchitectureReq$fShowArchitectureReq$fEqVersionReq$fReadVersionReq$fShowVersionReq $fEqRelation$fReadRelation$fShowRelation RelParser pRelations$fParseRelations[]$fParseRelationsByteString$fParseRelationsTextControlFileError NoParagraphsNoBinaryParagraphs MissingFieldParseRelationsErrorParseControlErrorIOErrorlocsctlfield parseErrorioErrorHasDebianControl debianControl DebianControlunDebianControlvalidateDebianControlunsafeDebianControlparseDebianControlparseDebianControlFromFiledebianPackageParagraphsdebianSourceParagraphdebianBinaryParagraphsdebianPackageNamesdebianSourcePackageNamedebianBinaryPackageNamesdebianBuildDepsIndepdebianBuildDepsdebianRelations$fEqControlFileError$fExceptionControlFileError$fShowControlFileError$fHasControlDebianControl$fHasControlControl'$fHasDebianControlDebianControl$fShowDebianControl packParagraph packField formatControlformatParagraph formatField fakeChanges $fReadError $fShowError $fEqError $fDataError BuildableInfo CycleInfo readyTargets allBlockeddepPairs ReadyTargetreadywaitingother RelaxInfoDepInfo sourceName relations binaryNamesdepSetbinSetbuildDependencies sourceName' relations' binaryNames' relaxDeps buildable failPackage orderSource compareSourcegenDepsgetSourceOrder $fEqDepInfo $fShowDepInfo$fShowOldRelaxInfoPackageNameMappackageNameMap addProvides findProvideslookupPackageByRelFetchCallbackslogCBstatusCB uriStartCB uriDoneCB uriFailureCBgeneralFailureCBauthorizationRequiredCBmediaFailureCBdebugCB ConfigItemHeaderCommand URIAcquire ConfigurationAuthorizationCredentials MediaChangedStatus CapabilitiesLogMsgURIStartURIDone URIFailureGeneralFailureAuthorizationRequired MediaFailuresingleInstancepreScanpipeline sendConfig needsCleanup localOnlyurisize lastModified resumePointfilenamehashesimsHitmessageDriveMediaPasswordUserSiteMessage withMethodURIwithMethodPathwhichMethodPath recvStatus sendCommand openMethod closeMethod simpleFetchfetchemptyFetchCallbackscliFetchCallbacksgetLastModified $fShowHashes $fEqHashes $fShowStatus $fEqStatus $fShowCommand $fEqCommand FileTupleSizeFetcher CheckSumsmd5sumsha1sha256 CompressionBZ2GZ UncompressedupdatecontrolFromIndexcontrolFromIndex' findIndexesindexesInReleasetupleFromFilePathfindContentsFiles$fReadCompression$fShowCompression$fEqCompression$fOrdCompression$fEnumCompression$fBoundedCompression$fReadCheckSums$fShowCheckSums $fEqCheckSumsmakePackageMap packageMapextractVersiontrumped trumpedMap trumpedXMLLabeler ConflictSetCSPpnm depFunction conflictspackageVersionState Remaining MissingDepCompletecomplete controlCSPtestCSPdepF sidPackages gutsyPackagestestpackageVersionParagraphconflict conflict'mkTreelabelinitTreemapTreefoldTree zipTreesWithpruneleavesinhTree distrTree mkSearchTreeearliestInconsistency isConflict solutionssearchbtbjunionCScombineFound SimulatedunFoundNumeric NonNumeric $fOrdFound $fEqFoundwebServerDirectoryContents*network-uri-2.6.1.0-Hz1OR91jXzHIcSp1mipvg3 Network.URI uriToStringparseURIURI uriScheme uriAuthorityuriPathuriQuery uriFragmentURIAuth uriUserInfo uriRegNameuriPortcompareNonNumericordercompareMaybeNonNumeric parseEpochparseNonNumeric parseNumeric ppControl ppParagraphppFieldpFieldpBlanks pParagraphpCommentfcharfwsfchar_fwsParserunParserResultOkFailEmptypKeypValue safeIndexr2m _pSucceed_pFailsatisfypChar_trypEOF pTakeWhile _pSkipWhilepManynotEmptypMany1 pSkipMany _pSkipMany1parsebase System.IO Data.EitherLeftRight dropAroundprettyOSparseOS prettyCPUparseCPU _showHeaderstrip'entryRE changeDetails signatureheaderRE blankLines blankLineoptWhitebol_s1parseArchExcept pOrRelation whiteChar pRelation pMaybeVerReqpVerReq pMaybeArch pArchExcept pArchOnlyremoveCommentParagraphs fieldValue' mapFieldValue HasControlcontrolshowLocFilesdscdebstardiffErrorNoDebs TooManyDscs TooManyTars TooManyDiffs UnknownFilesMalformedDebFilenameVersionMismatch getVersion getSource getMaintainer getArches getBinArch mkFileLine unzipEithers debNameSplit loadFiles getUploader singleton OldRelaxInfo allCycles treePaths buildGraph Data.Foldableor pathEdgescompareSource'Hashesmd5 MethodHandle capabilitieslogMsgstatusuriStarturiDone uriFailuregeneralFailureauthorizationRequired mediaFailure uriAcquire configurationauthorizationCredentials mediaChanged emptyHashes parseStatus formatCommandparseTrueFalse parseHeader sendMethodrecvbool fetchIndex indexURIscalcPath groupIndexes filterExistsGHC.BaseNothinguncompressedName