portable provisionalsimons@cryp.toNoneA 5 representation of the Hackage database. For sake of  simplicity, we use  rather than  to represent  the name of a package. Read the Hackage database from  $HOME/.cabal/packages/hackage.haskell.org/ 00-index.tar and  return a 1 that provides fast access to its contents. That tar 2 file is typically created by running the command " cabal update". )Read the Hackage database from the given  and return a  0 map that provides fast access to its contents. Parse the contents of Hackage's  00-index.tar into a  map. K  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM                   ! " # $ % & ' ( ) * + , - . / 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 P Q R S T U V W X Y Z Z [ \ ] ^ ^ _ ` a b c c d e f g h i j k l m n o p p q r s t u v w x y z { | } ~                                                                                               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJhackage-db-1.6Distribution.Hackage.DBHackage readHackage readHackage' parseHackagecontainers-0.5.0.0 Data.Map.BaseMapbaseGHC.BaseString Cabal-1.16.0Distribution.Package PackageNameGHC.IOFilePathDistribution.PackageDescriptionupdatePackageDescriptionknownRepoTypes hcOptionsemptyHookedBuildInfousedExtensions allExtensions allLanguages allBuildInfoemptyBuildInfo benchmarkTypeknownBenchmarkTypesbenchmarkModules withBenchmarkenabledBenchmarks hasBenchmarksemptyBenchmarktestTypeknownTestTypes testModuleswithTest enabledTestshasTestsemptyTestSuite exeModuleswithExehasExesemptyExecutable libModuleswithLibhasLibs emptyLibraryknownBuildTypesemptyPackageDescriptiondescCabalVersion specVersion extraTmpFiles extraSrcFilesdataDir dataFiles benchmarks testSuites executableslibrary buildTypespecVersionRaw buildDependscustomFieldsPDcategory descriptionsynopsis sourceRepos bugReportspkgUrlhomepage testedWith stabilityauthor maintainer copyright licenseFilelicensepackagePackageDescriptionSimple ConfigureMakeCustomUnknownBuildType BuildType libBuildInfo libExposedexposedModulesLibrary buildInfo modulePathexeName Executable testEnabled testBuildInfo testInterfacetestName TestSuiteTestSuiteExeV10TestSuiteLibV09TestSuiteUnsupportedTestSuiteInterface TestTypeExe TestTypeLibTestTypeUnknownTestTypebenchmarkEnabledbenchmarkBuildInfobenchmarkInterface benchmarkName BenchmarkBenchmarkExeV10BenchmarkUnsupportedBenchmarkInterfaceBenchmarkTypeExeBenchmarkTypeUnknown BenchmarkTypetargetBuildDependscustomFieldsBIghcSharedOptionsghcProfOptionsoptionsinstallIncludesincludes includeDirs extraLibDirs extraLibs oldExtensionsotherExtensionsdefaultExtensionsotherLanguagesdefaultLanguage otherModules hsSourceDirscSources frameworkspkgconfigDepends ldOptions ccOptions cppOptions buildTools buildable BuildInfoHookedBuildInfo repoSubdirrepoTag repoBranch repoModule repoLocationrepoTyperepoKind SourceRepoRepoHeadRepoThisRepoKindUnknownRepoKindDarcsGitSVNCVS MercurialGnuArchBazaarMonotone OtherRepoTypeRepoTypecondBenchmarkscondTestSuitescondExecutables condLibrarygenPackageFlagspackageDescriptionGenericPackageDescription flagManual flagDefaultflagDescriptionflagNameMkFlagFlagFlagNameFlagAssignmentOSArchImplConfVarVarLitCNotCOrCAnd ConditioncondTreeComponentscondTreeConstraints condTreeDataCondNodeCondTreepackageVersion packageNamesimplifyDependencynotThisPackageVersionthisPackageVersion PackageId pkgVersionpkgNamePackageIdentifierInstalledPackageId Dependency packageIdPackagedependsPackageFixedDeps Data.VersionVersion versionBranch versionTags parseVersion showVersionData.Map foldWithKeyfoldinsertLookupWithKey'insertWithKey' insertWith'valid showTreeWithshowTree deleteFindMax deleteFindMin splitLookupsplitfromDistinctAscListfromAscListWithKeyfromAscListWith fromAscList toDescList toAscListtoListfromListWithKey fromListWithfromListfromSetkeysSetassocskeyselems foldlWithKey' foldlWithKey foldrWithKey' foldrWithKeyfoldl'foldlfoldr'foldrmapKeysMonotonic mapKeysWithmapKeysmapAccumRWithKeymapAccumWithKeymapAccumtraverseWithKey mapWithKeymapmapEitherWithKey mapEithermapMaybeWithKeymapMaybepartitionWithKey partition filterWithKeyfilterisProperSubmapOfByisProperSubmapOf isSubmapOfBy isSubmapOf mergeWithKeyintersectionWithKeyintersectionWith intersectiondifferenceWithKeydifferenceWith difference unionWithKey unionWithunion unionsWithunionsmaxViewminViewmaxViewWithKeyminViewWithKeyupdateMaxWithKeyupdateMinWithKey updateMax updateMin deleteMax deleteMinfindMaxfindMindeleteAtupdateAtelemAt lookupIndex findIndexalterupdateLookupWithKey updateWithKeyupdate adjustWithKeyadjustdeleteinsertLookupWithKey insertWithKey insertWithinsert singletonemptylookupGElookupLElookupGTlookupLTfindWithDefault notMembermemberlookupsizenull\\!