l}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Safe %Constrains allowable version numbers.Use  to create constraints and *4 to see if a version number satisfies a constraint. <Build metadata attached to a version. These are similar to s with some key differences: oThere is no such thing as numeric builds. Even though builds can look like numbers, all builds are textual.HAs a result, builds that look numeric are allowed to have leading zeros.8Builds cannot be compared. That is, they do not have an } instance.Use  to create builds.oPre-release information attached to a version. These can either be numeric or textual. They must not be empty.DNumeric: Can be any non-negative integer. Cannot have leading zeros.sTextual: Can be any string of ASCII digits, letters, or hyphens. Cannot be all digits, as that would be numeric.<In general, pre-releases must match the regular expression /^[-0-9A-Za-z]+$/.Use  to create pre-releases.4A semantic version number. Versions have five parts: +: The major version number.,: The minor version number.-: The patch version number..$: A list of pre-release identifiers./: A list of build metadata.Use  to create versions.1Attempts to parse a version. This parser follows  jhttps://github.com/mojombo/semver/blob/eb9aac5/semver.md#backusnaur-form-grammar-for-valid-semver-versions SemVer's BNF.parseVersion "1.2.3-p.4+b.5"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]})Returns ~ if the parse fails.parseVersion "wrong"Nothing<Whitespace is not allowed and will cause the parser to fail.parseVersion " 1.2.3 "Nothing Attempts to parse a pre-release.parsePreRelease "pre"Just (PreReleaseTextual "pre")parsePreRelease "1"Just (PreReleaseNumeric 1)Returns ~ if the parse fails.parsePreRelease "wrong!"Nothing2Numeric pre-releases cannot contain leading zeros.parsePreRelease "01"NothingAttempts to parse a build.parseBuild "build"Just (Build "build")parseBuild "1"Just (Build "1")Returns ~ if the parse fails.parseBuild "wrong!"Nothing;Unlike pre-releases, numeric builds can have leading zeros.parseBuild "01"Just (Build "01")4Attempts to parse a constraint. This parser follows  Hhttps://github.com/npm/npm/blob/d081cc6/doc/misc/semver.md#range-grammar npm's BNFr, except that neither the so-called "x-ranges" nor partial version numbers are not supported. So you cannot use 1.2.x or >1.2 as version constraints.parseConstraint ">1.2.3"Just (ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))Returns ~ if the parse fails.parseConstraint "wrong"NothingParses a version."unsafeParseVersion "1.2.3-p.4+b.5"Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]}'Raises an exception if the parse fails.unsafeParseVersion "wrong"'*** Exception: invalid version: "wrong"...See % for a safe version of this function.Parses a pre-release.unsafeParsePreRelease "pre"PreReleaseTextual "pre"'Raises an exception if the parse fails.unsafeParsePreRelease "wrong!",*** Exception: invalid pre-release: "wrong!"...See % for a safe version of this function.Parses a build.unsafeParseBuild "build" Build "build"'Raises an exception if the parse fails.unsafeParseBuild "wrong!"-Build "*** Exception: invalid build: "wrong!"...See % for a safe version of this function. Parses a constraint.unsafeParseConstraint ">1.2.3"ConstraintCompare OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})'Raises an exception if the parse fails.unsafeParseConstraint "wrong"**** Exception: invalid constraint: "wrong"...See % for a safe version of this function.!Renders a version..renderVersion <$> parseVersion "1.2.3-p.4+b.5"Just "1.2.3-p.4+b.5""Renders a pre-release.*renderPreRelease <$> parsePreRelease "pre" Just "pre"(renderPreRelease <$> parsePreRelease "1"Just "1"#Renders a build."renderBuild <$> parseBuild "build" Just "build"renderBuild <$> parseBuild "1"Just "1"$Renders a constraint.-renderConstraint <$> parseConstraint ">1.2.3" Just ">1.2.3"PParsing and rendering a constraint doesn't always return what you started with.-renderConstraint <$> parseConstraint "=1.2.3" Just "1.2.3"%Returns & if the major version number is zero,  otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False&Returns * if the major version number is not zero,  otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False'$Increments the major version number."bumpMajor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}).The minor and patch numbers are reset to zero."bumpMajor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMajor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using +t if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change.($Increments the minor version number."bumpMinor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})"The patch number is reset to zero."bumpMinor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMinor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using ,t if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.)Increments the patch number."bumpPatch <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []}),The major and minor numbers are not changed."bumpPatch <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpPatch <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []})Consider using -t if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.*Returns * if the version satisfies the constraint,  otherwise.?satisfies <$> parseVersion "1.2.3" <*> parseConstraint ">1.2.0" Just True+$Focuses on the major version number.5view majorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 1,$Focuses on the minor version number.5view minorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 2-$Focuses on the patch version number.5view patchLens <$> parseVersion "1.2.3-pre.4+build.5"Just 3.'Focuses on the pre-release identifiers.;view preReleasesLens <$> parseVersion "1.2.3-pre.4+build.5"2Just [PreReleaseTextual "pre",PreReleaseNumeric 4]/Focuses on the build metadata.6view buildsLens <$> parseVersion "1.2.3-pre.4+build.5"Just [Build "build",Build "5"]q?Numeric pre-releases are always less than textual pre-releases.7compare <$> parsePreRelease "1" <*> parsePreRelease "a"Just LT.Numeric pre-releases are compared numerically.8compare <$> parsePreRelease "9" <*> parsePreRelease "10"Just LT1Textual pre-releases are compared alphabetically.:compare <$> parsePreRelease "p10" <*> parsePreRelease "p9"Just LTr In general, }s compare in the way that you would expect. First the major version numbers are compared, then the minors, then the patches.9compare <$> parseVersion "1.2.3" <*> parseVersion "2.0.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.3.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.2.4"Just LT5Numbers are compared numerically, not alphabetically.:compare <$> parseVersion "0.0.9" <*> parseVersion "0.0.10"Just LT?If all the numbers are the same, the pre-releases are compared.=compare <$> parseVersion "1.2.3-a" <*> parseVersion "1.2.3-b"Just LTpA version with a pre-release is always less than a version without one as long as the other parts are the same.=compare <$> parseVersion "1.2.3-pre" <*> parseVersion "1.2.3"Just LT=compare <$> parseVersion "1.2.4-pre" <*> parseVersion "1.2.3"Just GT2Builds are not considered when comparing versions.=compare <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b"Just EQ:(==) <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b" Just Falses  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrn  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmsrq   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUponVWXYZ[\]^_`abcdefghijklm`   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrSafe  !"#$%&'()*+,-./  !"#$%&'()*+,-./      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}}"salve-0.0.0-AWDVVRGcgPKCMkVEliReBlSalve.InternalSalveParser runParserOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT ConstraintConstraintCompare ConstraintAnd ConstraintOrBuild PreReleasePreReleaseNumericPreReleaseTextualVersion versionMajor versionMinor versionPatchversionPreReleases versionBuilds parseVersionparsePreRelease parseBuildparseConstraintunsafeParseVersionunsafeParsePreReleaseunsafeParseBuildunsafeParseConstraint renderVersionrenderPreRelease renderBuildrenderConstraint isUnstableisStable bumpMajor bumpMinor bumpPatch satisfies majorLens minorLens patchLenspreReleasesLens buildsLens constraintLT constraintLE constraintEQ constraintGE constraintGT constraintAnd constraintOrversionP preReleasesP preReleasePpreReleaseNumberPpreReleaseStringPbuildsPbuildPnumberPzeroPnonZeroP constraintsP constraintP hyphenatedPsimplesPsimplePcaretP caretUppertildeP tildeUpper primitiveP operatorPlePgePltPgtPeqPhyphenPorPspacesPspacePparsecharPchoicePfailPgetPmanyPoneOfPoptionPsatisfyPsepByPsepBy1PsomePstringPrenderPreReleases renderBuildsboth comparing isAsciiAlphaisAsciiAlphaLowerisAsciiAlphaUpper isAsciiDigitisAsciiDigitNonZero isIdentifierjoinsafeHead $fMonadParser$fApplicativeParser$fFunctorParser$fOrdPreRelease $fOrdVersion$fEqPreRelease$fShowPreRelease $fEqBuild $fShowBuild $fEqVersion $fShowVersion $fEqOperator$fShowOperator$fEqConstraint$fShowConstraintghc-prim GHC.ClassesOrdbaseGHC.BaseNothing GHC.TypesTrueFalse