h&7)&'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                       Safe-Inferred Safe-Inferred  Safe-Inferred  Safe-Inferred  "&WV' (U)* +,-. /0Z1234d567g$%#89~}|:;<! =LO>?@ABCDEMNFTRSGHIJKPQXY[\]^_`abcefhkjimlnopqrstuvwxyz{ &WV' (U)* +,-. /0Z1234d57g$%#89~}|;<! =LO>?@ABCEMNFTRSGHIKPQY[\]cfh",-5~efkjinopqrstuvwxyz{ml<! ;J:D`_ab6^X Safe-Inferred"distribution-opensuse4A (quite possibly inefficient) re-implementation of git stripspace. This function normalizes a `* buffer to conform to the following rules:%All trailing white space is stripped.Empty lines at the beginning or at the end of the buffer are stripped.Consecutive empty lines between paragraphs are collapsed into one.\r\n" line endings are normalized into \n.If the buffer is not empty, then its last line is terminated by \n.If the buffer is empty (i.e. it contains only white space), then it comes out as the empty string. Safe-Inferred" distribution-opensuseBoth releases contained the given change log file, and these files differed so that the given text was added at the top of the new one. The text undergoes some amount of cleanup, i.e. we'll trim leading empty lines at the top, trailing whitespace, and trailing empty lines at the end.distribution-opensuse+Neither release contains a change log file.distribution-opensuseA change log file exists (and its name is returned), but it's identical in both releases. In other words, upstream probably forgot to document the release.distribution-opensuseBoth releases contain a set of files that look like they might be a change log, but their intersection is empty! This happens, for example, when upstream has renamed the file.distribution-opensuseMultiple change log files exists in both directories. Now, it would probably work out okay if we'd just look at the diffs of both of them, respectively, but it felt like a good idea to err on the side of caution. This case is rare anyways.distribution-opensuseguessChangelog accepts up to 10 lines of unmodified text at the top of the upstream change log file because some people like to have a short introduction text there etc. If that header becomes too large, however, then we return this error because we expect upstream to add text at the top, not in the middle of the file.distribution-opensuseThis happens when upstream edits the file in ways other than just adding at the top. Sometimes people re-format old entries or rewrite URLs or fix typos, and in such a case it feels to risky to trust the diff.distribution-opensuseAutomatically guess the differences between to releases of a package by looking at the change log file provided by upstream. The function as arguments the paths of two directories that contain the extracted release tarballs. The first arguments ought to point to the older release, the second paths ought to point to the updated version.The function uses the following algorithm to detect the relevant changes: Scan both directories for files that look like they might be change logs.:If both directories contain the same candidate file, e.g.  ChangeLog, then use that.Compute the differences between the change log files and check that all modifications are additions at the top of the file.Return those additions as `.distribution-opensuseThis function finds any file in the given directory path that looks like it might be a change log, meaning its name contains the word "change" and its suffix is not one that obviously designates source code.   Safe-Inferred;distribution-opensusemkEMailAddress " accept . full (rfc822) . syntax @ example . org "4Just (EMailAddress "accept.full.syntax@example.org")#mkEMailAddress "@this@is@not@good@"Nothing;prettyShow (fromString "joe @ example.net" :: EMailAddress)"joe@example.net"distribution-opensuse3Constructor function for e-mail addresses. Returns M( if the input is syntactically invalid.distribution-opensuse5Accessor function for the underlying path of strings. Safe-Inferred;!distribution-opensuse4Note that the input must be terminated by a newline.parseTest parseDateAddressLine "Wed Jun 27 09:25:07 UTC 2018 - foo@example.org\n"8(2018-06-27 09:25:07 UTC,EMailAddress "foo@example.org")distribution-opensuseConsume an empty line, i.e. a line that contains only whitespace.distribution-opensuseConsume all text until the end of the file or a dashed line is found. In the latter case, the dashed line is consumed as well. This is unfortunate, but it's how the ! combinator works, unfortunately,distribution-opensuse!Appropriate format parameter for  and .   Safe-Inferred;!   Safe-Inferred"5  Safe-Inferred;$distribution-opensuse0Projects are identified on OBS by a string path.8parse "project id" "SUSE:SLE-12-SP2:Update" :: ProjectId(ProjectId ["SUSE","SLE-12-SP2","Update"]9parseM "project id" "SUSE::SLE-12-SP2" :: Maybe ProjectIdNothing.parseM "project id" ":SUSE" :: Maybe ProjectIdNothing.parseM "project id" "SUSE:" :: Maybe ProjectIdNothingdistribution-opensuse-Constructor function for project identifiers.1TODO: Figure out how to deal with the [] project.distribution-opensuse5Accessor function for the underlying path of strings.  Safe-Inferred;%distribution-opensuseType synonym for convenience.distribution-opensuseType synonym for convenience.distribution-opensuse3Constructor function for typed request identifiers.distribution-opensuse4Accessor function for the underlying natural number.  Safe-Inferred& !"#$%$&$'$()*)+,-./012"3"4"5"6789:;<=>?@$A$B)CDE"F"GHIJ)KLM"NDO"PQRST1UVWXYZ[\]^_`a_b_c_d_efghfijkl_m"n_o_pqrst_ukvkw_xsysz_{_|_})~$$LQQWW77777777777777YYYYYWWWWWWWWWWWWWWWWWWWWWsLLLDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"""""""""""""""""""$$$$QQQQQQ)))))))))                                      9S2distribution-opensuse-1.1.4-6EK62wUdsP16V7M06BWWkJOpenSuse.Prelude'OpenSuse.Prelude.PrettyPrinting.OrphansOpenSuse.StripSpaceOpenSuse.GuessChangeLogOpenSuse.Types.EMailAddressOpenSuse.Types.ChangeLogOpenSuse.Types.IssueOpenSuse.Types.PackageNameOpenSuse.Types.ProjectIdOpenSuse.Types.RequestIdOpenSuse.Types.UserNameOpenSuse.Prelude.ParserOpenSuse.Prelude.PrettyPrintingbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturn Data.String fromString fromIntegral realToFrac toInteger toRational Control.Monadguard<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowControl.Monad.Fail MonadFailIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric SemigroupMonoid GHC.TypesBoolStringCharDoubleFloatInt ghc-bignumGHC.Num.IntegerIntegerGHC.Num.NaturalNatural GHC.MaybeMaybeOrderingRationalIOWordGHC.WordWord8 Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGT/=maxBoundminBound'hashable-1.4.2.0-D6EOHOGayLdHLpjCLzeHpLData.Hashable.ClassHashable Data.Functor<$>readListconst.id time-1.11.1.1 Data.Time.Clock.Internal.UTCTimeUTCTimebytestring-0.11.3.1Data.ByteString.Internal ByteString text-1.2.5.0Data.Text.InternalText$aeson-2.1.2.1-1CP91TiqJNMKhmZsERtItUData.Aeson.Types.ToJSONToJSONData.Aeson.Types.FromJSONFromJSONShowSshowforM_mapM_<* Text.Readreadmplusmzero MonadPlusControl.Monad.IO.ClassliftIOMonadIO zipWithM_zipWithMunless replicateM_ replicateMmfilter mapAndUnzipMforeverfoldM_foldMfilterM>=><=<<$!>traverse sequenceAsequencemapMforM writeFilereadLnreadIOreadFileputStrLnputStrputCharinteractgetLine getContentsgetChar appendFileGHC.IO.ExceptionioErrorGHC.IOFilePathIOError userErrorsumproductnullminimummaximumlengthfoldr1foldrfoldl1foldlfoldMapelem sequence_ornotElemmsum concatMapconcatanyandall Data.OldListwordsunwordsunlineslinesreadseither readsPrec readParenlexText.ParserCombinators.ReadPReadS significand scaleFloatisNegativeZeroisNaN isInfiniteisIEEEisDenormalized floatRange floatRadix floatDigitsexponent encodeFloat decodeFloatatan2tanhtansqrtsinhsinpilogBaselogexpcoshcosatanhatanasinhasinacoshacos**truncateroundproperFractionfloorceilingremquotRemquotmoddivModdivrecip/oddlcmgcdeven^^^toEnumsuccpredfromEnum showsPrecshowListshows showString showParenshowCharzipWith3zipWithzip3unzip3unzip takeWhiletaketailsplitAtspanscanr1scanrscanl1scanlreverse replicaterepeatlookuplastiterateinithead dropWhiledropcyclebreak!! Data.Maybemaybe fromMaybevoiduncurrycurrysignumabs+*subtractstimessconcat<$whenuntilliftM5liftM4liftM3liftM2liftMflipasTypeOfap=<<$!GHC.Err undefinederrorWithoutStackTraceerror&&not||<<=>comparemaxminbinary-0.8.9.0Data.Binary.ClassBinarycontainers-0.6.5.1Data.Set.InternalSetdeepseq-1.4.6.1Control.DeepSeqNFData#extra-1.7.12-FuAZZYlycXyBo80qfJJBLlControl.Monad.Extra firstJustMfindMandMorMallManyM&&^||^notMifMunlessMwhenM untilJustM whileJustMwhileMloopMloop mapMaybeM mconcatMapM concatForM concatMapM partitionMfold1M_fold1MeitherM fromMaybeMmaybeMunit whenMaybeM whenMaybepureIf whenJustMwhenJustparsec-3.1.15.0Text.Parsec.Prim runParserT runParser+parsec-class-1.0.0.0-EP0GfyoutAKL4E3hVeKx6LText.Parsec.ClassparseparseM CharParserparser HasParser ErrorContextpretty-1.1.3.6Text.PrettyPrint.HughesPJClasspPrintPretty prettyShowText.PrettyPrint.HughesPJDoc utctDayTimeutctDay!Data.Time.Clock.Internal.DiffTimeDiffTime$fPrettyNaturalLazyByteStringLazyTextpackText unpackText stripSpaceGuessedChangeLogNoChangeLogFilesUndocumentedUpdateNoCommonChangeLogFilesMoreThanOneChangeLogFileUnmodifiedTopIsTooLargeNotJustTopAdditionsguessChangeLog$fShowGuessedChangeLog EMailAddressmkEMailAddressunEMailAddress$fPrettyEMailAddress$fIsStringEMailAddress$fHasParserEMailAddress$fShowEMailAddress$fEqEMailAddress$fOrdEMailAddress$fGenericEMailAddress$fHashableEMailAddress$fBinaryEMailAddress$fNFDataEMailAddressEntry changedAt changedBychangeDescription ChangeLog parseEntryparseDashedLineparseDateAddressLineparseDescription$fHasParserEntry $fNFDataEntry$fHasParserChangeLog$fShowChangeLog $fEqChangeLog$fOrdChangeLog$fGenericChangeLog$fNFDataChangeLog$fSemigroupChangeLog$fMonoidChangeLog $fShowEntry $fEqEntry $fOrdEntry$fGenericEntryIssueBscCve parseIssue showIssueparseCveparseBscisCveisBsc$fFromJSONKeyIssue$fFromJSONIssue $fNFDataIssue $fBinaryIssue$fHashableIssue $fShowIssue $fEqIssue $fOrdIssue$fGenericIssue PackageName ProjectId mkProjectId unProjectId$fToJSONKeyProjectId$fToJSONProjectId$fFromJSONKeyProjectId$fFromJSONProjectId$fHasParserProjectId$fPrettyProjectId$fIsStringProjectId$fShowProjectId $fEqProjectId$fOrdProjectId$fGenericProjectId$fHashableProjectId$fBinaryProjectId$fNFDataProjectId$fSemigroupProjectId$fMonoidProjectIdReleaseRequestIdMaintenanceRequestId RequestId mkRequestId unRequestId$fHasParserRequestId$fPrettyRequestId$fIsStringRequestId$fToJSONRequestId$fFromJSONRequestId$fShowRequestId $fEqRequestId$fOrdRequestId$fEnumRequestId$fGenericRequestId$fHashableRequestId$fBinaryRequestId$fNFDataRequestIdUserNametryText.Parsec.CharstringcharuppertabspacesspacesatisfyoneOfoctDigitnoneOfnewlinelowerletterhexDigit endOfLinedigitcrlfanyCharalphaNumText.Parsec.Combinator skipMany1 sepEndBy1sepEndBysepBy1sepBy parserTraced parserTraceoptional optionMaybeoption notFollowedBymanyTillmany1eofendBy1endBycountchoicechainr1chainrchainl1chainlbetweenanyTokenStreamunconsState stateUserstatePos stateInputReplyErrorOkParsecTParsecConsumedEmpty updateStateupdateParserState unknownError unexpectedtokens tokenPrimEx tokenPrimtokensysUnExpectErrorskipManysetState setPositionsetParserStatesetInput runParsecTrunPTrunPputState parserZero parserReturn parserPlus parserFail parserBind parsecMap parseTest modifyStatemkPTmergeErrorReply manyAccummany lookAheadlabelslabelgetState getPositiongetParserStategetInput<|>Text.Parsec.Error ParseErrorerrorPosText.Parsec.Pos SourcePos SourceNameLineColumn sourceName sourceLine sourceColumn setSourceName setSourceLinesetSourceColumn incSourceLineincSourceColumn PrettyLevel pPrintPrec pPrintList prettyParen prettyNormal zeroWidthTextvcattext sizedTextsepsemirparen renderStylerender reduceDocrbrackrbracerationalquotes punctuateptextparensnest maybeQuotes maybeParensmaybeDoubleQuotes maybeBrackets maybeBraceslparenlbracklbraceisEmptyintegerinthsephcathang fullRenderfsepfloatfirstfcatequalsempty doubleQuotesdoublecommacoloncatbracketsbraces<+>$+$$$#Text.PrettyPrint.Annotated.HughesPJ TextDetailsPStrStrChrStyleribbonsPerLinemode lineLengthMode ZigZagModePageModeLeftMode OneLineModestylefailfindChangeLogFilesparseEmptyLinechangeLogDateFormatData.Time.Format.Format.Class formatTimeData.Time.Format.Parse parseTimeM